🧭 Multi-Agent Coordination — Swarm vs Agents vs Workflow

State of practice as of 2026-06-17 · grounded in Tavily research (Anthropic docs, Microsoft taxonomy, production field reports) · the question: why not a shitload of swarm?

⚡ TL;DR from 2026 production data: Free peer-swarm is the least reliable pattern in the wild — field reports cite a 35–55% success-rate ceiling in unconstrained environments, compounding to ~36% failure over 20-step chains, with 4s+ coordination latency. The orchestrator-worker + deterministic pipeline patterns are "what survives contact with production." What this session ran (the Workflow tool) is that production-standard pattern — not a gap.

① The five canonical topologies

🎯 Orchestrator–Worker

One coordinator fans out subtasks; workers don't talk to each other, all coordination flows through the hub.

most deployedauditable

➡️ Pipeline

Fixed sequential stages: A→B→C. Each consumes the prior. Predictable, debuggable.

deterministicKYC / review flows

🕸️ Mesh

3–8 named peers with persistent direct channels, iterating on a shared artifact. Topology fixed at design time.

peer debate~3× cost

🐝 Swarm

Many peers coordinate via shared state; topology emerges at runtime. Broad exploration, unknown solution path.

35–55% ceilinghard to control

🌲 Hierarchical

Tree of supervisors → sub-supervisors → workers. Recursive decomposition for very large tasks.

latency stacksscales

② Topology diagrams

🎯 Orchestrator–Worker (Workflow tool)
flowchart TD
  O([Orchestrator / script]):::o
  O --> W1[worker]:::w
  O --> W2[worker]:::w
  O --> W3[worker]:::w
  W1 --> O
  W2 --> O
  W3 --> O
  classDef o fill:#7c3aed,stroke:#b392f0,color:#fff
  classDef w fill:#161b22,stroke:#30363d,color:#e6edf3
      
🕸️ Mesh / Agent Teams (peer SendMessage)
flowchart LR
  A[security]:::w <--> B[ci-cd]:::w
  B <--> C[release]:::w
  C <--> A
  L([team lead]):::o --- A
  L --- B
  L --- C
  classDef o fill:#7c3aed,stroke:#b392f0,color:#fff
  classDef w fill:#161b22,stroke:#30363d,color:#e6edf3
      
🐝 Swarm (emergent, shared blackboard)
flowchart TD
  BB[(shared state)]:::bb
  S1[agent]:::w <--> BB
  S2[agent]:::w <--> BB
  S3[agent]:::w <--> BB
  S4[agent]:::w <--> BB
  S5[agent]:::w <--> BB
  classDef bb fill:#d29922,stroke:#f0c674,color:#000
  classDef w fill:#161b22,stroke:#30363d,color:#e6edf3
      
➡️ Pipeline (what merges to main looked like)
flowchart LR
  I[analyze PR]:::w --> F[fix + rebuild]:::w --> M[merge when green]:::g --> N[next tree]:::w
  classDef w fill:#161b22,stroke:#30363d,color:#e6edf3
  classDef g fill:#238636,stroke:#3fb950,color:#fff
      

③ How OrchestKit / Claude Code primitives map

PrimitiveTopologyCoordinates viaAgents talk?Default agentCostUse when
Agent tool (single)🎯 Orchestrator–Workerparent collectsNo (star)ork:* if namedlowIndependent tasks, dispatch & check later
Subagent (YAML)➡️ Pipelinelocked configNopinnedpredictableRepeatable workflows (review, tests)
Workflow tool ← this session🎯+➡️ Orchestrator + Pipelinethe JS scriptNo — return datageneric (pass agentType for ork:*)cheapDeterministic fan-out over a work-list (11 PRs → 11 readers)
Agent Teams🕸️ Mesh / 🐝 Swarmmailbox + shared task listYes (SendMessage)ork:* named~3× (every msg = round trip)Dependent tasks needing peer debate
ork:swarm-migrate🎯 Orchestrator–Workercoordinator + ledgerNoper-reposcalesSame change across N repos

④ Pick your topology

🔀 Fully independent
⛓️ Sequentially dependent
🧩 Iterate on ONE shared artifact
🗺️ Known (I can script the steps)
🌫️ Unknown (needs exploration)
🚫 No — just produce results
💬 Yes — adversarial / peer review
1–8
9–100s
⬆️ Answer the 4 questions
A recommendation will appear here — the primitive, the topology, and the cost tier.

⑤ Reliability reality check

Self-reported production success rates (unconstrained tasks, 2026 field reports). Higher control = higher reliability.

➡️ Pipeline / determ.
~90%
🎯 Orchestrator–Worker
~80%
🕸️ Mesh (3–8 peers)
~60–70%
🐝 Free swarm
35–55%

Caveat: these are directional figures from practitioner reports, not a controlled benchmark. The ordering is the robust signal, not the exact %.

⑥ Why this session looked "thin" (and why that was correct)

🔒 External serialization

GitHub merges to a shared lockfile are width-1: branch protection forces one-at-a-time. 50 agents can't merge 5 PRs to one tree at once.

🧱 Tiny sequential fixes

TS6 tsconfig, biome one-liner, mirror syncs — each smaller than the overhead of spawning+coordinating an agent for it.

⚙️ Generic-default

Workflow's agent() defaulted to generic readers, not ork:* personas — the real, fixable gap. Pass agentType:'ork:…' to wire the fleet.

✅ Right tool

11 PRs → 11 parallel readers (orchestrator-worker) + main-thread execution = the production-standard shape, not a swarm shortfall.

⑦ The honest gap worth building

OrchestKit has the personas and the team/workflow primitives — but no general goal → decompose → assign specialist → coordinate auto-router. Every fan-out is hand-designed. Coordination is either script-mediated (cheap, no peer talk) or team-mesh (peer talk, ~3× cost), with no smart selector choosing between them or wiring ork:* in by default.

Sources (2026): code.claude.com/docs/agent-teams · cloudzero.com/blog/claude-code-agents · gurusup.com (5-pattern taxonomy) · truefoundry / tensoria (framework benchmarks) · r/AI_Agents production field report (swarm ceiling).

Generated 2026-06-17 · open in any browser · self-contained (mermaid via CDN)