--- id: multi-agent title: Multi-Agent Systems code: MA subtitle: Agents, handoffs, shared state and orchestrators. Pick a pattern, vote, checkpoint and fix the known failures. hue: 290 sources: phases/16-multi-agent-and-swarms/01-why-multi-agent, phases/16-multi-agent-and-swarms/04-primitive-model, phases/16-multi-agent-and-swarms/05-supervisor-orchestrator-pattern, phases/16-multi-agent-and-swarms/06-hierarchical-architecture, phases/16-multi-agent-and-swarms/10-group-chat-speaker-selection, phases/16-multi-agent-and-swarms/11-handoffs-and-routines, phases/16-multi-agent-and-swarms/13-shared-memory-blackboard, phases/16-multi-agent-and-swarms/14-consensus-and-bft, phases/16-multi-agent-and-swarms/15-voting-debate-topology, phases/16-multi-agent-and-swarms/22-production-scaling-queues-checkpoints, phases/16-multi-agent-and-swarms/23-failure-modes-mast-groupthink, phases/16-multi-agent-and-swarms/24-evaluation-coordination-benchmarks source_hash: a1efdb13bbf6ade7 --- ## Four primitives type: architecture from: phases/16-multi-agent-and-swarms/04-primitive-model/docs/en.md, phases/16-multi-agent-and-swarms/04-primitive-model/code/main.py, phases/16-multi-agent-and-swarms/13-shared-memory-blackboard/docs/en.md, phases/16-multi-agent-and-swarms/22-production-scaling-queues-checkpoints/docs/en.md, phases/16-multi-agent-and-swarms/22-production-scaling-queues-checkpoints/code/main.py ```arch node | orch | 2,1 | Orchestrator | static, handoff, selector node | ckpt | 4,1 | CheckpointStore | thread_id, super_step node | a | 1,2 | Agent: researcher | prompt + tools node | b | 2,2 | Agent: writer | stateless node | c | 3,2 | Agent: reviewer | stateless node | pool | 2,3 | SharedState | message pool node | bb | 1,3 | Blackboard | topic pub/sub node | ver | 3,3 | Verifier | read only edge | orch | b | runs edge | orch | ckpt | each step edge | a | b | handoff edge | b | c | handoff edge | b | pool | append edge | a | bb | publish edge | pool | ver | read ``` ## Coordinate agents type: task-table from: phases/16-multi-agent-and-swarms/04-primitive-model/code/main.py, phases/16-multi-agent-and-swarms/05-supervisor-orchestrator-pattern/code/main.py, phases/16-multi-agent-and-swarms/10-group-chat-speaker-selection/code/main.py, phases/16-multi-agent-and-swarms/11-handoffs-and-routines/code/main.py, phases/16-multi-agent-and-swarms/13-shared-memory-blackboard/code/main.py | Task | Code | |---|---| | Share a message pool | `state = SharedState()` then `state.append()` | | Run a fixed order | `StaticOrchestrator().run(team, state)` | | Let the agent pick next | `HandoffOrchestrator("").run(team, state)` | | Let a selector pick next | `LLMSelectorOrchestrator("", round_robin_selector)` | | Hand off with a tool | `def transfer_to_refunds() -> "Agent": return refund_agent` | | Run a group chat | `run_groupchat(AGENTS, , max_rounds=8, label="