feat: add arbor-tui terminal dashboard with pluggable terminal capture#88
Open
edmondop wants to merge 1 commit intopenso:mainfrom
Open
feat: add arbor-tui terminal dashboard with pluggable terminal capture#88edmondop wants to merge 1 commit intopenso:mainfrom
edmondop wants to merge 1 commit intopenso:mainfrom
Conversation
77a5002 to
d85af90
Compare
0b0b0a9 to
bc7d9e5
Compare
Add a new ratatui-based TUI crate (arbor-tui) that provides a terminal dashboard for monitoring Claude Code agents. Features include: - Live agent table with configurable header columns - Metadata panel showing agent-published key/value pairs - Auto-discovery of metadata columns from agent data - Terminal pane capture via tmux integration - Input forwarding to agent terminal panes - Detail overlay popup for full agent inspection - Collapsible table and metadata panels - Help overlay with keybinding reference - Configurable keybindings, field colors, and status icons - TOML-based configuration with sensible defaults - SVG screenshot generation for documentation - Insta snapshot tests for all UI states Also fixes formatting in arbor-daemon-client/types.rs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
bc7d9e5 to
677b466
Compare
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new
arbor-tuicrate — a terminal dashboard for monitoring Arbor agent sessions, built with ratatui.Core features
arbor-httpdon a configurable port, polls agent sessions and health status on a timer${field:-width}) with two-layer field resolution: built-in DTO fields (session_id,cwd,status,elapsed) fall back to freeform metadata JSON keys. Supports static or value-mapped colors per fieldEnter) — full agent info + pretty-printed metadatatui.toml(XDG or~/.arbor/), with defaults for navigation, toggles, and quit. Supports custom action hooks that run shell commands with agent context as env varsPluggable terminal capture
The TUI can display live terminal output from agent panes and forward input to them. This is implemented via a
TerminalCapturetrait with a dispatcher (capture_for) that reads the agent'smetadata.terminal.typefield and returns the appropriate backend:Currently shipped with a tmux backend that uses
tmux capture-pane -p -e(with ANSI colors) andtmux send-keys. Adding support for other terminal multiplexers (kitty, zellij, etc.) is just a new trait impl + a match arm in the dispatcher.ito enter input mode, type text, pressEnterto send to the agent's terminal paneConfiguration
Default config is embedded at compile time (
config/default.toml). Users can override any section via$XDG_CONFIG_HOME/arbor/tui.tomlor~/.arbor/tui.toml:[tui]— tick rate, poll interval, agent header format, field colors, status icons, hidden columns[keys]— rebind any built-in action (quit, nav, toggle panels, etc.)[actions.*]— custom shell hooks triggered by key press, scoped to a tabTest coverage
serde_json/preserve_order— metadata keys are sorted before rendering to handle Cargo workspace feature unificationTest plan
just test— all workspace tests passjust lint— zero clippy warningsjust format— formatted--features serde_json/preserve_order(CI feature unification)arbor-tui --port 8787with daemon running, verify agents list populatesi→ type →Entersends to agent terminal)tui.toml