Multi-Agent Architecture
A multi-agent system is one parent agent with a list of sub-agents and a strategy that decides how they run. The strategy is a single field. Everything else — durability, retries, visibility of each delegation — comes from Conductor compiling the whole thing into a workflow.
support = Agent(
name="support_supervisor",
model="openai/gpt-4o-mini",
instructions="Route each request to the right specialist.",
agents=[billing, technical, sales],
strategy=Strategy.HANDOFF,
)
Choosing a strategy
The dividing question is who decides: the model, the graph, or you.
| Strategy | Who decides | Runs | Reach for it when |
|---|---|---|---|
handoff |
Model | One sub-agent, conversationally | A specialist should take over the conversation |
router |
Model | One sub-agent, no conversation | You just need classification and dispatch |
sequential |
Graph | All, in order | Each step builds on the previous output |
parallel |
Graph | All, at once | Independent opinions you want to compare |
swarm |
Sub-agents | Until one finishes | Agents should pass control between themselves |
round_robin |
Graph | Next in rotation | Spreading load or alternating reviewers |
random |
Graph | One at random | A/B comparison between agent versions |
plan_execute |
Model, then graph | A planned sequence, replanned as it goes | The steps aren't knowable up front |
manual |
You, in code | Whatever you select | Routing is a business rule, not a judgement call |
Two practical notes. router is cheaper than handoff — it classifies and dispatches without handing over the conversation, so use it when there's nothing to converse about. And plan_execute is the only strategy that replans; the others commit to their dispatch decision.
The shapes
handoff and router. Sub-agents are exposed to the parent's model as callable tools.
sequential and parallel. The model isn't consulted about ordering.
swarm. Control passes between sub-agents until one produces a final answer.
What Conductor adds
- Each delegation is its own execution. A specialist can retry without re-running the routing decision.
- The choice is recorded. Which sub-agent ran, and why, is in the execution — not just in a log line.
- Sub-agents keep their own tools and guardrails, so a billing agent can't reach fulfilment tools.
- Parallel means actually parallel.
paralleland fan-out compile toFORK_JOIN, not a loop.
Runnable examples in every SDK
Every strategy below is verified against main in all four SDKs.
round_robin has no dedicated example yet; it takes the same shape as random, swapping the strategy value.
Next steps
- Multi-agent handoff recipe — a runnable supervisor with three specialists
- Massively parallel agents — fan out to 100 sub-agents
- Agent Configuration — what else you can set on an agent