1,445% surge in multi-agent system inquiries, Q1 2024 → Q2 2025 (Gartner)
57% of enterprise agent failures traced to orchestration design, not model quality (Anthropic, 2025)
51% of professionals actively using agents in production — 78% have active plans

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.

🔬
Research basis The patterns in this guide draw on Google’s ADK documentation (Dec 2025), Anthropic’s enterprise deployment analysis (2025), the AORCHESTRA benchmark paper (arXiv:2602.03786, Feb 2026), and Drammeh’s 348-trial incident-response study (arXiv:2511.15755v2, Jan 2026). Benchmarks and statistics are cited inline.

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?”


01

Orchestrator-Worker

Also called: Hub-and-Spoke, Supervisor-Worker, Controller-Agent
Core Pattern

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.

Best when
Subtasks are known at design time and require different specializations
Latency profile
Sequential by default; 2–5s per task hop
Failure mode
Orchestrator is a single point of failure; needs its own fault handling
Framework support
LangGraph, AutoGen, CrewAI, Google ADK (native)

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.

✓
Production rule Build and test worker agents in complete isolation before constructing the orchestrator. Workers that are individually reliable make orchestration dramatically simpler. Workers that are individually unreliable make orchestration impossible.

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.

⚠
Watch for this The orchestrator is a single point of failure. If it crashes mid-task, all worker context is lost. Always implement checkpointing — LangGraph’s stateful graph does this natively. For long-running tasks, persist orchestrator state to durable storage between worker calls.
02

Sequential Pipeline

Also called: Chain, Linear Pipeline, Assembly Line
Core Pattern

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.

Best when
Steps are strictly ordered and each step depends on the previous output
Latency profile
Additive — N stages × average stage time
Failure mode
Error propagation — a bad output at stage 2 corrupts all downstream stages
Framework support
Google ADK SequentialAgent, LangChain LCEL, Prefect

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.

⛔
The hidden failure mode Error propagation is the killer. A pipeline with five stages can look healthy at stages 1–3 and deliver completely wrong output at stage 5 because a subtle error at stage 2 silently corrupted the data passed forward. Add validation schemas between stages in production — treat each handoff as an API with a contract, not a raw string pass.

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.

03

Parallel Fan-Out / Fan-In

Also called: Scatter-Gather, Map-Reduce, Fork-Join
Core Pattern

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.

Best when
Four or more independent subtasks with no data dependencies between them
Latency profile
Parallel execution → bounded by slowest agent + aggregation
Failure mode
One slow or failed agent stalls the entire fan-in; design timeout/partial-result handling
Framework support
Google ADK ParallelAgent, asyncio.gather(), Celery, Ray

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.

✓
The AORCHESTRA finding The 2026 AORCHESTRA benchmark paper (arXiv:2602.03786) modelled every subagent as a four-tuple — INSTRUCTION, CONTEXT, TOOLS, MODEL — spawned on demand by an orchestrator. Their fan-out approach delivered a +16.28% relative improvement over single-agent baselines on GAIA, SWE-Bench, and Terminal-Bench using Gemini-3-Flash. The win came from topology, not from more capable underlying models.

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
04

Evaluator-Optimizer Loop

Also called: Maker-Checker, Generator-Critic, Reflection Loop
Quality Pattern

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.

Best when
Clear evaluation criteria exist and iterative refinement improves quality meaningfully
Latency profile
Highly variable — set hard iteration caps (2–4) to bound worst-case cost
Failure mode
Infinite loops if threshold is never reached; evaluator bias creating feedback cycles
Framework support
Google ADK LoopAgent, LangGraph’s conditional edges, custom ReAct loops

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.

⚠
The infinite loop trap Always set a hard iteration cap — typically 3–5. A threshold-based exit condition without a cap creates the risk of spending hundreds of API calls on an output the evaluator will never score highly enough. Track iteration count as a first-class metric. If you’re regularly hitting the cap, your evaluation criteria or your generator instructions need recalibration.
05

Dynamic Handoff (Router)

Also called: Triage Agent, Intent Router, Skill Dispatcher
Routing Pattern

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.

Best when
The required specialist cannot be determined at design time — it depends on the input
Latency profile
Router overhead (100–500ms) + specialist latency
Failure mode
Misrouting sends the task to the wrong specialist; hard to debug without logging
Framework support
OpenAI Agents SDK (Handoffs), AutoGen (GroupChat), LangGraph

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.

ℹ
Routing confidence thresholds Add a confidence score to every routing decision. When the router’s confidence is below a threshold (say, 0.75), route to a “clarification” agent that asks the user one targeted question before proceeding. This single addition eliminates the majority of misrouting errors in production systems.

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.

06

Hierarchical Multi-Agent

Also called: Multi-Level Orchestration, Agent Team Hierarchy
Scale Pattern

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.

Best when
Problem domain genuinely splits into independent sub-domains each requiring multiple specialists
Latency profile
High — multiple orchestration hops. Use only when depth is truly required
Failure mode
Context degradation across hops; misalignment between levels accumulates
Framework support
LangGraph (nested graphs), AutoGen (nested group chats), CrewAI

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.

⛔
The complexity trap Most teams that reach for hierarchical architecture don’t actually need it. Before adding a second level of orchestration, ask: can this be handled by a well-structured Orchestrator-Worker with Router at the dispatch step? Hierarchical systems multiply token cost, latency, and debugging complexity by every level added. Treat it as a last resort for genuine scale requirements, not a default architecture.

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.

07

Human-in-the-Loop Gate

Also called: Approval Gate, Human Checkpoint, Human-Agent Collaboration
Safety Pattern

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.

Best when
Actions have irreversible consequences, regulatory requirements, or high reputational risk
Latency profile
Unbounded — determined by human response time
Failure mode
Approval bottlenecks under load; human fatigue from too many gates
Framework support
LangGraph (interrupt nodes), AutoGen (built-in HITL), Mastra

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.
✓
LangGraph interrupt() pattern LangGraph’s 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.

ℹ
The golden rule of composition Start with the simplest pattern that fits and add complexity only when the simpler approach demonstrably fails. A researcher at Princeton NLP found that a single well-configured agent matched or outperformed multi-agent systems on 64% of benchmarked tasks when given the same tools and context. Multi-agent architecture earns its complexity. Earn it deliberately.

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.

Operational complexity score (lower = simpler to operate)
Sequential Pipeline
Low
Fan-Out / Fan-In
Med
HITL Gate
Med
Orchestrator-Worker
Med
Dynamic Handoff
High
Evaluator-Optimizer
High
Hierarchical Multi-Agent
V.High

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.

Explore more AI agent architectures on Trendix.tech →

References & further reading