@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.
Files changed (2) hide show
  1. package/README.md +35 -8
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -6,14 +6,41 @@
6
6
  [![node](https://img.shields.io/node/v/@cordfuse/llmux.svg?label=node)](./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 or
10
- WebSocket API, or a phone browser over Tailscale.
11
-
12
- Each agent runs unmodified — llmux just brokers I/O. Sessions survive
13
- restarts, attach is raw-TTY, and Claude Code conversations are resumable
14
- from any client.
15
-
16
- > **Status:** v0.13.2 daemon + CLI client consolidated into one binary
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cordfuse/llmux",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "tmux-based AI agent dispatcher — REST/WS daemon + CLI client in one binary",
5
5
  "license": "MIT",
6
6
  "type": "module",