This page provides an overview of the Agent Tcl system.
Agent Tcl is a transportable agent system.
The transportable agents are written in the Tool Command Language (Tcl) which was created by Dr. John Ousterhout. Tcl is an embeddable scripting language that is highly portable, highly popular and freely available.
The agents migrate from machine to machine using the jump command. Execution resumes on the destination machine at the statement immediately after the jump (modifications to the Tcl core allow the capture of the complete internal state of an executing script).
In addition to migration Agent Tcl supports
Agents can send messages to each other.
Agents can establish direct connections with each other for bulk data transfer.
Agents can use Tk 4.0 to display graphical interfaces on their current machine.
C/C++ (internal release only)
Stationary agents can be written in C/C++.
Creation of new agents and cloning of existing agents
Agents can create child agents and can clone themselves.
Generic timeout and retry mechanisms
Agents can retry a command as many times as desired and can impose a timout on arbitrary Tcl code.
Any agent, message or connection request that does not come from an approved machine is ignored. The system administrator specifies the set of approved machines.
Enhanced security (internal release only)
Migrating agents are encrypted and authenticated using Pretty Good Privacy (PGP). Access restrictions are imposed on the agent based on its authenticated identity. Safe Tcl enforces the access restrictions.
Each agent on a particular machine has a unique integer id and a unique symbolic name. Agents specify a recipient agent by specifying the recipient's machine and either the recipient's integer id or the recipient's symbolic name.
An example of an Agent Tcl agent is the who agent which migrates from machine to machine and executes the UNIX who command on each machine.
Alpha release 1.2 of Agent Tcl is available for public use and can be downloaded here. This release includes all of the features listed above except for the two marked "internal release only".
Agent Tcl is far from complete. The immediate future consists of adding:
Multiple languages and transport mechanisms
The agent services provided by the system do not depend on the language of the calling agent. Any language can be added to Agent Tcl by providing state capture routines and an interface to the underlying service routines. If the language is meant for stationary agents only, the state capture routines are unncessary and the task becomes trivial. We are currently incorporating Java and are finishing the interface code that is used forstationary C/C++ agents.
The long term future consists of addressing six open research problems.
How can a programmer debug a roving agent?
A malicious entity might observe either an agent's code or an agent's behavior in order to infer information about the agent's owner. How can an agent prevent such observation?
Security problems that arise when an agent migrates through a sequence of machines
There are several related questions. For example, if an agent migrates from its home machine to machine A and then from machine A directly to machine B, how can machine B verify the identity of the agent's owner and verify that machine B did not modify the agent in a malicious way?
Keeping track of moving agents
If agent A is communicating with agent B, can agent A transparently continue communicating even if agent B migrates to a new machine? This is a lower level issue than resource discovery since we are concerned not with finding an agent that provides a desired service but rather maintaining contact with a known agent.
How can an agent determine the current state of the network and then use this information to make the most efficient use of network resources?
Can the system provide performance guarantees to agents so that the agents can meet real-time constraints?
Agent Tcl has two components.
A modified Tcl interpreter that executes the Tcl agents
A server which runs on every machine to which transportable agents can be sent. The server accepts and executes incoming agents, accepts and buffers incoming messages and connection requests, and enforces the security policies.
More information on the Agent Tcl architecture is available here and in the Agent Tcl publications.
Last Updated 1/27/97
The D'Agents Project ended in approximately 2003.
The software, and this web site, is no longer maintained.
For questions please contact