@generativereality/cctabs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "cctabs",
3
+ "description": "Claude Code tab manager. Terminal tabs as the UI, no tmux. Claude can orchestrate its own sibling sessions.",
4
+ "version": "0.1.0",
5
+ "author": {
6
+ "name": "generativereality",
7
+ "url": "https://cctabs.com"
8
+ },
9
+ "repository": "https://github.com/generativereality/cctabs",
10
+ "homepage": "https://cctabs.com",
11
+ "license": "MIT"
12
+ }
package/README.md ADDED
@@ -0,0 +1,190 @@
1
+ # cctabs
2
+
3
+ **Run a fleet of Claude Code sessions. From the CLI — or from Claude itself.**
4
+
5
+ CLI command: `cctabs` · Website: [cctabs.com](https://cctabs.com)
6
+
7
+ ```bash
8
+ cctabs new auth ~/Dev/myapp # new tab, claude starts
9
+ cctabs new api ~/Dev/myapp
10
+ cctabs new infra ~/Dev/myapp
11
+
12
+ cctabs sessions # what's running across all tabs
13
+ cctabs scrollback auth # read what auth is doing without switching tabs
14
+ cctabs send api --file task.txt # drop a prompt into any session
15
+ cctabs fork auth -n auth-v2 # branch a conversation, keep the original
16
+ ```
17
+
18
+ No tmux. No dashboard. Your terminal tabs are the UI.
19
+
20
+ ---
21
+
22
+ ## The idea
23
+
24
+ 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?
25
+
26
+ 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.
27
+
28
+ 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.
29
+
30
+ ## Install
31
+
32
+ **As a Claude Code plugin** (recommended — installs the CLI + skill in one step):
33
+
34
+ Run these slash commands inside a [Claude Code](https://claude.ai/code) session:
35
+
36
+ ```
37
+ ❯ /plugin marketplace add generativereality/plugins
38
+ ⎿ Successfully added marketplace: generativereality
39
+
40
+ ❯ /plugin install cctabs@generativereality
41
+ ⎿ ✓ Installed cctabs. Run /reload-plugins to activate.
42
+
43
+ ❯ /reload-plugins
44
+ ⎿ Reloaded: 1 plugin · 0 skills · 5 agents · 0 hooks · 0 plugin MCP servers · 0 plugin LSP servers
45
+ ```
46
+
47
+ > **Note:** These are Claude Code slash commands, not shell commands. Type them at the `❯` prompt inside a Claude Code session.
48
+
49
+ **Via npm** (CLI only, no Claude Code skill):
50
+
51
+ ```bash
52
+ npm install -g cctabs
53
+ ```
54
+
55
+ **Skill only** (if you already have the CLI installed via npm):
56
+
57
+ ```bash
58
+ mkdir -p .claude/skills/herd
59
+ curl -fsSL https://raw.githubusercontent.com/generativereality/cctabs/main/skills/herd/SKILL.md \
60
+ -o .claude/skills/herd/SKILL.md
61
+ ```
62
+
63
+ **Requirements:** [Wave Terminal](https://waveterm.dev) · macOS · Node.js 20+
64
+
65
+ **One-time:** Wave needs Accessibility permission — System Settings → Privacy & Security → Accessibility → Wave ✓
66
+
67
+ ## Usage
68
+
69
+ ```
70
+ cctabs sessions what's running (active/idle status)
71
+ cctabs list all workspaces, tabs, and blocks
72
+ cctabs new <name> [dir] [-w workspace] open tab, start claude
73
+ cctabs resume <name> [dir] open tab, run claude --continue
74
+ cctabs fork <tab> [-n new-name] fork a session into a new tab
75
+ cctabs close <tab> close a tab
76
+ cctabs rename <tab> <new-name> rename a tab
77
+ cctabs scrollback <tab> [lines] read terminal output (default: 50 lines)
78
+ cctabs send <tab> [text] send input — arg, --file, or stdin pipe
79
+ cctabs config show config path and values
80
+ ```
81
+
82
+ Tab names match by prefix. Block IDs can be shortened to 8 chars.
83
+
84
+ ### Spin up a session fleet
85
+
86
+ ```bash
87
+ cctabs sessions # check what's already running first
88
+
89
+ cctabs new auth ~/Dev/myapp
90
+ cctabs new payments ~/Dev/myapp
91
+ cctabs new infra ~/Dev/myapp
92
+ ```
93
+
94
+ Each tab gets named, Claude's session name syncs to the tab title via `--name`.
95
+
96
+ ### Send a prompt
97
+
98
+ ```bash
99
+ # From a file (good for long context-heavy prompts)
100
+ cctabs send auth --file ~/prompts/task.txt
101
+
102
+ # Via stdin
103
+ echo "focus on the edge cases in the OAuth flow" | cctabs send auth
104
+
105
+ # Quick reply or approval
106
+ cctabs send auth "yes\n"
107
+ cctabs send auth "/clear\n"
108
+ ```
109
+
110
+ ### Check in without switching tabs
111
+
112
+ ```bash
113
+ cctabs scrollback auth # last 50 lines
114
+ cctabs scrollback auth 200 # last 200 lines
115
+ ```
116
+
117
+ ### Fork a session
118
+
119
+ ```bash
120
+ # Try a different approach without losing the original conversation
121
+ cctabs fork auth -n auth-v2
122
+ ```
123
+
124
+ Runs `claude --resume <id> --fork-session` — new independent session, full shared context from the original.
125
+
126
+ ### Target a workspace
127
+
128
+ ```bash
129
+ cctabs new api ~/Dev/myapp -w work
130
+ ```
131
+
132
+ ## Claude Code Skill
133
+
134
+ The real unlock: install the plugin (see [Install](#install)) so **Claude Code can run cctabs itself**.
135
+
136
+ With the skill installed, Claude can:
137
+
138
+ - Check what's running before starting duplicate work (`cctabs sessions`)
139
+ - Spawn a parallel session for an independent subtask (`cctabs new payments ~/Dev/myapp`)
140
+ - Monitor siblings without interrupting them (`cctabs scrollback payments`)
141
+ - Drop a prompt into any session (`cctabs send payments --file spec.txt`)
142
+ - Fork its own session to explore an alternative approach (`cctabs fork auth`)
143
+
144
+ Claude becomes the orchestrator of its own fleet.
145
+
146
+ ## Tip: pair with Claude Code Remote Control
147
+
148
+ Claude Code's [Remote Control](https://docs.anthropic.com/en/docs/claude-code/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.
149
+
150
+ Paired with cctabs, the pattern is:
151
+
152
+ 1. Start a **command session** with Remote Control enabled:
153
+ ```bash
154
+ claude --remote-control "command"
155
+ ```
156
+ 2. From your phone or browser, connect to that session and assign work:
157
+ > *"Spawn three sessions — auth, payments, infra — and start them on these tasks..."*
158
+ 3. The command session uses `cctabs` to open tabs, send prompts, and check in on workers
159
+ 4. You monitor and steer the whole fleet from your phone while the machine does the work
160
+
161
+ One remote-controlled session orchestrating a local fleet.
162
+
163
+ ## Config
164
+
165
+ ```toml
166
+ # ~/.config/cctabs/config.toml
167
+
168
+ [claude]
169
+ # Flags passed to every claude invocation
170
+ flags = ["--allow-dangerously-skip-permissions"]
171
+
172
+ [defaults]
173
+ # Default Wave workspace for new sessions
174
+ # workspace = ""
175
+ ```
176
+
177
+ ## Terminal support
178
+
179
+ | Terminal | Status |
180
+ |----------|--------|
181
+ | [Wave Terminal](https://waveterm.dev) | ✅ Full support |
182
+ | iTerm2 | Planned |
183
+ | Ghostty | Planned |
184
+ | Warp | Planned |
185
+
186
+ Wave is supported via its unix socket RPC. Other terminals will follow as adapters — PRs welcome.
187
+
188
+ ## License
189
+
190
+ MIT