Third, agent facilities[JJS$^$97,JvRS95] can be used for executing and controlling tasks in a distributed system. When refering to an agent, we mean a program that exhibits a unique interface for any kind of task that it performs autonomously on behalf of the user. It is capable of reacting to changes in the execution environment[CDK94, pp. 165] into which it has been embedded (generalised from definitions found in [GK94,WJ95] and [GKN$^$96]). The agents are embedded in an execution environment that offers runtime support including services for creation, control and interaction with the user[CGH$^$97]. It is able to do this because all agents exhibit the same interface. Some environments define a specific agent communication language[FFMM94], some even allow agents to travel from one computing node to another[KGN$^$97]. The latter approach is also known as mobile agent facility. As agents act autonomously they are suitable for disconnected, i.e. unsupervised operations. They interact with local agent environments on the cluster nodes and thus leave information that can be retrieved from these places later[JvRS94]. Their encapsulation into a standardised interface allows an extension of the application system with any kind of functionality. The possibility to have a library of agents that can be registered with the execution environment[CGH$^$95] facilitates the creation of locally and remotely controlled software[JR98]. The interface and basic control commands can be learned quickly. It is sufficient to see how an agent is programmed once. Further agents will follow the pattern. Each agent has a set of properties that can be associated with its task[Gro97b]. These properties can be stored with a database management system. A user asking for a specific task can query the properties and the best matching agent can then be selected. This approach is similar to the CORBA trading service[Gro98a, chapter 16]. As the interface for agents is clean and narrow it is not difficult to implement it. It is thus possible to have an ordinary application run in a distributed system under the control of the agent execution environment. Unfortunately agent systems are not directly applicable to our problem domain. In addition to the overhead that stems from the need to transfer and manage the agentsī state information[CGH$^$95,CHK97], control of single agents at any point in time becomes a critical task: either they move around in the system or they are cloned and commands are only applicable to the whole set, but not to the individual agent copy. Synchronisation of the copies can become an issue, especially if the agent communication lanaguage or the execution environment are not initially targeted at scalable clusters and does not deal with faulty nodes.