claude-code-mux 0.1.0 → 0.1.2
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.
- package/README.md +52 -97
- package/dist/bridge.js +0 -0
- package/dist/router.js +0 -0
- package/package.json +10 -3
- package/demo.png +0 -0
package/README.md
CHANGED
|
@@ -1,41 +1,55 @@
|
|
|
1
|
-
# claude-mux
|
|
1
|
+
# claude-code-mux
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Talk to all your Claude Code agents from your phone. From a single mobile messaging app, chat with them in their active session, switch between agents, get notified when tasks finish, and approve permissions on the go. Seamlessly pick up where you left off — start a task on your desktop, continue the conversation from your phone.
|
|
4
4
|
|
|
5
|
-
<img src="demo.png" width="400" alt="claude-mux demo — Telegram chat showing /list, /status, /help commands and agent switching" />
|
|
6
5
|
|
|
7
|
-
##
|
|
6
|
+
## Commands
|
|
7
|
+
|
|
8
|
+
| Command | Description |
|
|
9
|
+
|---------|-------------|
|
|
10
|
+
| `/list` | Show all connected agents |
|
|
11
|
+
| `/switch <agent>` | Switch to an agent by repo, branch, directory, or description |
|
|
12
|
+
| `/status` | Show which agent is active |
|
|
13
|
+
| `/help` | Show all commands |
|
|
14
|
+
| *(any message)* | Chat with the active agent, just like in the terminal |
|
|
15
|
+
|
|
16
|
+
## Usage (from Telegram)
|
|
8
17
|
|
|
9
18
|
```
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
You: /switch nav
|
|
20
|
+
Bot: Switched to myapp/feature-nav
|
|
21
|
+
|
|
22
|
+
You: switch to the one working on the bug fix
|
|
23
|
+
Bot: Switched to myapp/fix-auth-bug
|
|
24
|
+
|
|
25
|
+
You: can you add pagination to the /users endpoint?
|
|
26
|
+
Bot: [monots/encore] I'll add pagination to the /users endpoint...
|
|
27
|
+
|
|
28
|
+
Bot: [myapp/feature-nav] Finished refactoring the nav component.
|
|
29
|
+
Changed 3 files, all 24 tests passing.
|
|
30
|
+
Ready for your review.
|
|
31
|
+
|
|
32
|
+
Bot: [monots/encore] Permission request:
|
|
33
|
+
Tool: Bash — Run npm test
|
|
34
|
+
Reply "yes abcde" or "no abcde"
|
|
35
|
+
You: yes abcde
|
|
26
36
|
```
|
|
27
37
|
|
|
28
38
|
## Install
|
|
29
39
|
|
|
30
40
|
```bash
|
|
31
|
-
npm install -g claude-mux
|
|
41
|
+
npm install -g claude-code-mux
|
|
32
42
|
```
|
|
33
43
|
|
|
34
44
|
## Prerequisites
|
|
35
45
|
|
|
36
46
|
- Claude Code v2.1.80+
|
|
37
47
|
- Node.js 20+
|
|
38
|
-
- A
|
|
48
|
+
- A messaging platform bot token:
|
|
49
|
+
- **Telegram** — supported now (see [Create a Telegram Bot](#create-a-telegram-bot) below)
|
|
50
|
+
- **Discord** — coming soon
|
|
51
|
+
- **WhatsApp** — coming soon
|
|
52
|
+
- **Slack** — coming soon
|
|
39
53
|
|
|
40
54
|
## Create a Telegram Bot
|
|
41
55
|
|
|
@@ -137,81 +151,6 @@ claude --dangerously-load-development-channels server:claude-mux-bridge
|
|
|
137
151
|
|
|
138
152
|
No per-session env vars needed. Each session registers with the router automatically. When you spin up a new worktree, just start Claude Code in it — no extra setup required.
|
|
139
153
|
|
|
140
|
-
## Usage (from Telegram)
|
|
141
|
-
|
|
142
|
-
### Commands
|
|
143
|
-
|
|
144
|
-
| Command | Description |
|
|
145
|
-
|---------|-------------|
|
|
146
|
-
| `/list` | Show all connected agents |
|
|
147
|
-
| `/switch <agent>` | Switch to an agent by repo, branch, directory, or description |
|
|
148
|
-
| `/status` | Show which agent is active |
|
|
149
|
-
| `/help` | Show all commands |
|
|
150
|
-
|
|
151
|
-
### Smart switching
|
|
152
|
-
|
|
153
|
-
You don't need to type the exact agent name. The router first tries token-based fuzzy matching (instant, no API call). If that's ambiguous, and you've configured a `ROUTER_MODEL`, it falls back to the LLM to interpret natural language:
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
You: /list
|
|
157
|
-
Bot: Connected agents:
|
|
158
|
-
monots/encore (active) — up 32m
|
|
159
|
-
myapp/feature-nav — up 15m
|
|
160
|
-
myapp/fix-auth-bug — up 5m
|
|
161
|
-
|
|
162
|
-
You: /switch monots encore
|
|
163
|
-
Bot: Switched to monots/encore
|
|
164
|
-
|
|
165
|
-
You: /switch nav
|
|
166
|
-
Bot: Switched to myapp/feature-nav
|
|
167
|
-
|
|
168
|
-
You: /switch myapp
|
|
169
|
-
Bot: Multiple matches for "myapp":
|
|
170
|
-
1. myapp/feature-nav
|
|
171
|
-
2. myapp/fix-auth-bug
|
|
172
|
-
Be more specific, or use /switch with the full name.
|
|
173
|
-
|
|
174
|
-
You: /switch fix auth
|
|
175
|
-
Bot: Switched to myapp/fix-auth-bug
|
|
176
|
-
|
|
177
|
-
You: switch to the one working on the bug fix
|
|
178
|
-
Bot: Switched to myapp/fix-auth-bug
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
The last example doesn't use a `/` command at all. Any message containing the word "switch" triggers the LLM to classify whether it's a switch intent or a regular message to the agent. This means "switch to the one working on the bug fix" gets intercepted and resolved by the LLM, while "can you switch the database driver to postgres" passes through to the agent as a normal message. Without a `ROUTER_MODEL` configured, only `/switch` commands with fuzzy matching are available.
|
|
182
|
-
|
|
183
|
-
### Chatting with agents
|
|
184
|
-
|
|
185
|
-
Any non-command message goes to the active agent. If only one agent is connected, it's auto-selected.
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
You: can you add pagination to the /users endpoint?
|
|
189
|
-
Bot: [monots/encore] I'll add pagination to the /users endpoint...
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Notifications
|
|
193
|
-
|
|
194
|
-
Agents proactively notify you when tasks complete:
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
Bot: [myapp/feature-nav] Finished refactoring the nav component.
|
|
198
|
-
Changed 3 files, all 24 tests passing.
|
|
199
|
-
Ready for your review.
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Permission relay
|
|
203
|
-
|
|
204
|
-
When an agent needs permission to run a tool, you'll get a prompt:
|
|
205
|
-
|
|
206
|
-
```
|
|
207
|
-
Bot: [monots/encore] Permission request:
|
|
208
|
-
Tool: Bash
|
|
209
|
-
Action: Run npm test
|
|
210
|
-
Reply "yes abcde" or "no abcde"
|
|
211
|
-
|
|
212
|
-
You: yes abcde
|
|
213
|
-
```
|
|
214
|
-
|
|
215
154
|
## Dynamic worktrees
|
|
216
155
|
|
|
217
156
|
The whole point of this tool: you don't create new bots or set env vars when you spin up a new worktree. Just start Claude Code in the directory:
|
|
@@ -223,6 +162,22 @@ claude --dangerously-load-development-channels server:claude-mux-bridge
|
|
|
223
162
|
|
|
224
163
|
The bridge detects `myapp/hotfix-123` from git and registers automatically. When you close the session, it deregisters and your Telegram shows a disconnect notification.
|
|
225
164
|
|
|
165
|
+
## Architecture
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
Telegram Bot
|
|
169
|
+
|
|
|
170
|
+
v
|
|
171
|
+
Router (standalone process, localhost:9900)
|
|
172
|
+
- Handles /list, /switch, /status commands
|
|
173
|
+
- Routes messages to the active agent
|
|
174
|
+
| (WebSocket)
|
|
175
|
+
v
|
|
176
|
+
Bridge (MCP channel plugin, one per Claude Code session)
|
|
177
|
+
- Pushes messages into Claude Code session
|
|
178
|
+
- Sends replies + notifications back through router
|
|
179
|
+
```
|
|
180
|
+
|
|
226
181
|
## Configuration
|
|
227
182
|
|
|
228
183
|
### Router
|
package/dist/bridge.js
CHANGED
|
File without changes
|
package/dist/router.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-mux",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "One messaging client, many Claude Code agents — a multiplexer for routing messages to multiple Claude Code sessions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
"claude-mux-bridge": "./dist/bridge.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist"
|
|
12
|
-
"demo.png"
|
|
11
|
+
"dist"
|
|
13
12
|
],
|
|
14
13
|
"scripts": {
|
|
15
14
|
"build": "tsc",
|
|
@@ -25,6 +24,14 @@
|
|
|
25
24
|
"multiplexer",
|
|
26
25
|
"agent"
|
|
27
26
|
],
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/ShiplightAI/claude-code-mux.git"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/ShiplightAI/claude-code-mux#readme",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/ShiplightAI/claude-code-mux/issues"
|
|
34
|
+
},
|
|
28
35
|
"license": "MIT",
|
|
29
36
|
"dependencies": {
|
|
30
37
|
"@ai-sdk/anthropic": "^3.0.63",
|
package/demo.png
DELETED
|
Binary file
|