Agent Architecture/Workflow Patterns
Advanced20 min

Orchestrator-Worker: Plan, Delegate, Synthesize

The Orchestrator-Worker pattern parallelizes complex tasks by having one LLM plan the decomposition, multiple workers execute in parallel, and the orchestrator synthesize the results. This article covers when it actually earns its 4× cost premium, how to validate plan quality before spending on workers, production hardening, and how to run an A/B eval against a single-agent baseline.

Quick Reference

  • Minimum cost: N+2 LLM calls (1 plan + N workers + 1 synthesis) — verify the quality premium justifies it
  • Plan quality is the single point of failure: validate count (3–7), overlap, and coverage before fan-out
  • Send API dynamically creates worker instances at runtime; workers get a state copy, not a reference
  • Workers write results to shared state via operator.add reducer — the fan-out/fan-in pattern
  • Use try/except in every worker; return status-tagged error results instead of crashing the graph
  • Run an A/B eval against a single-agent baseline before committing — the pattern must earn its cost
  • Monitor plan decomposition distribution, worker P95 latency, and partial failure rate in production

Should I Use Orchestrator-Worker?

OrchestratorPlans subtasksSend APIWorker AResearchWorker BAnalysisWorker CCodingoperator.addOrchestratorSynthesizes resultsFinal output

Orchestrator plans → Send API fans out to workers → reducer collects → orchestrator synthesizes

What it is

The Orchestrator-Worker pattern is a two-phase approach: (1) an orchestrator LLM analyzes the task and creates a plan of subtasks, then (2) worker agents execute each subtask in parallel via LangGraph's Send API. The orchestrator collects all results and synthesizes a final output. Use it when work is genuinely decomposable into independent parallel subtasks — and when the quality improvement justifies the cost.

Check the cost math first

A 5-worker research task requires 7 LLM calls minimum (1 plan + 5 workers + 1 synthesis). With claude-sonnet-4-6 pricing, that costs roughly 4× a single-agent call on the same task. The pattern earns its keep when: (1) subtasks are genuinely independent, (2) parallelism meaningfully reduces wall-clock time, and (3) the quality improvement is measurable. If a single agent with a detailed prompt gets within 10% quality, use it instead.

SituationWhy orchestrator-worker fails to earn its keepUse instead
Fewer than 3 subtasksOverhead of planning + synthesis exceeds parallelism benefitSingle agent or prompt chaining
Subtasks are sequential (step 3 needs step 2's output)Workers can't run in parallel — they'd block each otherPlan-and-Execute
Simple classification or dispatchOne-hop routing, no synthesis neededRouter pattern
Iterative refinement neededWorkers don't self-correctReAct or Evaluator-Optimizer
All subtasks are identical operationsNo specialization benefit, just fan-outParallelization pattern
Task is exploratory (unknown decomposition)Planner can't produce a valid plan upfrontReAct with subgraph workers
Is the task decomposable intoindependent subtasks?NoPrompt Chainingor Plan-and-ExecuteYesAre there 3 or moreindependent subtasks?NoSingle Agentoverhead exceeds benefitYesDo subtasks need differenttools, models, or prompts?NoParallelizationhomogeneous workersYesOrchestrator-Workerheterogeneous parallel workerssingle dispatchRouterone-hop delegation

Orchestrator-Worker is justified only when tasks are decomposable, plural, and heterogeneous

AspectRouterSupervisorOrchestrator-WorkerPlan-and-Execute
LLM calls2 (classify + worker)Iterative (N rounds)N+2 (plan + workers + synth)Sequential (plan steps)
CoordinationOne-hop dispatchIterative delegationUpfront plan → parallelStep-by-step execution
Subtask count1 (the routed task)Variable3–7 parallel1 per step, sequential
Latency shapeLow, predictableUnboundedWorkers in parallelBounded, sequential
Failure modeWrong routeInfinite loopBad plan or partial failureEarly step blocks chain
Best forDispatch by typeComplex multi-turnParallel decompositionOrdered multi-step