AgentHerder · Course · Week 2
Week 1 was the mental shift. This week is the substrate: the small set of tools that make 10+ parallel sessions sustainable across a full working day without manual tab-juggling collapsing under its own weight.
Four things to install and learn the muscle memory for: cctabs (the per-tab session manager), worktrees (parallel directories for parallel work), the foreground / background stream model (how to think about a 10-tab fleet), and quota management (how to be efficient with Anthropic capacity and where to fall back to local models when you hit a wall).
Tooling without the mental shift produces an engineer with 10 tabs open and brain-fry within an hour. The mental shift without tooling produces an engineer who knows what they should be doing but can't keep track of which tab is which by 4 PM.
Week 1's identity work needs Week 2's mechanics to be sustainable. The mechanics are small and learnable in days — the whole reason Week 1 is six times the weight of Week 2 is that the adoption of the mechanics depends entirely on the mental shift having landed first.
If you find yourself this week thinking "this is just installing some CLI tools," you're correct, and the practice is still about the discipline of how you use them. Tab-renaming as a habit. Worktree-creation as a reflex. Knowing when an agent has cooked long enough to bring forward versus when it's stuck and needs intervention. The tools are simple; the habits around them are what flying-stage looks like.
cctabs is the per-tab Claude Code session manager built specifically for fleet practice. The job it does, that nothing else does in one piece:
cctabs restore walks every dead tab from your last session and re-attaches Claude to it. The fleet you had open Friday evening is the fleet you walk back into Monday morning.cctabs fork <session> opens a new tab with the same session history, then lets the two diverge. The cheap way to explore an alternative direction without losing the original.npm install -g @generativereality/cctabscctabs supports Wave Terminal (works out of the box) and Tabby (requires a one-time companion plugin install). Wave is the recommended default for new users — fewer moving parts. Tabby is supported for engineers who already use it.
On Wave: just run cctabs new <name> and a new tab opens with a fresh Claude Code session in the current directory.
On Tabby: cctabs install-tabby-plugin --yes does the npm install and the restart in one shot, then your next cctabs new works. Plan to lose any other open Tabby tabs in the restart.
This is the part that matters more than the tool itself. Name every tab the moment it's spawned, and rename when its job changes. The names are how you (and your sibling Claude sessions) keep track of what's where.
Good names:
auth-rate-limit-fix (specific to a work-stream)cctabs-docs-rewrite (specific to a deliverable)staging-smoke (specific to a fleet role)Bad names:
claude (default, undifferentiated)tab-7 (positional, breaks when you reorder)misc-stuff (signal-free)If you can't think of a name for a tab, that's usually a sign that the tab doesn't have a clear-enough job. Either tighten the brief or close the tab.
cctabs sessions # list all tabs + their Claude session status
cctabs new <name> [dir] # spawn a new tab, optionally in a specific repo
cctabs rename <id> <new> # rename a tab (and the Claude session)
cctabs fork <name> # fork a session into a new tab
cctabs close <name> # close a tab
cctabs restore # after reboot, re-attach Claude to every dead tab
cctabs send <name> <text> # send input to another tab (for orchestration)
cctabs scrollback <name> # read another tab's terminal outputFull docs at cctabs.com.
Worktrees are the git feature that lets a single repo have multiple working directories, each on a different branch, all sharing the same .git folder. They are not new; they predate fleet practice by years. But almost nobody used them at any scale before parallel Claude sessions made them load-bearing.
The why: parallel work-streams need parallel directories. When tab A is on branch auth-fix and tab B is on branch migration-v3, they can't both be in the same directory — checking out one branch evicts the other. Trying to share a directory between parallel streams produces dropped uncommitted changes, broken dev servers, and confused agents.
The how: git worktree add <path> <branch>. The worktree lives at the path you specify (often a sibling directory or under .worktrees/). Each tab gets its own. When you're done with the work, git worktree remove <path>.
Claude Code has first-class worktree support: claude --worktree <name> creates one under .claude/worktrees/<name>/ automatically and cleans it up when the session exits. cctabs's --worktree flag does the same when spawning a new tab.
cctabs new auth-fix ~/Dev/myapp --worktree
# Creates .claude/worktrees/auth-fix/ inside ~/Dev/myapp
# Branches it off main automaticallyWorktrees branched with --worktree branch from whatever your remote-tracking branch points at — not always from your current HEAD. If you have local un-pushed commits on the main checkout, a fresh worktree may branch from the older remote tip and miss those commits. After spawning, verify:
git -C ~/Dev/myapp/.claude/worktrees/auth-fix log --oneline -1If the base isn't what you expected, push your main commits first, then re-spawn the worktree.
Per Session 1 notes: "you don't really understand worktrees until you try them." Schedule a few hours this week for that.
At any moment, your fleet has two classes of stream:
Foreground (1–3 streams):
Background (the rest of the fleet):
The mental model: foreground streams have your attention. Background streams have your trust. You set them up with a clear brief, you let them run, you check in.
Every 15–30 minutes (more often if you have a hot stream needing close attention), you scan the fleet:
cctabs sessionsLook for: which sessions are blocked waiting on you, which sessions completed their work since the last scan, which sessions have been "active" for an hour without visible progress (a sign the agent is stuck in a loop). Bring blocked or completed ones forward to triage. Leave the still-cooking ones alone.
When you bring a stream forward, you do one of four things:
cctabs close and reclaim the mental slot.The discipline: don't context-switch deliberately between streams. Scan, triage what surfaces, let the rest cook. Trying to give attention round-robin to all 10 streams in turn is brain-fry territory. Trust the brief.
The hard ceiling on fleet practice today isn't capability — it's quota. Claude Code on Pro/Max plans gives generous but finite tokens-per-5-hour windows. Run 10+ sessions hard for a couple hours and you can hit the window cap mid-afternoon.
The expensive operations: long context reads, repeated full-repo greps, large diffs, redundant tool calls. The cheap operations: targeted file reads, focused exchanges, small surgical changes.
Practices that conserve quota at high parallelism:
When you hit the quota window cap, you have three options:
cctabs ships with backend presets that route a Claude Code session to alternative model providers via a --backend flag:
cctabs new exploratory-refactor ~/Dev/myapp -b kimi --worktree
# Spawns a Claude Code session against Kimi K2 via Ollama Cloud Pro tierBuilt-in backends (run cctabs backends for the live list):
kimi — Kimi K2 via Ollama Cloud Pro. Cheap frontier alternative; works well for non-critical exploration.qwen-cloud — Qwen3 Coder Next via Ollama Cloud Pro. Fastest of the Pro options.qwen-local / qwen-next-local — local Ollama models. Slower on M1, but private and free; the fallback when you need to keep work off any cloud.gpt-oss — local gpt-oss 20B. Slow, free, private.anthropic (default) — Claude via Anthropic API.Which work routes well to non-Anthropic backends:
Which work doesn't:
The practice is to keep your most-capability-sensitive 1–3 streams on Anthropic, and shed lower-stakes parallel work to backends when the quota window is tight.
One deliverable this week. Concrete, observable.
Do this — Assignment 1 of 1
Time estimate: integrated into one normal working day. The screen recording is the artefact you'll review.
If 6+ streams feels like too many on your first attempt: this is itself a useful data point. Most engineers who've never run more than 3 hit a noticeable resistance at 6. The resistance is what Week 5's emotional spine is about. For now, just run the day, observe the resistance, don't try to make it go away.
cctabs new --worktree at least once. You understand why it's the default for branch-divergent work.Week 3 — Tighter integrations + the autonomous-agents question. The integration thesis: every web surface, every comms surface, every tool surface that's pure coordination overhead routes through the agent. Plus the question every cohort asks — answered explicitly.
No spam. One email per meaningful update.