gbasin/agentboard
Web GUI for tmux optimized for AI agent TUIs, with support for iOS safari and mac w/ keyboard shortcuts
Agentboard – Web‑based UI for tmux‑driven AI agents
What it is
Agentboard is a small web application that sits in front of a tmux session and shows each pane as a separate “agent” (Claude, Codex, Pi, …). It discovers local and remote tmux windows, reads the agents’ JSON‑L logs, and presents a live, touch‑friendly terminal (via xterm.js) that you can reach from any device – laptop, phone or tablet – over a LAN or Tailscale network.
Why it matters for AI/LLM workflows
Many developers run LLM‑backed assistants inside a terminal multiplexer (tmux) because the agents keep state in the pane and write logs to ~/.claude/. Managing dozens of panes, remembering which one is waiting for input, and copying/pasting on a phone is painful. Agentboard solves that by:
- Auto‑detecting agent panes and showing their current status (working, waiting, needs permission).
- Persisting session metadata so you can hibernate a pane, close its tmux window, and later wake it without losing the conversation.
- Providing a mobile‑optimized UI (touch scrolling, virtual arrow keys, image paste) that works in iOS Safari.
- Allowing remote tmux discovery over SSH, so a single dashboard can monitor agents running on multiple machines.
Core features (as described in the README)
| Feature | What you get |
|---|---|
| Session discovery | Polls local tmux windows and optional remote hosts via SSH; shows each as a card in the sidebar. |
| Status inference | Reads pane output and Claude/Codex JSONL logs to label a session as working, waiting, or asking for permission. |
| Live terminal | Streams I/O through a WebSocket to a React + xterm.js front‑end; you can type, scroll, and send mouse events. |
| Hibernate / History | Keeps dormant sessions visible; their tmux windows are closed but metadata stays, and a single click wakes them. |
| Mobile UI | iOS Safari support: paste images, virtual D‑pad, quick‑keys toolbar, long‑press selection, clipboard‑forwarding. |
| Claude Code fullscreen | Enables Claude’s no‑flicker renderer with mouse support out of the box. |
| Remote tmux support | Optional SSH polling of other hosts; view‑only by default, with optional attach/control flags. |
| Dependency risk scanner | Built‑in bun run deps:risk to audit npm/Bun dependencies for security and maintenance issues. |
| Session recovery | Saves session names, project paths and launch details; lets you reopen interrupted sessions after a reboot. |
| Keyboard shortcuts | Quick navigation and session management (Ctrl+Option+N for new, Ctrl+Option+X to kill, etc.). |
| Configurable env vars | Fine‑grained control over discovery prefixes, clipboard handling, tmux sync, remote polling intervals, paste‑image limits, etc. |
How to get it running
- Prerequisites – Install
tmuxand (recommended)Tailscalefor easy networking. - Installation – Choose one:
- Homebrew:
brew tap gbasin/tap && brew install agentboard && agentboard - npm:
npm install -g @gbasin/agentboard && agentboard - npx:
npx @gbasin/agentboard - From source (requires Bun 1.3.14+):
bun install && bun run dev(dev server on 5173) orbun run build && bun run start(production on 4040).
- Homebrew:
- Open a browser to
http://localhost:4040(or the machine’s LAN/Tailscale address) and you’ll see the dashboard. - (Optional) Set up a systemd or launchd service for a persistent background server.
Security note
Agentboard does not provide authentication; anyone who can reach the HTTP/WebSocket endpoint gets full terminal access. The default binding is 127.0.0.1, which is safe for local use. Exposing it publicly requires additional network‑level protection (e.g., Tailscale, VPN, firewall) or a reverse‑proxy with auth.
All information above is taken directly from the repository’s README; no extra features are inferred.
Related
- Project
- Project
- Project
- Project
- Project