From sub-claude
Use when needing to run Claude instances in parallel or in sequence — fire-and-forget tasks, multi-turn conversations, or any headless Claude work.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sub-claude:sub-claudeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A **session-oriented pool** of persistent Claude TUI slots backed by tmux. Solves a fundamental problem: launching a new `claude` process while another Claude session has a Bash tool call in flight silently destroys that call's output. sub-claude pre-starts sessions and reuses them — `start`, `followup`, and `wait` never launch new `claude` processes.
A session-oriented pool of persistent Claude TUI slots backed by tmux. Solves a fundamental problem: launching a new claude process while another Claude session has a Bash tool call in flight silently destroys that call's output. sub-claude pre-starts sessions and reuses them — start, followup, and wait never launch new claude processes.
Not claude-spawn: pool sessions are persistent TUIs (not claude -p), support multi-turn conversation via followup, and never launch new claude processes.
Output parsing: Use -v / --verbosity to filter output. Levels: response (final model answer only), conversation (all prompts + responses), full (everything minus TUI chrome), raw (default, unfiltered). Example: sub-claude -v response wait "$id"
# Fire-and-forget
id=$(sub-claude start "refactor auth module")
# Blocking — wait for result (parsed to just the response)
result=$(sub-claude -v response start "summarize this file" --block)
# Multi-turn
id=$(sub-claude start "analyze the codebase")
sub-claude wait "$id"
sub-claude followup "$id" "now suggest improvements" --block
# See what a running session is doing
sub-claude capture "$id"
# Parallel work
id1=$(sub-claude start "task one")
id2=$(sub-claude start "task two")
sub-claude wait "$id1"
sub-claude wait "$id2"
# Cross-project: manage a pool in another directory
sub-claude -C ~/obsidian pool init --size 3
sub-claude -C ~/obsidian start "organize notes"
sub-claude -C ~/obsidian pool status
Run sub-claude --help for full CLI reference.
| Command | stdout | stderr | blocks? |
|---|---|---|---|
start | job ID | — | no |
start --block | terminal output | job ID + warnings | yes (unless queue pressure) |
followup | job ID | — | no |
followup --block | terminal output | job ID + warnings | yes (unless queue pressure) |
capture | live terminal or snapshot | offload note (if applicable) | no |
result | terminal output | — | no (errors if running) |
wait <id> | terminal output | warnings | yes |
wait (no ID) | result of first child to finish | --- <id> --- header | yes |
queued → processing → finished(idle) → finished(offloaded)
│
└→ error (slot crashed)
followupfollowup resumes a finished session — conversation history is preserved.
wait first).Non-blocking (default): start prints the ID and returns immediately. Use wait or capture to observe progress.
--block: waits inline, prints terminal output to stdout. ID goes to stderr. Under queue pressure, --block degrades to non-blocking — see pool-management.md.
Prefer fire-and-forget + explicit wait over --block for parallel work.
Use followup for multi-turn, not input. input is for raw terminal interaction (menus, interactive prompts).
Clean completed sessions to free slots: sub-claude clean --completed
Auto-init: if no pool exists when you call start, it initializes one automatically (5 slots). Prefer explicit pool init --size N with a larger size before starting work.
Always overprovision. Sub-agents, other Claude instances, and hooks all consume slots. A pool that looks big enough at launch saturates quickly once nested work kicks in.
| Situation | File |
|---|---|
| Interactive key sequences, pinning, multi-instance isolation | interactive-sessions.md |
| Pool setup, resizing, queue pressure, environment variables | pool-management.md |
| Reusable custom agents via command scripts | custom-agents.md |
sub-claude not found, install/update/uninstall | installation.md |
File bugs and feature requests at github.com/EliasSchlie/sub-claude/issues.
npx claudepluginhub eliasschlie/claude-plugins --plugin sub-claudeSpawns and manages persistent tmux-based Claude Code CLI sessions with bidirectional communication. Subcommands: spawn, send, read, status, list, kill for parallel peer orchestration and multi-turn steering.
Launches and manages Claude Code, Codex, or Pi worker sessions as sub-processes. Useful for project managers that delegate tasks, assign work, monitor progress, review tool calls, and collect results via the `csd` CLI.
Runs one-shot provider LLM subagents for fan-out tasks, bulk per-file work, or specialized model calls. Returns result directly, lock-free for parallel execution.