Add `dotagent tui` — live full-screen dashboard
- Dominant language
- Rust
- Stars
- 3
- Forks
- 1
- Avg merge
- 4h 50m
- Merged PRs (30d)
- 1
Description
`dotagent status` is a one-shot text dashboard. There is no live, interactive view — you re-run the command to get an update. For an operator with 20+ agents, this is the difference between "I can spot the failing one at a glance" and "I refresh every 10s and squint".
## Proposal
A new subcommand `dotagent tui` that opens a full-screen terminal UI (ratatui or similar) with:
- A live list of every `(agent, schedule)` with its current health state, last run time, next fire time.
- Color-coded rows by state (`ok` green, `degraded` yellow, `failing` red, `stale` gray).
- Sort/filter by name, last run, state.
- Press a row to drill into the last run's stdout/stderr (uses the same renderer as `run-now`).
- Press `r` to run-now, `p` to pause (if #28 lands), `?` for help.
State source: the same files the CLI reads (heartbeat, window state, audit log). No daemon RPC — pure filesystem watch.
## Acceptance criteria
- [ ] Opens, renders, exits cleanly on `q`.
- [ ] Updates within 2s of a heartbeat or window state change on disk (filesystem watcher, not polling every tick).
- [ ] Drill-in view reuses the `output::render_outcome` renderer.
- [ ] Graceful degradation when terminal is small (<80 cols).
- [ ] `Ctrl-C` exits without leaving the terminal in a broken state.
## Where to start
- `crates/dotagent/src/commands/status.rs` — current snapshot renderer to learn from.
- A new crate `dotagent-tui` (or a module under `dotagent/src/commands/tui/`) — pick whichever is cleaner.
- ratatui + crossterm are the standard pairing in the Rust ecosystem.
## Non-goals
- Editing manifests from the TUI. Read + run only.
- Remote/web variant. That is its own feature.
Contributor guide
Research direction
Start with crates/dotagent/src/commands/status.rs to understand the snapshot renderer, then trace the heartbeat, window state, and audit log files used by the CLI. Decide whether the TUI belongs in a new dotagent-tui crate or under commands/tui, and review the output::render_outcome renderer. Done means the screen renders and updates from filesystem changes, supports the listed controls and small terminals, and exits cleanly on q or Ctrl-C.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, observability
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100