In our proposal, the functionality provided by an interagent will highly depend on the role played by the agent interacting with it. Thus we distinguish two distinct roles for agents making use of interagents: i) the user of an interagent regards it as the sole and exclusive means through which it can interact with the agent society thanks to the set of communication and coordination services provided by the interagent, but previously defined by the owner; ii) the owner of an interagent is provided with a wide range of facilities to either load or program into the interagent the communication and coordination services that the user is allowed to employ. Needless to say, an agent can possibly play both roles at the same time.
Interagents --like KQML facilitators [Patil et al., 1992]-- are inspired by the efficient secretary metaphor already introduced in the Actors model of concurrent computation. Interagents --unlike KQML routers-- offer the coordination level required by agents to cooperate in non-trivial ways. Basically, an interagent is a component which supports a dynamically programmable level of interaction.
We have developed JIM, a general-purpose interagent that provides agents with a highly versatile range of programmable --before and during the agent's run-time-- communication and coordination services.