A mobile agent is a piece of code that migrates from one machine to another. The code (often called the script), which is an executable program, executes at the host machine where it lands. In addition to the code, agents carry data values or procedure arguments or results that need to be transported across machines. Compared to messages that are passive, agents are active and can be viewed as messengers.
Mobile agents are convenient tools in distributed systems, at both the applications layer and the middleware level. The promise of mobile agents in bandwidth conservation or disconnected modes of operation is now well accepted. Deploying multiple mobile agents cooperating with one another can add a new dimension to distributed applications. While parallelism is the obvious advantage, the issues of load balancing, agent rendezvous, and fault tolerance play major roles. Among numerous possible applications, we highlight the following four problems, each with a different flavor of cooperation: