@cordfuse/llmux 0.12.2 → 0.12.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.
- package/README.md +15 -16
- package/dist/index.js +5 -0
- package/package.json +1 -1
- package/src/client/client.ts +3 -0
package/README.md
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
# llmux
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
a REST call, or from a browser on your phone over Tailscale. Past
|
|
13
|
-
conversations are browsable and resumable. The agents keep running.
|
|
14
|
-
|
|
15
|
-
> **Status:** v0.12.2 — daemon + CLI client consolidated into one binary
|
|
3
|
+
Run every AI agent CLI under a single daemon. One named tmux session per
|
|
4
|
+
agent. Drive any of them from a terminal (`llmux session attach`), a REST or
|
|
5
|
+
WebSocket API, or a phone browser over Tailscale.
|
|
6
|
+
|
|
7
|
+
Each agent runs unmodified — llmux just brokers I/O. Sessions survive
|
|
8
|
+
restarts, attach is raw-TTY, and Claude Code conversations are resumable
|
|
9
|
+
from any client.
|
|
10
|
+
|
|
11
|
+
> **Status:** v0.12.3 — daemon + CLI client consolidated into one binary
|
|
16
12
|
> (`llmux`). Auth, tokens, mobile picker, conversation resume, Claude Code
|
|
17
13
|
> history adapter shipped. See [CHANGELOG.md](./CHANGELOG.md).
|
|
18
14
|
|
|
@@ -22,8 +18,11 @@ conversations are browsable and resumable. The agents keep running.
|
|
|
22
18
|
<img src="https://raw.githubusercontent.com/cordfuse/llmux/main/docs/screenshots/chat.jpg" width="32%" alt="phone chat — xterm.js with soft-keyboard toolbar attached to an OpenCode session">
|
|
23
19
|
</p>
|
|
24
20
|
|
|
25
|
-
>
|
|
26
|
-
>
|
|
21
|
+
> Above: picker, edit form, and attached terminal — phone, over Tailscale
|
|
22
|
+
> HTTPS. The same surfaces are available from any terminal via
|
|
23
|
+
> **`llmux session attach <name>`** (raw TTY pass-through over WebSocket;
|
|
24
|
+
> Ctrl+] to detach). Pick whichever fits the task — the browser is for
|
|
25
|
+
> drive-by phone use, the terminal is for everything else.
|
|
27
26
|
|
|
28
27
|
## Install
|
|
29
28
|
|
|
@@ -67,7 +66,7 @@ The same binary is the client. Set `--server` (or `LLMUX_SERVER` env) on any
|
|
|
67
66
|
session/agent verb and it routes over HTTP instead of operating locally:
|
|
68
67
|
|
|
69
68
|
```bash
|
|
70
|
-
export LLMUX_SERVER=http://
|
|
69
|
+
export LLMUX_SERVER=http://192.0.2.10:3030 # or https://<host>.tailnet.ts.net
|
|
71
70
|
export LLMUX_TOKEN=sas_… # mint with `llmux token create`
|
|
72
71
|
|
|
73
72
|
llmux session list
|
package/dist/index.js
CHANGED
|
@@ -3373,6 +3373,11 @@ var attach = {
|
|
|
3373
3373
|
stdin.removeAllListeners("data");
|
|
3374
3374
|
process.removeAllListeners("SIGWINCH");
|
|
3375
3375
|
ws?.close();
|
|
3376
|
+
stdin.pause();
|
|
3377
|
+
try {
|
|
3378
|
+
stdin.unref();
|
|
3379
|
+
} catch {
|
|
3380
|
+
}
|
|
3376
3381
|
}
|
|
3377
3382
|
function sendResize() {
|
|
3378
3383
|
if (!stdout.isTTY) return;
|
package/package.json
CHANGED
package/src/client/client.ts
CHANGED
|
@@ -603,6 +603,9 @@ const attach: ClientCommand = {
|
|
|
603
603
|
stdin.removeAllListeners('data');
|
|
604
604
|
process.removeAllListeners('SIGWINCH');
|
|
605
605
|
ws?.close();
|
|
606
|
+
// Release stdin from holding the event loop open.
|
|
607
|
+
stdin.pause();
|
|
608
|
+
try { stdin.unref(); } catch {}
|
|
606
609
|
}
|
|
607
610
|
|
|
608
611
|
function sendResize(): void {
|