Expand description
Agent dashboard — shows which Claude/Codex agents are running in which tmux panes, with cwd, task, and review/intent status.
Data sources are all local: tmux itself + ~/.claude/state/. No daemon.
Identity anchor is the tmux pane PID; cwd is for state-marker matching
and display, never for identity. See state.rs for the matching logic.
Modules§
- attention
- Read the cross-tool attention queue at
${XDG_CACHE_HOME:-$HOME/.cache}/claude-attention/queue.jsonl. - classify
- Classify Claude/Codex’s UI state from a tmux pane snapshot.
- collector
- Combine tmux panes + Claude state markers + process tree into a
Snapshot. Pure I/O orchestration — all the parsing lives elsewhere. - panes
- proc
- Process tree walker. Given a tmux pane PID, find the most recently
spawned
claudeorcodexdescendant so we can read its cwd and report it as the agent’s working directory. - session_
meta - Read Claude Code’s own session-state file:
~/.claude/sessions/<PID>.json. The file holds Claude’s view of the UI status —busy(mid-turn),idle(at chat prompt),waiting(selection / permission dialog up) — keyed by the Claude process PID. That makes it a perfect primary signal for the dashboard: no pane scraping, no pattern matching, no session-UUID mapping. - state
- Scan
~/.claude/state/for markers that tell us what’s blocked, what has an active intent, and which repos have a fresh review marker. - ui
- Agent dashboard TUI. Renders to stderr so it composes with shell wrappers
that capture stdout (matches the picker convention in
src/ui/picker.rs).