Alternatives¶
Survey of existing tools for managing multiple Claude Code sessions, and why clownhead exists alongside them. Star counts were collected on 2026-08-12 and will drift.
The built-in baseline¶
Before reaching for anything third-party, note what the CLI already does:
| Capability | Command |
|---|---|
| List interactive sessions | claude agents --json |
| Background-agent TUI | claude agents |
| Name a session | claude -n <name> |
| Worktree per session | claude -w <name>, plus --tmux |
| Resume | claude -c, claude -r [id], claude --from-pr <n> |
| Remote access from a phone | claude --remote-control |
Two details matter and are easy to miss:
claude agents (the TUI) is background-agents only.
Its help text calls itself "Manage background agents".
Only the --json flag includes interactive terminal sessions,
despite the command's own documentation being inconsistent about this.
No built-in TUI covers the interactive herd,
which is the gap clownhead fills.
--json degrades silently under a sandbox.
Peer discovery reads per-process sockets in /tmp/cc-socks,
and a shell that can execute the CLI without listing that directory gets background agents back and a zero exit status.
clownhead tests for the condition up front and refuses,
so a sandbox never reads as a quiet machine.
Third-party tools¶
| Tool | Stars | What it is | Adopts running sessions? |
|---|---|---|---|
| vibe-kanban | 27.7k | Kanban board that spawns an agent per task | ✗ launcher-owned |
| claudecodeui | 13.2k | Web/mobile GUI; drive sessions from a phone | ~ transcripts only |
| claude-squad | 8.3k | Go TUI; tmux pane + worktree per agent | ✗ launcher-owned |
| crystal | 3.1k | Electron parallel-worktree app — deprecated | ✗ superseded by nimbalyst |
| omnara | 2.7k | Self-hosted durable/remote agent infrastructure | ✗ different problem |
| dmux | 1.7k | tmux + worktree multiplexer, lifecycle hooks | ✗ launcher-owned |
| agentapi | 1.5k | HTTP API so other software can drive the CLI | ✗ wraps what it starts |
| nimbalyst | 1.5k | Crystal's successor; desktop + mobile workspace | ✗ launcher-owned |
| ccmanager | 1.2k | TUI, no tmux; busy/waiting/idle, worktree ops | ✗ launcher-owned |
| tmux-claude-session-manager | 355 | tmux popup; reads claude agents --json |
✓ if sessions live in tmux |
| claude-tmux | 202 | tmux popup, live output preview, worktree + PR | ~ tmux-scoped |
| cctop | 136 | macOS menubar app; one view over Claude Code, Codex, opencode and pi | ~ needs its hooks installed |
| claude-tmux-status | 45 | Live session state in the tmux status bar | ✓ passive |
| Moshi | closed | iOS/Android SSH/Mosh terminal and agent cockpit | ~ requires tmux |
| Conductor | closed | macOS-native parallel worktree app | ✗ launcher-owned |
Where clownhead differs¶
It adopts sessions it did not start. Almost every tool above is a launcher: it owns the session lifecycle and keeps a private registry, so it cannot see sessions started by hand in a terminal. Adopting one means restarting everything under it. clownhead reads the CLI's own state, so it sees whatever is already running.
That dividing line is inversely correlated with popularity.
The only third-party tool built on claude agents --json sits at 355 stars;
the two largest projects, at 41k stars combined, solve a different problem entirely.
cctop sits closest to the same stance.
It never launches a session either,
and it covers Codex, opencode and pi alongside Claude Code.
What it reads is a stream of hook events:
install its Claude Code plugin and every SessionStart, PermissionRequest and Stop lands in a local record the menubar app picks up.
That buys detail no polling reaches, subagents and permission prompts included,
and it costs a hook in every session's settings,
so one already running when the plugin arrived stays invisible until it restarts.
clownhead asks the CLI what is live and installs nothing into Claude Code,
which is the same trade taken the other way.
It is not a launcher. clownhead never spawns an agent, creates a worktree, or manages a multiplexer. If you want parallel-worktree orchestration, use ccmanager or claude-squad; they are good at it, and clownhead will happily watch the sessions they create.
A reboot does not lose the herd. A session is a transcript on disk, and what a reboot destroys is the mapping from session id to directory. Most tools either keep this in a private database or leave it to tmux, which does not survive a reboot either.
Subscription vs API key¶
Every tool listed above works with a Claude subscription,
because they all spawn the real claude binary rather than calling the API directly.
Auth lives in the CLI's own OAuth token store,
so any PTY wrapper inherits it.
This is not a differentiator.
The hazard is precedence.
Claude Code prefers ANTHROPIC_API_KEY over subscription OAuth when both are present,
so a stray key in a shell profile silently moves a herd onto metered billing.
Both vibe-kanban (an opt-in disable_api_key toggle) and nimbalyst (stripping the variable at process bootstrap) added defences only after users were burned.
clownhead leaves the environment alone: a session it resumes inherits whatever the shell it was started from already had, exactly as one started by hand would.
Worth stealing¶
claude-tmux-status puts live session state in the tmux status bar.
It is passive, additive, and does not care who started the session,
which is the same design stance as clownhead paint.