Run multiple Claude Code instances in parallel, orchestrated by a controller Claude Code instance that acts as a tech lead — decomposing your goal into focused sub-tasks and delegating each to its own terminal.
You → Dashboard → Controller Claude Code
├── Terminal 1: Claude Code (ui)
├── Terminal 2: Claude Code (api)
├── Terminal 3: Claude Code (db)
└── Terminal 4: Claude Code (tests)
- macOS (uses Terminal.app for window management)
- Node.js (no dependencies to install)
- tmux —
brew install tmux - Claude Code CLI — installed and authenticated (docs)
git clone <repo-url>
cd nestedcc
node server.cjsOpen http://localhost:3456 in your browser.
- Type a goal (e.g. "Build a todo app with React and Express")
- Pick terminal count (Auto lets the controller decide, or choose 1-6)
- Pick a model (Sonnet, Opus, Haiku) — used for both the controller and child terminals
- Set iterations (0 = one-shot, 1-5 = automatic improvement rounds after the initial build)
- Click Start
Terminal windows will pop up on your screen — one per sub-task. The dashboard shows what the controller is doing in real-time.
If you prefer a terminal-only experience:
node start.cjsThe controller is a Claude Code instance running in prompt mode. It receives a system prompt that tells it to act as a senior engineer who delegates work across parallel terminals. It uses a tmux control script to:
- Start tmux sessions (each opens a Terminal window)
- Launch Claude Code in each session
- Send focused tasks with explicit file ownership ("You own src/api/. Don't touch other files.")
- Poll terminal output to monitor progress
- Verify the project works before finishing
- Clean up all sessions
The children are fully independent Claude Code instances. They don't know about each other or the controller — they just receive a task and do it.
When you click Start, you'll see:
- Dashboard (left panel): Activity log showing every action the controller takes — starting terminals, sending prompts, reading output
- Dashboard (right panel): List of active terminals with click-to-expand prompts
- Terminal windows: macOS Terminal windows arranged side-by-side, one per child Claude Code instance
Setting iterations > 0 triggers automatic improvement rounds after the initial build. Each round spawns a fresh controller that:
- Reviews the code built so far
- Fixes bugs and improves quality
- Adds one new feature
- Verifies everything works
server.cjs — HTTP server, SSE streaming, controller process management
tmux-control.cjs — tmux session manager (start, stop, send commands, read output)
public/index.html — Web dashboard (single file, no dependencies)
start.cjs — CLI launcher (alternative to the dashboard)
- macOS only — relies on Terminal.app and AppleScript for window management
- No Linux/Windows support — would need a different terminal management approach
- Controller quality varies — sometimes it under-parallelizes or sends overly broad prompts. The system prompt is tuned for this but it's not perfect.
- No structured communication — the controller talks to children by typing into terminals and reading screen output via tmux. There's no API or message passing.
MIT