@gbasin/agentboard 0.1.10 → 0.2.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.
Files changed (2) hide show
  1. package/README.md +43 -3
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Agentboard
2
2
 
3
+ [![CI](https://img.shields.io/github/actions/workflow/status/gbasin/agentboard/ci.yml?branch=master&logo=github)](https://github.com/gbasin/agentboard/actions)
4
+ [![npm](https://img.shields.io/npm/v/@gbasin/agentboard?logo=npm)](https://www.npmjs.com/package/@gbasin/agentboard)
5
+ [![License: MIT](https://img.shields.io/github/license/gbasin/agentboard)](https://github.com/gbasin/agentboard/blob/master/LICENSE)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
7
+
3
8
  Agentboard is a Web GUI for `tmux` that's optimized for agent TUI's (`claude`, `codex`, etc). A lighter-weight, agent-optimized alternative to Blink, Termux, etc.
4
9
 
5
10
  Run your desktop/server, then connect from your phone or laptop over Tailscale/LAN. You get a shared workspace across devices.
@@ -13,6 +18,27 @@ Run your desktop/server, then connect from your phone or laptop over Tailscale/L
13
18
  - Shows the last user prompt for each session, so you can remember what each agent is working on
14
19
  - Pin agent TUI sessions to auto-resume them when the server restarts (useful if your machine reboots or tmux dies)
15
20
 
21
+ ## How It Works
22
+
23
+ ```
24
+ ┌─────────────┐ SSH ┌─────────────┐
25
+ │ Remote Host ├───────────►│ │ WebSocket ┌────────────┐
26
+ │ (tmux) │ │ Agentboard ├──────────────►│ Browser │
27
+ └─────────────┘ tmux │ Server │ │ (React + │
28
+ ┌─────────────┐ CLI │ │ │ xterm.js) │
29
+ │ Local tmux ├───────────►│ - discover │ └────────────┘
30
+ │ sessions │ │ sessions │
31
+ └─────────────┘ │ - parse │
32
+ ┌─────────────┐ read │ agent │
33
+ │ Agent logs ├───────────►│ logs │
34
+ │ ~/.claude/ │ └─────────────┘
35
+ └─────────────┘
36
+ ```
37
+
38
+ - **Session discovery** — polls local tmux windows and (optionally) remote hosts over SSH
39
+ - **Status inference** — reads pane content and Claude/Codex JSONL logs to determine if each agent is *working*, *waiting for input*, or *asking for permission*
40
+ - **Live terminal** — streams I/O through the server so you can interact with any session from any device
41
+
16
42
  ### Desktop
17
43
  | Terminal | Sessions | Pinning |
18
44
  | :---: | :---: | :---: |
@@ -93,10 +119,11 @@ AGENTBOARD_INACTIVE_MAX_AGE_HOURS=24
93
119
  AGENTBOARD_EXCLUDE_PROJECTS=<empty>,/workspace
94
120
  AGENTBOARD_HOST=blade
95
121
  AGENTBOARD_REMOTE_HOSTS=mba,carbon,worm
96
- AGENTBOARD_REMOTE_POLL_MS=15000
122
+ AGENTBOARD_REMOTE_POLL_MS=2000
97
123
  AGENTBOARD_REMOTE_TIMEOUT_MS=4000
98
124
  AGENTBOARD_REMOTE_STALE_MS=45000
99
125
  AGENTBOARD_REMOTE_SSH_OPTS=-o BatchMode=yes -o ConnectTimeout=3
126
+ AGENTBOARD_REMOTE_ALLOW_ATTACH=false
100
127
  AGENTBOARD_REMOTE_ALLOW_CONTROL=false
101
128
  ```
102
129
 
@@ -122,13 +149,26 @@ All persistent data is stored in `~/.agentboard/`: session database (`agentboard
122
149
 
123
150
  `AGENTBOARD_HOST` sets the host label for local sessions (default: `hostname`).
124
151
 
125
- `AGENTBOARD_REMOTE_HOSTS` enables remote tmux polling over SSH. Provide a comma-separated list of hosts (e.g., `mba,carbon,worm`).
152
+ `AGENTBOARD_REMOTE_HOSTS` enables remote tmux polling over SSH. Provide a comma-separated list of hosts (e.g., `mba,carbon,worm`). Remote sessions show live status (working/waiting/permission) via pane content capture over SSH.
126
153
 
127
154
  `AGENTBOARD_REMOTE_POLL_MS`, `AGENTBOARD_REMOTE_TIMEOUT_MS`, and `AGENTBOARD_REMOTE_STALE_MS` control remote poll cadence, SSH timeout, and stale host cutoff.
128
155
 
129
156
  `AGENTBOARD_REMOTE_SSH_OPTS` appends extra SSH options (space-separated).
130
157
 
131
- `AGENTBOARD_REMOTE_ALLOW_CONTROL` is reserved for future remote control support (read-only in MVP).
158
+ `AGENTBOARD_REMOTE_ALLOW_ATTACH` enables interactive terminal attach to remote sessions (input, resize, copy-mode). When `false` (default), remote sessions are view-only.
159
+
160
+ `AGENTBOARD_REMOTE_ALLOW_CONTROL` enables destructive remote session management (create, kill, rename) via the UI. Setting this to `true` implies `REMOTE_ALLOW_ATTACH=true`. Kill and rename are restricted to agentboard-managed sessions — externally-discovered remote sessions cannot be killed or renamed even with control enabled.
161
+
162
+ **SSH multiplexing (recommended):** Each poll cycle opens SSH connections to every remote host. Enable SSH connection multiplexing to reuse connections and reduce overhead from ~200-500ms to ~5ms per poll. Add to your `~/.ssh/config`:
163
+
164
+ ```
165
+ Host *
166
+ ControlMaster auto
167
+ ControlPath ~/.ssh/sockets/%r@%h-%p
168
+ ControlPersist 600
169
+ ```
170
+
171
+ Then create the sockets directory: `mkdir -p ~/.ssh/sockets && chmod 700 ~/.ssh/sockets`
132
172
 
133
173
  ## Logging
134
174
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gbasin/agentboard",
3
- "version": "0.1.10",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "description": "A terminal dashboard for tracking agent coding sessions",
6
6
  "author": "gbasin",
@@ -20,10 +20,10 @@
20
20
  "bun": ">=1.3.6"
21
21
  },
22
22
  "optionalDependencies": {
23
- "@gbasin/agentboard-darwin-arm64": "0.1.10",
24
- "@gbasin/agentboard-darwin-x64": "0.1.10",
25
- "@gbasin/agentboard-linux-x64": "0.1.10",
26
- "@gbasin/agentboard-linux-arm64": "0.1.10"
23
+ "@gbasin/agentboard-darwin-arm64": "0.2.2",
24
+ "@gbasin/agentboard-darwin-x64": "0.2.2",
25
+ "@gbasin/agentboard-linux-x64": "0.2.2",
26
+ "@gbasin/agentboard-linux-arm64": "0.2.2"
27
27
  },
28
28
  "scripts": {
29
29
  "dev": "concurrently -k \"bun run dev:server\" \"bun run dev:client\"",