URL: https://mkdocs.justinsforge.com/memory/general/reference_fanout_orchestrator/
Fanout orchestrator¶
Forge's name for Anthropic's native multi-agent orchestration feature in Claude Code, invoked here as /fanout. Skill definition: .claude/skills/fanout/SKILL.md.
What it is¶
Anthropic's official name for this feature is "Workflow" (Dynamic Workflows): a tool that runs a JavaScript orchestration script in the background. The script defines phases and fans work out to subagents, either pipeline() (ordered, phase N's output visible to phase N+1) or parallel() (order-independent, no cross-item visibility until the barrier). Up to 16 agents concurrent, a 1000-agent lifetime cap per run, optional per-agent model override. Progress is watchable via /workflows.
Why "fanout" and not "workflow"¶
Forge already uses "workflow" constantly to mean an n8n automation graph (CT106). Adopting Anthropic's term verbatim would make the spoken word "workflow" ambiguous mid-conversation, either triggering the wrong system by name or getting misread as an n8n change. Justin approved "fanout" as forge vocabulary for this feature on 2026-07-09 specifically to resolve that collision.
Convention: say "n8n workflow" for n8n; say "fan out" / "/fanout" / "fan out agents" for this. Never launch a multi-agent run just because the bare word "workflow" appeared in an n8n-context sentence.
Decision table¶
| Tool | Shape | Lifespan | Use when |
|---|---|---|---|
Plain Task-tool subagent |
One isolated task, inline in the current session | Minutes, returns inline | One-off delegation, no cross-checking need, result feeds straight back into this conversation |
/spawn |
One full interactive Claude Code session (tmux + remote control) | Until killed, can run days | Ongoing pairing, emergent work that isn't bounded to one task list |
/execute-plan |
Sequential worker-per-task against an approved /feature-plan, with a /code-review gate per task |
One session's lifetime, resumable via ledger | Building one feature across N ordered, mostly-independent tasks |
/fanout |
Multi-phase, N-way parallel/pipelined agents against a wide, independent work-list; in-session background orchestration script | One /workflows-monitored run; 16-concurrent cap, 1000-agent lifetime cap |
Wide fan-out: audit every file in a directory, migrate N files to a new pattern, research a question from several angles and cross-check them |
/autoagent-project |
Manager + N specialists + Reporter + Quota guard as systemd timers, headless, no human in the loop | Days, survives session death | Genuinely autonomous multi-day builds Justin won't babysit |
| n8n workflow (CT106) | Declarative automation graph, event/schedule triggered, no LLM reasoning by default | Persistent infra | Recurring automations, webhooks, integrations; not an LLM-reasoning task at all |
The load-bearing distinction between /execute-plan and /fanout isn't task size or urgency, it's fan-out shape. A feature that touches 12 files but has one coherent goal and ordered dependencies is still an /execute-plan job. A task that decomposes into 12 genuinely independent, parallelizable units is a /fanout job.
Cost and scale guidance¶
- Workers default to
model: 'sonnet'in every fanout script. Reserveopusfor a coordinator/synthesis leg that needs real judgment (plan-big-execute-small: coordinator plans and synthesizes, cheap workers read and grind), and only with an explicit reason. - Default
pipeline()overparallel(). Only useparallel()when a phase's items are genuinely order-independent and synthesis doesn't need cross-item context to be coherent. - Scale gates on Justin's own language, not on task size:
| Justin's ask | Agent pool | Verify |
|---|---|---|
| Quick check / no qualifier | 3-5 agents | none, or a single spot-check |
| "thorough" / "comprehensive" | larger pool, up to the 16-concurrent cap | 3-vote adversarial verify |
- Adversarial verify (independent skeptic agents re-checking a sample of findings without seeing the primary agent's conclusion first) is the standard forge quality pattern for audit/review/research fanouts. Not optional for those shapes; skip it only for build/migration fanouts where correctness is checked by tests or a diff review instead.
- Dropped coverage (work-list items that exceeded the concurrency budget or agent cap) is always
log()-ed and surfaced in the final report, never silently truncated. - Billing: subscription quota only, same as every other Claude-powered surface in this house (
claude -punder the hood). No separate API cost axis to weigh.
Worked example: LESSONS.md debt sweep across scripts/¶
Scenario: Justin wants every script under scripts/ audited for doctrine debt (band-aids, missing idempotency, catch-and-ignore without a # Why swallowed: comment) and the findings triaged for LESSONS.md.
- Scout inline (Step 0).
ls scripts/*.sh scripts/*.py | wc -lin the current session to size the corpus (say ~140 scripts). No dispatch yet. - Author the script (Step 1). Justin didn't say "thorough," so: partition the file list into 8 chunks, one
sonnetagent per chunk inparallel()(chunks are independent, no cross-item context needed for phase 2). Each agent reads its files and returns flagged debt candidates asfile:line, rule violated, one-line justification.pipeline()phase 2: onesonnetsynthesis agent dedupes and ranks by severity. - Adversarial verify (Step 2). This is an audit, so add phase 3: 2-3 skeptic agents each independently re-check a sample of the flagged findings (without seeing the synthesis agent's severity ranking) and vote confirm/reject. Reconcile disagreements before finalizing.
- Coverage (Step 3). If
_archive/orscripts-dormant-*subfolders got excluded from the chunker on purpose,log()states that explicitly rather than the report silently looking complete. - Results (Step 4). Write the synthesized, verified findings to
comms/results/lessons-debt-sweep-scripts.md. Since triage intoLESSONS.mdis itself a follow-up decision Justin needs to make, also write/handoff lessons-debt-sweep-scriptsso a future session (or Justin directly) can pick up the entries worth logging.
Related¶
.claude/skills/fanout/SKILL.md, the skill this reference backs.claude/skills/execute-plan/SKILL.md, the sequential single-feature counterpart.claude/skills/autoagent-project/SKILL.md, the multi-day headless counterpart.claude/skills/DeepResearch/SKILL.md, single-question research; escalate to fanout when the research needs multiple independent, cross-checked angles.claude/agents/worker.md, the result-file contract every fanned-out worker follows- Parallel Agent Orchestration, a distinct, older manual pattern (the
Agenttool plus the worktree rig, a session acting as integrator over background tasks). Not the same mechanism as/fanout's native Workflow tool; that pattern has no phases/pipeline/parallel structure or agent cap, it is discipline over ad hoc backgroundAgentcalls. Reach for/fanoutfor phase-structured, capped, verifiable fan-out; reach for that pattern specifically for CreatorTrack worktree-isolated multi-branch builds.