@cordfuse/llmux 0.13.2 → 0.13.3
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 +35 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,14 +6,41 @@
|
|
|
6
6
|
[](./packages/llmux/package.json)
|
|
7
7
|
|
|
8
8
|
Run every AI agent CLI under a single daemon. One named tmux session per
|
|
9
|
-
agent. Drive any of them from a terminal (`llmux session attach`), a REST
|
|
10
|
-
WebSocket API, or a phone browser over Tailscale.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
agent. Drive any of them from a terminal (`llmux session attach`), a REST
|
|
10
|
+
or WebSocket API, or a phone browser over Tailscale. Sessions survive
|
|
11
|
+
daemon restarts; attach is raw-TTY (`Ctrl+]` to detach).
|
|
12
|
+
|
|
13
|
+
### Headless ≠ `claude -p`
|
|
14
|
+
|
|
15
|
+
The obvious way to script Claude Code is `claude -p "prompt"` (and similar
|
|
16
|
+
non-interactive modes in codex, gemini, etc.). That spawns a fresh
|
|
17
|
+
short-lived child per call: no shared conversation, no in-session OAuth,
|
|
18
|
+
no `/commands`, no persistent tool state, no MCP context. Each call
|
|
19
|
+
starts cold.
|
|
20
|
+
|
|
21
|
+
llmux drives the **interactive** agent process — the same TUI a human
|
|
22
|
+
launches — over `tmux send-keys`. Spawn `claude` once, fire prompts at the
|
|
23
|
+
same live agent forever from any client (CLI, REST, WebSocket, web).
|
|
24
|
+
The agent runs unmodified and doesn't know it's being driven headlessly.
|
|
25
|
+
Tool state persists across prompts. Conversations are resumable from any
|
|
26
|
+
client.
|
|
27
|
+
|
|
28
|
+
### OAuth from your phone, on a headless box
|
|
29
|
+
|
|
30
|
+
A consequence of driving real interactive agents: **OAuth works even when
|
|
31
|
+
the daemon host has no browser.** Spawn `claude` (or `codex`, `gemini`,
|
|
32
|
+
`agy`) on a headless server, open the picker on your phone over Tailscale
|
|
33
|
+
HTTPS, tap the row to attach, complete the browser OAuth flow on your
|
|
34
|
+
phone, detach. The session stays authed forever. Same trick for re-auth
|
|
35
|
+
when a token expires — phone in, click through, phone out.
|
|
36
|
+
|
|
37
|
+
That's the same surface you get for everyday driving: pick an agent on
|
|
38
|
+
your phone over LTE, type a prompt into a real xterm with a soft-keyboard
|
|
39
|
+
toolbar (Esc / Tab / Ctrl / arrows / shell chars), watch tool calls
|
|
40
|
+
stream in. No "mobile app" — it's the same daemon serving a real
|
|
41
|
+
terminal over a WebSocket.
|
|
42
|
+
|
|
43
|
+
> **Status:** v0.13.3 — daemon + CLI client consolidated into one binary
|
|
17
44
|
> (`llmux`). Auth, tokens, mobile picker, conversation resume, Claude Code
|
|
18
45
|
> history adapter shipped. See [CHANGELOG.md](./CHANGELOG.md).
|
|
19
46
|
|