This is a POC project to understand how agents in a multi agent environment can interact with each other.
Current implementation defines an Agent Layer which rests on top of a Multiplexer Layer. The idea is pretty simple, an agent can be registered on the multiplexer and can then send messages to all other agents on the network.
Under the hood, the multiplexer uses the following architecture.
The aggregator function is invoked which puts up the messages on the multiplexer messsage bus (async. queue) when an agent makes contact, and the scheduler function which is running constantly consumes the messages put on message bus and sends them to the agents registered on the network.
An agent can be defined and registered on the multiplexer as follows
awesome_agent = Agent("awesome_agent")
await multiplexer.register(awesome_agent)
And finally the mutiplexer is to be run
await multiplexer.run()
A sample driver code is defined in main.py
.
From a broader perspective, this environment can be evolved to use multiple P2P hosts that use Hermes package (which under the hood will use sockets to make public remote connections) to run agents.