

The first time I built a multi-agent system, I overdid it. I had eight specialised agents passing messages around for a task that one well-prompted ReAct agent could have handled in a third of the tokens. That experience taught me that multi-agent design is a tool, not a default. It is powerful when you use it deliberately, and a money pit when you reach for it because it sounds impressive.
In this article I want to share the lessons I have learned about when multi-agent systems are the right answer, what the common topologies look like in practice, how coordination actually works, and where these systems fail. I will talk about CrewAI, AutoGen, and LangGraph supervisors because those are the frameworks I see in real production code. I will also touch on debate-as-reasoning, which is one of the more interesting recent ideas to come out of safety research.
If you take one thing away from this piece, let it be this. A multi-agent system is justified when specialisation, parallelism, or oversight gives you a measurable benefit over a single agent. If you cannot point to one of those three reasons, build a single agent first.
A multi-agent system, or MAS, is any system where two or more autonomous agents work together toward a shared or overlapping goal. Each agent has its own model, prompt, tools, and decision-making loop. They exchange information through some coordination mechanism, whether that is a shared message bus, a hierarchical supervisor, or a structured debate format.
Multi-agent systems predate the LLM era by decades. Robotics, distributed computing, and game theory have all studied multi-agent coordination for a long time. The LLM revolution did not invent the field. What it did was make individual agents capable enough that orchestrating them became practical for everyday tasks.
The minimum viable MAS has two agents. One agent might gather information while another evaluates it. One might draft content while another reviews it. The simplest topologies are usually the most effective because every additional agent multiplies the surface area for things to go wrong.
I think of multi-agent systems as a kind of organisational design. Just as a company structure shapes how work flows between humans, an MAS structure shapes how work flows between agents. The choices you make about topology, communication, and authority are organisational choices, not just technical ones.
Whenever I am asked to justify a multi-agent design, I come back to three reasons. If none of these apply, a single agent is almost always cheaper, faster, and more debuggable.
Specialisation, parallelism, oversight. If a multi-agent design does not deliver at least one of these, you are paying for complexity you do not need.
In practice, most production MAS designs combine two of the three. A researcher specialises in search while a writer specialises in synthesis, and they work in parallel on different sections. That is two of the three reasons, which is usually enough to justify the design.
In a hierarchical topology, a supervisor agent delegates work to subordinate agents and integrates their results. The supervisor maintains the overall goal and decides who does what. This is the topology that maps most closely to a human organisation, and it is the one I default to for production work.
The advantages of hierarchy are coordination, clarity, and observability. The supervisor has the full picture and can adjust plans as work progresses. When something goes wrong, the supervisor is a natural place to investigate first. Logs from a hierarchical system are easy to read because the supervisor’s decisions form a clean timeline.
The downsides are the supervisor bottleneck and the cost of supervision. If the supervisor uses a strong model, you pay for it on every task. If the supervisor fails to delegate well, the whole system fails. I always design the supervisor with conservative defaults so that it can fall back to a sensible single-agent path if delegation logic breaks.
LangGraph’s supervisor pattern is a good reference implementation. CrewAI also supports hierarchical processes natively. I will return to both in later sections.
Peer to peer topologies have no central authority. Each agent communicates with the others directly and negotiates work assignments. The result emerges from the interaction rather than being directed by a supervisor.
I rarely use peer to peer in production because it is hard to predict and harder to debug. The benefits, when they appear, are flexibility and graceful degradation. An MAS without a central supervisor cannot fail by losing the supervisor. Agents can join or leave the system without breaking the workflow.
Peer to peer designs work well for genuinely open-ended tasks where the right plan is not knowable in advance. They are also useful for research settings where you want to study emergent coordination behaviour. For most enterprise use cases, the unpredictability outweighs the benefits.
If you do build a peer to peer system, invest heavily in observability. You need to know what every agent is saying to every other agent at every moment. Without that, you are flying blind.
In a debate topology, two or more agents take opposing positions on a question and argue with each other. A third agent, or sometimes the user, decides which side made the stronger case. The output is the position that survived the debate.
This topology became prominent through Anthropic’s work on debate as an oversight mechanism. The idea is that even if you cannot trust any single agent’s answer, you can trust the outcome of a debate between agents who would otherwise disagree. The adversarial structure surfaces errors and assumptions that a single agent might hide.
Debate is also useful as a pure quality improvement technique. I have used it for technical decisions where I want to stress test a recommendation. One agent argues for option A. Another argues for option B. A third reads the transcript and makes a recommendation. The result is usually more nuanced than asking a single agent for advice.
A debate between two flawed agents is often more accurate than a confident answer from either of them alone.
The cost of debate is high because you pay for every round. I cap debates at two or three rounds and find that diminishing returns kick in fast beyond that.
A blackboard architecture has all agents read from and write to a shared workspace. The workspace might be a database, a document, or a structured memory store. Agents pick up tasks based on what they see on the blackboard and contribute back to it when they have results.
Blackboard topologies are good for long-running tasks where the state needs to persist across sessions and across agents. Research projects, multi-document editing, and customer case management all fit this pattern. The blackboard becomes the system of record, and agents are stateless workers that operate on it.
The challenge is concurrency. When multiple agents write to the blackboard at the same time, you can get conflicts. The blackboard needs a locking strategy or a conflict resolution policy. Most modern implementations use append-only logs with eventual consistency, which sidesteps the locking problem at the cost of some complexity in reading.
I find blackboard designs underrated. They are not as flashy as supervisor patterns, but they scale well and degrade gracefully when individual agents fail.
Whatever topology you choose, agents need a coordination protocol. The protocol defines what messages can be exchanged, what they mean, and how to respond to them. Without a clear protocol, agents talk past each other or fall into infinite loops.
Common protocol elements include:
I always define these as structured messages with explicit schemas, not free-form natural language. Free-form messages are easier to draft but harder to parse and harder to audit. Structured messages plus a small natural language field for context gives you the best of both.
The protocol also needs to define what happens when a message is malformed or ignored. Agents that block waiting for a response forever are a common source of production incidents. Timeouts and dead letter queues belong in every MAS design.
When two agents reach different conclusions, you need a conflict resolution mechanism. The simplest is authority based. The supervisor’s decision wins. This works in hierarchical systems but does nothing for peer to peer or debate topologies.
More sophisticated mechanisms include:
| Mechanism | How it works | When to use |
| Voting | Each agent votes, majority wins | Peer to peer with odd numbers of agents |
| Confidence weighting | Each agent reports confidence, weighted average wins | Tasks with quantifiable certainty |
| Tie-breaker agent | A separate agent resolves ties | Debate and split decisions |
| Escalate to human | A person makes the call | High-stakes decisions |
I tend to layer these. Authority based for routine work, voting for moderate disputes, human escalation for high-stakes or low-confidence cases. Pure automation of conflict resolution is a place where I have learned to be conservative. When agents disagree, the disagreement itself is a signal that something might be wrong.
Debate started as a safety oversight mechanism. The idea was that humans could supervise more capable AI systems by having two AIs debate while a less capable human or AI judge picked the winner. The structured adversarial format would surface flaws in any argument that a single AI might present persuasively.
The technique has crossed over from pure safety research into practical reasoning. Anthropic’s constitutional AI work uses internal critique loops that share DNA with debate. Several production agents now use a two-agent debate as a quality gate before responses go to users. The pattern works because debate forces the model to engage with counterarguments rather than just presenting its preferred answer.
I use debate selectively. For factual questions with clear answers, it adds cost without much benefit. For judgement calls, recommendations, and contested topics, debate produces noticeably more balanced output. The trick is knowing which questions warrant the extra cost.
Debate is the most expensive form of reflection, but it catches errors that single-agent reflection misses.
If you experiment with debate, structure it. Free-form arguments wander. Give each agent a clear position, a number of rounds, and a specific judge with a defined rubric.
CrewAI is a Python framework for building multi-agent crews where each agent has a role, a goal, and a backstory. It uses an opinionated abstraction that maps well to how I think about teams. You define agents, you define tasks, and you assemble them into a crew with either a sequential or hierarchical process.
A simple CrewAI workflow looks like this in pseudo-code.
researcher = Agent(role="researcher", goal="find facts", tools=[search])
writer = Agent(role="writer", goal="produce summary", tools=[])
task1 = Task(description="research X", agent=researcher)
task2 = Task(description="write summary of X", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[task1, task2], process="sequential")
result = crew.kickoff()
CrewAI’s strength is the developer experience. The abstractions are clear and you can stand up a working crew in an afternoon. It has good tool integration, memory support, and decent observability through callbacks.
The weakness is that the opinionated abstractions can become a constraint when you want to do something unusual. If your topology does not map to sequential or hierarchical processes, you end up fighting the framework. For most use cases, this is fine. For research projects, I usually drop down to LangGraph instead.
AutoGen, originally from Microsoft Research, takes a more conversational approach to multi-agent design. Agents talk to each other through structured chat messages, and the framework manages the conversation flow. It is particularly well suited to scenarios where a human can join the conversation as another participant.
AutoGen supports a wide variety of patterns including group chat, sequential chat, nested chat, and supervised chat. The flexibility is real, but so is the learning curve. The framework gives you more knobs than CrewAI, and you need to know what to do with them.
I find AutoGen most useful for prototyping. The conversational metaphor maps well to thinking about how agents should interact, and the chat history is easy to read. For long-term production systems, I tend to migrate AutoGen prototypes to LangGraph because LangGraph offers tighter control over state and execution.
AutoGen also leads in human in the loop support. If your design requires a human participant, AutoGen makes that integration smoother than most alternatives.
LangGraph models multi-agent systems as state machines. Each node in the graph is an agent or a function, and edges define the transitions between them. State flows through the graph as a typed object, and the supervisor pattern is the canonical way to model hierarchy in LangGraph.
In the supervisor pattern, a supervisor node inspects the current state and decides which worker node to invoke next. The workers do their job, update the state, and hand control back to the supervisor. The supervisor decides whether to continue, switch workers, or terminate.
supervisor -> [researcher | writer | reviewer] -> supervisor -> END
LangGraph’s advantages are state management, replayability, and persistence. You can save the state at any point, replay execution from a checkpoint, and inspect every transition. For production systems that need durability and observability, these features are decisive.
The downside is the learning curve. LangGraph asks you to think in graphs, which is unfamiliar if you came from imperative agent code. The investment pays off, but expect a week or two of ramp up before you are productive.
Multi-agent systems fail in characteristic ways. I keep a list of the failures I have seen, because pattern matching is faster than diagnosing from scratch.
Most multi-agent failures look like organisational dysfunction in a human team. The same patterns that break a project team will break your MAS.
I treat the design of an MAS the same way I would design a small team. Clear roles, clear ownership, clear escalation paths, and explicit communication norms. The patterns are not new, they just translate from people to agents.
If you are about to build your first multi-agent system, here is the order I recommend.
The most common mistake I see is jumping straight to multi-agent when the single agent version was never tried. The single agent baseline is what justifies the added complexity. Without it, you do not know if the MAS is actually better.
The second most common mistake is starting with too many agents. Two agents are easier to design and debug than five. Add the third only when you can articulate exactly what it does that the first two cannot.
The third mistake is undervaluing observability. Without good logs and traces, an MAS becomes uninspectable in under a week. Build the telemetry as you build the agents, not after.
Multi-agent design is one of the most active research areas in agentic AI. The trends I am watching include emergent specialisation, where agents learn their roles through interaction rather than being predefined. Self-organising topologies, where the structure of the system adapts to the task. Cross-organisational coordination, where agents from different vendors and different trust boundaries cooperate on shared tasks.
The standards layer is also maturing. Protocols like MCP for tool access, A2A for agent to agent communication, and various negotiation languages are creating the substrate for genuinely interoperable systems. By 2027 I expect multi-agent designs to span across products and providers in ways that are hard today.
The economic implications are large. Multi-agent systems that work well are essentially small autonomous organisations. They can handle workflows that previously needed human coordination, which changes the labour mix in every knowledge-work function. The companies that learn to design and operate these systems well will have an outsized advantage.
The practical implication for builders is to stay close to the design patterns. The frameworks will keep evolving, but the patterns of specialisation, oversight, and coordination will remain.
Brian Jagger is an AI Architect and Software Engineer with over 15+ years of experience in generative AI, AI-first software development, and digital accessibility. As the Co-founder & CTO of TechA11y and Founder of GuardRailz, he has built innovative AI solutions for businesses, education, and enterprise clients. Brian combines deep technical expertise with a creative background in film and media, helping professionals leverage AI to build impactful, scalable solutions.
QUICK FACTS
When you can clearly articulate a benefit in specialisation, parallelism, or oversight that a single agent cannot match. If none of those apply, a single well-designed agent will be cheaper and more reliable.