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. /fanout is 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

  1. 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 docs

    The manager matches each task to an open gem by name, opens one if none is open, and asks you when it’s genuinely ambiguous.

  2. 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.

  3. 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.

  4. Check the room before a big fan-out. crystl status reports the app’s memory and system pressure plus each shard’s resident memory. Keep noisy workers light with crystl shard create --scrollback 500, or free a buffer afterwards with crystl scrollback clear.

  5. 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