


7 Production Multi-Agent Design Patterns
The repeatable architectural blueprints that separate brittle demos from systems that actually work at scale — with benchmarks, code structures, and decision criteria.
2024 was the year of AI agents everywhere. 2025 proved that most of them didn’t survive contact with production. The graveyard is full of single-agent prototypes that worked perfectly in demos and collapsed under real load, real edge cases, and real business requirements.
The engineers who shipped systems that actually held up weren’t necessarily using smarter models. They were using smarter architecture. Specifically, they were reaching for a small set of repeatable multi-agent design patterns — the same way experienced software engineers reach for CQRS, event sourcing, or the saga pattern when a problem calls for it.
This guide documents seven of those patterns in production-grade depth. Not theory. Not research papers. The patterns that are running in regulated, customer-facing systems today — from legal document processing to financial intelligence pipelines to AI-powered customer support at scale.
Why single agents fail — and why architecture is the fix
A single agent tasked with too many responsibilities becomes what Google’s ADK team calls “a jack of all trades, master of none.” As the complexity of instructions scales, adherence to specific rules degrades — and error rates compound. Put 50 tools in one context window and the agent starts confusing them. Expand the task scope beyond a single domain and the agent loses coherence.
The instinct is to blame the model. The diagnosis is almost always wrong. Anthropic’s analysis of 200+ enterprise deployments found that 57% of project failures originated in orchestration design — the agents were individually capable but poorly coordinated. The wiring failed, not the components.
Multi-agent architecture addresses this with three structural advantages:
- Specialization — a focused agent with five tools consistently outperforms a general agent with fifty. Narrow the scope, raise the ceiling.
- Parallelism — some tasks decompose into independent work that can run simultaneously, cutting wall-clock time from hours to minutes.
- Redundancy and verification — a second agent checking the first’s work before output reaches production is the cheapest quality gate you’ll ever build.
The cost is real. Princeton NLP found that multi-agent systems add roughly 2.1 percentage points of accuracy at approximately double the API cost compared to a well-configured single agent. The question is never “should I use multi-agent?” — it’s “does the value justify the cost and complexity for this specific problem?”
Orchestrator-Worker
A central orchestrator receives the top-level task, decomposes it into subtasks, dispatches each subtask to a specialized worker agent, and aggregates the results. The orchestrator is the single accountability point — it knows the full goal; workers know only their slice.
How it works in practice
The orchestrator holds the goal and a reasoning loop. It inspects each worker’s output before deciding the next dispatch. This is not a simple scatter-gather — the orchestrator can adapt its plan mid-flight based on what workers return. If the Research Agent surfaces an unexpected complication, the orchestrator can spawn an additional specialist to handle it before proceeding.
Real-world application: Customer support routing
A canonical example is tiered customer support. A first-line subagent extracts ticket type and sentiment, then attempts knowledge-base resolution. An escalation subagent evaluates the outcome and routes to the right specialist (billing, tech, complaints). A handoff subagent packages context for any human takeover. The orchestrator holds state across the full customer session and decides at each stage whether resolution has been achieved or escalation is required.
Drammeh’s 2026 incident-response study — 348 controlled trials — found that this orchestrator pattern produced a 100% actionable recommendation rate compared to 1.7% for single-agent systems, with 80× greater action specificity and 140× improvement in solution correctness.
Sequential Pipeline
Each agent in the chain receives the full output of the previous agent, transforms it according to its specialty, and passes the result forward. The order is fixed at design time. No branching, no parallel lanes — pure linear transformation.
The document processing template
Google’s ADK team describes the canonical pipeline example: a Parser Agent turns a raw PDF into clean text; an Extractor Agent pulls structured data from that text; a Summarizer Agent generates the final synopsis. Each step is focused, testable, and replaceable independently of the others. When the Extractor changes (because a new document type arrives), the Parser and Summarizer need not change at all.
The legal tech application is nearly identical: a Template Selection Agent identifies the appropriate base contract from client specifications; a Clause Customisation Agent modifies standard terms; a Regulatory Compliance Agent reviews against applicable law; a Risk Assessment Agent produces a liability rating and protective language recommendations.
Latency math you need to do before committing to pipeline
A five-stage pipeline where each stage takes 2 seconds adds a minimum of 10 seconds of end-to-end latency. For batch processing jobs that run overnight, this is fine. For a customer-facing feature that has to feel real-time, this is a UX catastrophe. If your latency budget is under 3 seconds, pipelines with more than two stages are almost certainly the wrong pattern. Consider Fan-Out (Pattern 3) for parallelisable components or a single carefully-scoped agent.
Parallel Fan-Out / Fan-In
A dispatcher fans the task out to multiple agents working in parallel on independent subtasks. When all complete, an aggregator fans the results back in and synthesises a unified output. Wall-clock time collapses from N×T to approximately T (the time of the slowest agent) plus aggregation overhead.
The market intelligence pipeline
Consider competitive intelligence: four parallel collection agents — a news scraper, a financial data agent, a social sentiment analyser, and a competitor website monitor — all run simultaneously. After a timeout window, an Analysis Agent receives all four summaries and identifies cross-source trends. A Report Agent drafts the executive summary. What would take 8–10 minutes sequentially takes under 90 seconds in a well-tuned fan-out. Anthropic’s own research multi-agent system uses exactly this topology for parallel research subqueries.
Designing for partial failure
Never design a fan-in that blocks indefinitely. In production, one of your parallel agents will occasionally time out, hit a rate limit, or return an error. Your aggregator must handle partial results gracefully: define a minimum threshold of successful agent completions required before proceeding, and have a defined behaviour for missing inputs (use last known value, use empty slot, abort with informative error).
import asyncioasync def fan_out_with_timeout(agents, task, timeout=30): tasks = [asyncio.create_task(agent.run(task)) for agent in agents] results = await asyncio.gather( *[asyncio.wait_for(t, timeout=timeout) for t in tasks], return_exceptions=True # don't let one failure kill the rest ) # Separate successes from failures valid = [r for r in results if not isinstance(r, Exception)] if len(valid) < MIN_REQUIRED: raise InsufficientResultsError(f"{len(valid)}/{len(agents)} agents succeeded") return valid
Evaluator-Optimizer Loop
A Generator Agent produces an initial output. An Evaluator Agent — typically using a separate model or a defined rubric — scores that output and generates structured feedback. The feedback is passed back to the Generator, which produces a revised version. The loop continues until the output clears a quality threshold or an iteration cap is hit.
Where this pattern earns its cost
Literary translation is the textbook example: the first attempt captures the plot but misses emotional register. The evaluator flags specific passages with structured feedback — “the original irony is lost in line 3, idiomatic expression in line 7 is too literal.” The generator incorporates that feedback in its next pass. Two cycles of this produces a translation that would have required three human review rounds to achieve otherwise.
DoorDash’s production grocery assistant (MAGIC) uses a trajectory-aware evaluator system called MAMUT-GEPA that optimises prompts across agents using multi-turn simulation and trajectory-level scoring. Their evaluator-optimizer pattern demonstrated measurable quality improvements over local sub-agent optimisation alone, with the gains compounding across the full conversation arc rather than plateauing at individual turn level.
Dynamic Handoff (Router)
A router agent classifies incoming requests and dispatches them to the most appropriate specialist — without the caller needing to know which specialist exists or what they handle. Routing can be rule-based, intent-classification-based, or handled by an LLM reasoning over available agents and the current context.
The multi-domain support case
A user contacts support without knowing or caring whether their issue is a billing question, a technical fault, or a compliance matter. A router agent classifies the intent from the first message and dispatches to the appropriate domain specialist. The billing agent has access to payment systems; the technical agent has access to infrastructure logs; the compliance agent has access to regulatory documents. No single specialist needs knowledge of the others’ domains.
The OpenAI Agents SDK implements this natively through its Handoffs primitive. The router makes a handoff decision, and the receiving agent gets the full conversation context plus any metadata the router attaches. Microsoft’s AI agent design patterns guide specifically recommends this pattern when the domain is unpredictable — and recommends starting centralised (with one router making all decisions) and decentralising only when concrete bottlenecks emerge.
When dynamic handoff beats orchestrator-worker
The key distinction is predictability of subtask structure. If you know at design time which specialists will be needed and in what order, use an Orchestrator-Worker. If the required specialist only becomes clear from the content of the request, use Dynamic Handoff. In real systems, these often compose: an orchestrator dispatches to a router for the domain-classification step, then coordinates the specialist output with other agents.
Hierarchical Multi-Agent
A top-level orchestrator manages sub-orchestrators, each of which manages its own team of specialist workers. Responsibility and context propagate downward; results aggregate upward. The pattern mirrors the organisational structure of effective engineering teams — a principal engineer delegates to team leads who delegate to individual contributors.
The complexity ceiling
This pattern exists because some problems genuinely cannot be solved by a single orchestration layer. An enterprise knowledge management system might have a top-level orchestrator that splits work between an Ingestion Sub-Orchestrator (which manages chunking, embedding, and indexing agents) and a Retrieval Sub-Orchestrator (which manages query expansion, ranking, and reranking agents), each with distinct tool sets and failure modes.
Context degradation across hops
The deepest practical problem with hierarchical architecture is context fidelity. A goal defined at the top level must be communicated accurately through two or more orchestration layers before it reaches the workers who actually act on it. Every hop is an opportunity for context to be summarised, rephrased, or subtly misrepresented. In production, pass structured context objects — not natural language summaries — between orchestration levels. Define explicit schemas for what each level passes down and receives back.
AdaptOrch’s 2026 benchmark (arXiv:2602.16873) reported 12–23% performance improvements over static single-topology baselines using identical underlying models — but these gains came entirely from intelligent topology routing at each level, not from the hierarchy itself. A flat system with smart routing matched hierarchical performance in most test cases. The message: when topology selection is the goal, routing beats hierarchy.
Human-in-the-Loop Gate
At one or more defined checkpoints, the system pauses automated execution and routes a decision, a draft, or an action proposal to a human for review and approval. The human’s input — approval, rejection, or modification — is injected back into the agent workflow before execution continues. The system is not fully autonomous; it is augmented autonomy with structured human oversight.
Where automation ends and judgement begins
Ally Tech Labs, deploying LangGraph for customer-facing AI, built exactly this: AI agents draft responses, which are routed to human reviewers before going live. The system improves over time through continuous evaluation of human edits — the reviewer’s corrections become training signal. What begins as a fully-supervised workflow gradually requires fewer corrections as the agents calibrate to human preferences, but the gate remains. The human is not a bottleneck; the human is the quality control layer.
Calibrating gate placement
Too many gates create review fatigue — humans begin rubber-stamping rather than genuinely evaluating. Too few gates miss critical intervention points. The discipline is identifying which decisions are actually high-stakes. A simple decision heuristic: if the agent’s action would be irreversible within 24 hours, it requires a gate. If it can be corrected or reverted easily, it may not.
- Always gate — actions that modify production data, trigger financial transactions, send external communications, or create legal commitments.
- Often gate — content that will be published publicly, plans with significant resource implications, escalations that affect customer relationships.
- Rarely gate — internal analysis, draft generation, data retrieval, classification tasks.
interrupt() node is the cleanest production implementation of HITL: the graph execution suspends, persists its full state, and waits for the Command(resume=...) signal from the human interface. State is preserved across an arbitrary gap — the human can take minutes, hours, or days, and the workflow picks up exactly where it left off. No bespoke state management required. Composing patterns in production
The seven patterns described above are not mutually exclusive — they are composable architectural primitives. Production systems routinely combine two or three. The art is knowing which combinations make structural sense and which ones compound complexity without adding value.
Orchestrator + Fan-Out
Orchestrator decomposes the task, dispatches independent subtasks in parallel, then synthesises results. Combines accountability with latency efficiency.
Pipeline + Evaluator-Optimizer
Each pipeline stage includes a quality loop. Produces the highest-quality outputs but at significant cost. Use only where output quality is the primary constraint.
Hierarchical + Router
Each orchestration level uses a router to dispatch work to the appropriate child agent. Reduces misrouting errors at each level, especially when specialist domains vary by input type.
Any pattern + HITL Gate
HITL is an overlay, not a standalone pattern. Add gates to any workflow at the decision points with irreversible or high-stakes actions.
Fan-Out + Evaluator
Multiple agents generate candidate solutions in parallel; a single evaluator selects the best or synthesises across all. Trading cost for quality and diversity of approaches.
Router + Pipeline
Router classifies the request and selects the appropriate processing pipeline. Effective when domain-specific processing chains are well-defined but domain cannot be pre-determined.
Performance benchmarks across patterns
The following complexity and suitability scores are derived from the patterns’ documented production characteristics, latency profiles, and operational overhead as reported in the 2025–2026 research literature. They are relative scores, not absolute measures.
The decision matrix: which pattern to use when
| Pattern | Use when | Avoid when | First framework to try |
|---|---|---|---|
| Orchestrator-Worker | Subtasks are known, require different specialisations, single accountability is important | Tasks are truly sequential with data dependencies between steps | LangGraph, Google ADK |
| Sequential Pipeline | Strict step order, each step transforms the previous output, stages are independently replaceable | Any parallelism is possible; latency budget is tight | Google ADK SequentialAgent |
| Parallel Fan-Out | Four or more independent subtasks; latency is the primary constraint | Tasks have data dependencies between them; aggregation logic is complex | asyncio.gather(), Ray, ADK ParallelAgent |
| Evaluator-Optimizer | Clear evaluation criteria; output quality is primary; cost is secondary | Evaluation criteria are vague; speed is critical; API budget is tight | LangGraph conditional edges |
| Dynamic Handoff | Required specialist depends on input content; multiple disjoint domains | Domain is always predictable from structure of request | OpenAI Agents SDK (Handoffs) |
| Hierarchical | Genuine sub-domain independence; scale beyond what single orchestrator can manage | Almost always — most teams don’t need this; use Orchestrator-Worker with Router first | LangGraph nested graphs |
| HITL Gate | Irreversible actions; regulatory compliance; high reputational risk | Actions are easily reversible; throughput requirements exceed human review capacity | LangGraph interrupt(), AutoGen |
Conclusion: Architecture is the leverage point
The gap between AI demos and AI products has never been primarily a model quality gap. The models are capable. The gap is architectural. It is the absence of patterns that handle specialisation, parallelism, quality verification, intelligent routing, and human oversight in a principled way.
The seven patterns in this guide cover the vast majority of production agentic use cases. Most production systems need two or three of them, composed deliberately. The skill is knowing which problem each pattern solves — and reaching for it at the right moment rather than by default.
Start with the simplest pattern that fits. Test worker agents in isolation before wiring them together. Instrument every agent call as if you’ll need to debug it at 2am. And remember that the orchestration layer is where most enterprise agent projects succeed or fail — treat it with the engineering rigour it deserves.
References & further reading
- Google Developers Blog: Developer’s Guide to Multi-Agent Patterns in ADK (Dec 2025)
- Anthropic: Enterprise Agent Deployment Patterns — analysis of 200+ enterprise deployments (2025)
- arXiv:2602.03786 — AORCHESTRA: Adaptive Orchestration for Multi-Agent Systems (Feb 2026)
- arXiv:2602.16873 — AdaptOrch: Topology Routing for Agentic Systems (Feb 2026)
- arXiv:2511.15755v2 — Drammeh: Multi-Agent Incident Response — 348 controlled trials (Jan 2026)
- arXiv:2603.03565 — Build, Judge, Optimize: DoorDash MAGIC production blueprint (2026)
- InfoQ: Google’s Eight Essential Multi-Agent Design Patterns (Jan 2026)
- Sitepoint: The Definitive Guide to Agentic Design Patterns in 2026
Human-in-the-Loop AI: The Complete Production Implementation Guide
AI Agents & Multi-Agent Systems: Everything Changes This Year
AI Agents & Multi-Agent Systems: The Definitive 2026 Guide
LangGraph vs CrewAI vs OpenAI Agents SDK vs AutoGen (2026): The Definitive Comparison
Building Your First Production LangGraph Agent – Step-by-Step Tutorial
AI Agent Framework Selection Scorecard
Research Design Fundamentals: A Practical Framework
