Multi-agent orchestration splits a hard task across specialised sub-agents (researcher, analyst, critic) that share global state but keep their internal histories local. The goal is bounded context per role — each agent sees only what it needs, which improves accuracy and token efficiency.
supervisor:
state: [question, plan, evidence, answer, risk]
agents:
researcher: retrieves chunks and graph paths
analyst: turns evidence into claims
critic: flags unsupported claims and policy risk
handoff_rule: only the supervisor mutates the final answer
stop_condition: critic finds no unsupported claims OR max_rounds == 3
The critic role is what separates multi-agent from parallel prompting. Without an agent whose job is to verify, you've just run several models at once and concatenated the results. The critic checks claims against evidence and sends the answer back for revision — that verification loop is the whole point.
Shared state beats message-passing because every node sees the full, current context without re-serialising and re-summarising it between hops (which loses information). One state object, mutated by the supervisor, keeps a single source of truth.
Bound the loop and the budget. max_rounds stops infinite researcher↔critic ping-pong, and a budget field decides which agent gets cut first under cost pressure. Coordination without stop conditions is how multi-agent systems burn money.