Multi-Agent Systems: When & When Not
The hype-free take on multi-agent systems: orchestrator-worker vs swarms, the coordination tax, when one well-tooled agent wins, and the anti-patterns.
Your bar: decide whether a problem actually warrants more than one agent, choose orchestrator-worker vs swarm when it does, and name the failure modes that only appear once agents must coordinate. By the end you can answer the production question every PM eventually asks: should this be a fleet of agents, or one well-tooled agent in a loop? 1
The advanced, cost-aware sequel to the AI Agents track’s single-vs-multi intro — here we add the trade-off math and the anti-patterns.
The whole skeptical case fits in four moves. Each chip is one of them:
Multi-Agent Systems
Multiple agents — each its own LLM + tools + context window — working on one goal, coordinating by passing messages or results. It’s the distributed-systems version of an agent: more throughput on parallel work, paid for with coordination.2
One agent, or many? Start from the default
When does the work justify more than one agent?
| Property of the task | Single agent | Multi-agent |
|---|---|---|
| Shape of the work | Sequential / one thread | Genuinely parallel, independent sub-tasks |
| Shared context | Sub-steps share a lot of state | Sub-tasks need little of each other’s state |
| Scale | Small enough to not amortize overhead | Large enough that the coordination tax pays back |
| What you optimize | Cost, latency, debuggability | Wall-clock throughput on parallel work |
| Honest default | Most production features | The exception you must justify |
Memory check
- What is a multi-agent system in one line? → several agents (each LLM + tools + context) on one goal, coordinating by passing messages/results
- What does adding agents actually buy you? → parallel throughput on independent work — not more intelligence
- What's the honest default? → one well-tooled agent in a loop; multi-agent is the exception you must justify
M1 — A PM wants you to “use a multi-agent system” for a feature. How do you decide whether that’s the right shape at all?
Hit these points: start from the default — one well-tooled agent in a loop is simpler, cheaper, and easier to debug, so the burden of proof is on adding agents → ask whether the work is genuinely parallel and decomposable into independent sub-tasks that don’t need each other’s intermediate state → if it’s sequential, or the sub-tasks share a lot of context, multiple agents just pay coordination tax (extra tokens, latency, failure surface) for no parallelism → if it IS parallel and the value of the result outweighs the spend, an orchestrator-worker fan-out can pay off → the rule: don’t add agents for the same reasons you wouldn’t add microservices — premature distribution buys you a distributed-systems problem you didn’t have.
Orchestration: Orchestrator-Worker vs Swarm
Two ways to wire a fleet. Orchestrator-worker: one lead decomposes, delegates, and synthesizes (scatter-gather). Swarm: peer agents, no central planner, behavior emerges. For production you almost always want the control point.3
The two patterns, side by side
What each pattern buys and costs
| Dimension | Orchestrator-worker | Swarm |
|---|---|---|
| Control | Central lead plans & integrates | None — peers act on local state |
| Predictability | High — one plan, one synthesis | Low — behavior emerges |
| Failure attribution | Clear — trace to a worker or the join | Hard — no single owner of an outcome |
| Parallelism | Bounded by the lead’s fan-out | Maximal, fully decoupled |
| Best for | Production tasks needing an audit trail | Exploration / simulation where emergence is the point |
Memory check
- What does the orchestrator own? → planning the split, delegating to workers, and synthesizing their results
- What does a swarm trade away? → predictability and failure attribution — there's no central plan or owner of the outcome
- Which is the production default? → orchestrator-worker — you want the audit trail and the synthesis step
M2 — Contrast orchestrator-worker with a swarm. When would you reach for each, and what do you give up?
Hit these points: orchestrator-worker = one lead agent decomposes the goal, fans out independent sub-tasks to workers, then synthesizes — scatter-gather, the lead owns planning and integration → swarm = many peer agents, no central planner; behavior emerges from local interactions and shared state → orchestrator-worker buys a clear control point, easier debugging, and a place to attribute failures; you pay a planning bottleneck and a single coordination point → swarm buys maximum parallelism and decoupling; you give up predictability and the ability to attribute a bad outcome to any one agent → default to orchestrator-worker for production: you almost always want the audit trail and the synthesis step more than emergent behavior.
Failure Modes & Anti-Patterns
Three failures appear only once agents must coordinate: cascading errors, context fragmentation, and cost / latency blowups. Each is a distributed-systems failure wearing an LLM costume — and each is why you bound a fleet like one.4
The three multi-agent-specific failures
Failure mode → root cause → defense
| Failure mode | Root cause | Defense |
|---|---|---|
| Cascading errors | A wrong partial is trusted and folded into the synthesis | Validate / score worker outputs at the join; reconcile, don’t blend |
| Context fragmentation | Each agent sees a slice; no one sees the whole | Decide shared vs isolated context up front; orchestrator owns the global plan |
| Cost / latency blowup | Tokens scale with agents × turns × retries; unbounded fan-out | Hard caps on agents/turns/budget; per-agent token attribution; kill switch |
| Excessive agency | Autonomous agents act with broad tool access | Least privilege, no arbitrary egress, confirmation on irreversible actions |
Memory check
- Name the three multi-agent-specific failures. → cascading errors, context fragmentation, cost/latency blowup
- What is a cascading error? → one worker's wrong partial is trusted downstream and folded into a confident wrong synthesis — fix by validating at the join
- What's the governing analogy? → don't add agents for the reasons you wouldn't add microservices — distribute only when the boundary is real and the volume pays the tax
M3 — Your multi-agent feature’s quality is unstable and the bill is 10x what you modeled. Diagnose the failure modes.
Hit these points: separate the three multi-agent-specific failures → cascading errors: a worker’s wrong intermediate result is trusted downstream and the orchestrator synthesizes confident nonsense — fix with validation at the join, not blind trust → context fragmentation: each agent sees a slice, no one sees the whole, so they duplicate work or contradict each other — fix by deciding shared vs isolated context up front → cost/latency blowup: tokens scale with agents × turns × retries; one chatty loop or a runaway fan-out multiplies spend fast (multi-agent can burn many times the tokens of a single chat turn, illustrative) — fix with hard caps on agent count, turns, and budget → measure: per-agent token attribution, a turn cap, and a kill switch; if you can’t attribute the spend, you can’t control it.
M3 — Make the explicit analogy: why is “don’t add agents for the reasons you wouldn’t add microservices” the governing rule?
Hit these points: splitting a monolith into microservices trades in-process calls for network calls — you gain independent scaling and team autonomy but inherit partial failure, serialization cost, and distributed debugging → splitting one agent into many trades in-context reasoning for message-passing — you gain parallelism but inherit coordination overhead, cascading errors, and context fragmentation → in both cases the split only pays when the boundary is real (genuinely independent work) and the volume justifies the overhead → people add both for resume-driven or demo reasons, not load reasons; the result is a distributed system with all the failure modes and none of the benefit → so the test is identical: is the work truly independent and at a scale where the coordination tax pays for itself? If not, keep it in one process / one agent.
Retrieval practice — test the three modules
Q1. Adding more agents to a system primarily gives you…
- A model that reasons more deeply because several brains debate the problem first
- Lower cost and latency since the work is now spread thin across many helpers
- Parallel throughput on independent work, paid for with coordination overhead
- Stronger safety guarantees because no single agent holds all of the context
Q2. The honest default shape for most production agent features is…
- One well-tooled agent in a tight loop, with multi-agent kept as the exception
- A swarm of specialist agents so each narrow skill has a dedicated owner
- An orchestrator with as many workers as there are sub-questions to answer
- Whichever shape the most impressive recent product demo happened to use
Q3. Compared with a swarm, orchestrator-worker mainly gives you…
- Strictly more parallelism because the lead can spawn unlimited extra workers
- Lower token cost in every case since a central lead removes all the chatter
- Emergent behavior that adapts on its own without any central planning step
- A central control point to plan, validate, and attribute failures cleanly
Q4. A worker returns a wrong partial and the lead folds it into a confident final answer. This is…
- Context fragmentation, because the worker could not see the whole problem set
- A cascading error, fixed by validating worker outputs before the synthesis step
- A cost blowup, fixed by lowering the per-call token budget for that one worker
- Excessive agency, fixed by removing the tool that the worker used to act outward
Q5. The governing rule "don't add agents for the reasons you wouldn't add microservices" means…
- Multi-agent and microservices are unrelated, so the comparison does not hold up
- Always split work into the smallest possible agents to keep each one simple to test
- Distribute only when the boundary is real and the scale repays the coordination tax
- Microservices are obsolete, so avoid both patterns in any modern system you build
Interview — pick your bar
Answer out loud in ~60s, then reveal. Core = recall · Senior = trade-offs & failure modes · Staff = synthesis under ambiguity · System Design = open design round (a different axis, not a harder level).
What is a multi-agent system, in one breath?
What is orchestrator-worker and what does the orchestrator actually own?
What is an agent swarm, and what does it trade away?
What is coordination overhead, and why is it the central anti-pattern of multi-agent?
When does a single well-tooled agent beat a fleet? Walk me through the call.
Your fan-out spawned far more workers than the task needed and the bill exploded. What happened and how do you prevent it?
Quality swings run to run and you suspect cascading errors. Diagnose and fix.
Two workers duplicated each other's work and a third contradicted both. Why, and how do you design against it?
Reason about the trade-offs across coordination cost, latency, and reliability in a multi-agent design.
A teammate wants every feature to be a swarm of specialist agents "because that's how the smartest demos work." Tear it apart as a system design.
Multi-agent demos look magical; production multi-agent often disappoints. Separate the real capability from the demo.
- Clarify scope: is the work genuinely parallel? How much shared context? What tools can act, and what's the cost of a wrong action vs a slow answer?
- State the default: one well-tooled agent in a loop — cheaper, lower-latency, one place to debug. Make the fleet justify replacing it.
- If parallel, choose the pattern: orchestrator-worker for a control point + audit trail; swarm only when emergence is the actual goal.
- Bound the blast radius: caps on concurrent agents, total turns, and per-run token budget, with a kill switch.
- Defuse the failure modes: validate at joins (cascading errors), define shared vs isolated context (fragmentation), per-agent token attribution (cost blowup).
- Safety for autonomy: least privilege on tools, no arbitrary egress, confirmation on irreversible actions — map to OWASP LLM Top 10 (excessive agency).
- Measure vs the single-agent baseline: parallel speedup against the cost multiple; if the fleet doesn't win on the metric that matters, collapse it back.