An agent-based system instantiates the Master-Slave Pattern: slaves are called agents and the master is a dispatcher or facilitator that creates, manages, and runs agents.
The facilitator can also provide other services to agents such as communication infrastructure, execution environment, discovery, etc.

An agent is a goal-oriented object. It perpetually attempts to update itself and its environment until its goal has been reached or until it is killed by another agent:
abstract class Agent extends Thread {
Facilitator facilitator;
abstract boolean done();
abstract void update();
void run() {
while(!done()) {
update();
yield();
}
}
}
A social agent updates itself by interacting with other agents, usually by sending and receiving messages:
void update() {
Agent other = facilitator.getPartner();
facilitator.send(other, new
Message("name?"));
Thread.sleep(1000);
Message msg = mailBox.poll();
facilitator.send(other, new
Message("hello " + msg.content));
}
Possible interactions include bargaining, mating, fighting, and playing.
Agents can share a thread, run in separate threads, or, more commonly, run in separate processes on different computers. In this last case agent-based systems can be viewed as a frameworks for peer-to-peer applications.
Agent-based systems can also serve as a framework for social networking applications, and multi-player games.
Modeling complex systems consisting of many interacting components quickly leads to unsolvable non-linear differential equations. This happens because the behavior of a component generates a wave of influence that sloshes back and forth through the system, modifying the behavior of other components (including itself) and ultimately the modifying behavior of the system as a whole. In other words, there's a kind of causality loop between the whole and its parts.
Unfortunately, complex systems are more the rule than the exception in nature-- think of markets, eco-systems, organisms, social networks, etc.
Sometimes the behavior of such systems can exhibit patterns of surprising beauty and complexity that seems quite distinct from the behavior of its components. Think of flocking birds, ant hills, and brains.
Agent-based systems can be used to model complex systems.
In agent-based models agents are dumb. They only have local knowledge—what are my neighbors doing?—and simple update procedures. But agents can also be smart.
You are a member of a highly structured software development team. Your role is chief programmer. Roles played by other team members include chief designer, librarian, tester, system administrator, and user. Your team meets on Discord at the end of each day. So as not to seem dumb you secretly use Chat GPT to formulate your responses to questions from the others. The meetings go well, and the project ultimately succeeds. Unbeknownst to you, your teammates were also using Chat GPT during the meetings. Question: what role did humans play in the project?
Systems like CrewAI allow users to create crews of role-playing agents that use large language models (LLMs) to collaborate on a set of tasks.

· Jade
· Zeus
· NetLogo
· Semantic Web Services Architecture