Fan out cheap workers while your main agent leads
Updated August 10, 2026
Goal: stop babysitting five agents in five tabs. Talk to one manager that runs the other five.
What you need
- Claude Code, in any shard.
/fanoutis installed for you at~/.claude/commands/fanout.md, so there’s no setup. - A Guild membership. Fanout spawns, merges, and approves on your behalf, so it leans on the CLI’s control commands.
- Optionally an open model if you want the mechanical work run on cheaper models.
Steps
-
Give it the list. One line, freeform, semicolons are fine:
/fanout fix the login bug in webapp; add tests to the api; update the changelog in docsThe manager matches each task to an open gem by name, opens one if none is open, and asks you when it’s genuinely ambiguous.
-
Set the posture in plain language if the default doesn’t suit you. Workers run in smart approval mode by default, so safe read-only operations auto-approve and anything risky comes up to you. Say “full auto”, “ask before anything destructive”, or “report only, don’t merge” in the same message.
-
Point the cheap work somewhere cheap. Workers don’t all have to be on the frontier API. Tell the manager to run the mechanical tasks against a slot you configured, and keep the thinking with a stronger model. One self-hosted connection is one machine, so keep it to a worker or two there. A hosted open model doesn’t have that limit.
-
Check the room before a big fan-out.
crystl statusreports the app’s memory and system pressure plus each shard’s resident memory. Keep noisy workers light withcrystl shard create --scrollback 500, or free a buffer afterwards withcrystl scrollback clear. -
Answer only what comes to you. You hear from the manager when a worker asks a question it can’t answer from your task list, or when something risky needs a human.
What you’ll see when it works
Workers appear as shards, each briefed with its task. Two or more tasks on the same project each run in their own isolated git worktree, so their live edits don’t overwrite one another. When a worker finishes, the manager merges its branch back; if branches touched the same lines, it surfaces the conflict instead of shipping a broken file. At the end you get a per-worker summary: what got done, what merged, what was blocked, what’s left for you.
Quiet is not done. A worker can stall on its agent’s own in-terminal approval prompt. crystl flags that in crystl shards and crystl status as ⏸ awaiting input, and the manager checks for it before calling a task finished.
Go deeper
- fanout for the full loop, the escalation rules, and how it’s built.
- isolated sessions for the worktree machinery underneath.
- Fanning out onto your own hardware for the local hardware arithmetic.
- Review and merge a worker’s branch safely when you’d rather integrate by hand.