Run a fleet of Claude Code sessions. From the CLI — or from Claude itself.
CLI command: cctabs · Website: cctabs.com
cctabs new auth ~/Dev/myapp # new tab, claude starts
cctabs new api ~/Dev/myapp
cctabs new infra ~/Dev/myapp
cctabs sessions # what's running across all tabs
cctabs scrollback auth # read what auth is doing without switching tabs
cctabs send api --file task.txt # drop a prompt into any session
cctabs fork auth -n auth-v2 # branch a conversation, keep the originalNo tmux. No dashboard. Your terminal tabs are the UI.
When you're running multiple Claude Code sessions in parallel, you lose track fast. Which tab is working on what? Did it finish? Is it waiting for input?
cctabs solves this with a simple CLI that treats terminal tabs as the unit of orchestration — open them by name, read their output, send them prompts, fork them, close them. Everything stays in sync: the tab title, the Claude session name, and the working directory.
The killer feature: Claude can run cctabs itself. Install the skill and your Claude Code session can spawn parallel sibling sessions, monitor their output, and coordinate across them — without you switching tabs.
As a Claude Code plugin (recommended — installs the CLI + skill in one step):
Run these slash commands inside a Claude Code session:
❯ /plugin marketplace add generativereality/plugins
⎿ Successfully added marketplace: generativereality
❯ /plugin install cctabs@generativereality
⎿ ✓ Installed cctabs. Run /reload-plugins to activate.
❯ /reload-plugins
⎿ Reloaded: 1 plugin · 0 skills · 5 agents · 0 hooks · 0 plugin MCP servers · 0 plugin LSP servers
Note: These are Claude Code slash commands, not shell commands. Type them at the
❯prompt inside a Claude Code session.
Via npm (CLI only, no Claude Code skill):
npm install -g cctabsSkill only (if you already have the CLI installed via npm):
mkdir -p .claude/skills/cctabs
curl -fsSL https://raw.githubusercontent.com/generativereality/cctabs/main/skills/cctabs/SKILL.md \
-o .claude/skills/cctabs/SKILL.mdRequirements: Wave Terminal · macOS · Node.js 20+
One-time: Wave needs Accessibility permission — System Settings → Privacy & Security → Accessibility → Wave ✓
cctabs sessions what's running (active/idle status)
cctabs list all workspaces, tabs, and blocks
cctabs new <name> [dir] [-w workspace] open tab, start claude
cctabs resume <name> [dir] open tab, run claude --continue
cctabs fork <tab> [-n new-name] fork a session into a new tab
cctabs close <tab> close a tab
cctabs rename <tab> <new-name> rename a tab
cctabs scrollback <tab> [lines] read terminal output (default: 50 lines)
cctabs send <tab> [text] send input — arg, --file, or stdin pipe
cctabs config show config path and values
Tab names match by prefix. Block IDs can be shortened to 8 chars.
cctabs sessions # check what's already running first
cctabs new auth ~/Dev/myapp
cctabs new payments ~/Dev/myapp
cctabs new infra ~/Dev/myappEach tab gets named, Claude's session name syncs to the tab title via --name.
# From a file (good for long context-heavy prompts)
cctabs send auth --file ~/prompts/task.txt
# Via stdin
echo "focus on the edge cases in the OAuth flow" | cctabs send auth
# Quick reply or approval
cctabs send auth "yes\n"
cctabs send auth "/clear\n"cctabs scrollback auth # last 50 lines
cctabs scrollback auth 200 # last 200 lines# Try a different approach without losing the original conversation
cctabs fork auth -n auth-v2Runs claude --resume <id> --fork-session — new independent session, full shared context from the original.
cctabs new api ~/Dev/myapp -w workThe real unlock: install the plugin (see Install) so Claude Code can run cctabs itself.
With the skill installed, Claude can:
- Check what's running before starting duplicate work (
cctabs sessions) - Spawn a parallel session for an independent subtask (
cctabs new payments ~/Dev/myapp) - Monitor siblings without interrupting them (
cctabs scrollback payments) - Drop a prompt into any session (
cctabs send payments --file spec.txt) - Fork its own session to explore an alternative approach (
cctabs fork auth)
Claude becomes the orchestrator of its own fleet.
Claude Code's Remote Control lets you access a local session from any device — phone, tablet, browser — via claude.ai/code. The session still runs on your machine, with full filesystem and tool access.
Paired with cctabs, the pattern is:
- Start a command session with Remote Control enabled:
claude --remote-control "command" - From your phone or browser, connect to that session and assign work:
"Spawn three sessions — auth, payments, infra — and start them on these tasks..."
- The command session uses
cctabsto open tabs, send prompts, and check in on workers - You monitor and steer the whole fleet from your phone while the machine does the work
One remote-controlled session orchestrating a local fleet.
# ~/.config/cctabs/config.toml
[claude]
# Flags passed to every claude invocation
flags = ["--allow-dangerously-skip-permissions"]
[defaults]
# Default Wave workspace for new sessions
# workspace = ""| Terminal | Status |
|---|---|
| Wave Terminal | ✅ Full support |
| iTerm2 | Planned |
| Ghostty | Planned |
| Warp | Planned |
Wave is supported via its unix socket RPC. Other terminals will follow as adapters — PRs welcome.
MIT