[Someone want to explain what agents are in the software domain?]

See intelligent agents.

DKF - Agents are pieces of software that act on behalf of something else like a user or another agent. Mind you, the term usually feels fairly null to me: "We want to jazz this extremely boring piece of software up for when we do the presentation to the MD, so let's call it a User Somnolence Agent!"

So for instance, if you have a cron job which gathers web pages up and formats them for you to read in the morning, that would count as an 'agent'?

NEM: No. Usually an agent has to make decisions autonomously. A cron job doesn't decide to fetch web-pages. Of course, defining precisely what it means to make a decision is another question -- one which ultimately involves philosophical notions of free will etc. One attempt would be that an agent is only given goals rather than specific courses of action to achieve, but this is problematic as some agent architecture (e.g., Rodney Brooks' subsumption architecture for robots) reject explicit representations of goals and beliefs. (Also, what is the cut-off between specifying a goal and an action? See declarative programming vs imperative programming for related discussion). Perhaps the best explanation is to see it in terms of Daniel Dennett's Intentional Stance, where it is not the implementation of the software (or other thing) which determines whether it is an agent, but rather how we choose to see it. We don't gain anything from describing a cron job in terms of goals and beliefs, but describing a complex set of interacting processes in this way may be an effective abstraction. So, an agent would then be a process whose observable behaviour is effectively explained in terms of goals, beliefs and other mental states.

See for a newsletter which summarizes on a regular basis various internet references to agent technologies.