@cordfuse/llmux 0.13.2 → 0.13.4

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