Goal
A single always-visible view of every agent pane's state: working / blocked-on-input / done / stalled — without clicking through tabs. herdr's core UX ('every agent at a glance') and the one surface gap left after the persistence work.
Signals — all already exist, no new detection needed
shell_state / detect_shell_state (dialog/prompt detection → 'blocked on input')
last_output_at staleness (bridge SessionInfo, added for the pulse) → working vs idle
pane_busy / pane_idle self-report (authoritative when present)
shell_last_exit + shell integration → done/failed
- pulse/watchdog state
Scope
- Sidecar: aggregate per-pane status into one cheap endpoint (e.g.
GET /api/fleet) + push deltas over the bridge
- Renderer: minimal UI first — colored status dot per TAB in the tab bar (working=green pulse, blocked=amber, stalled=red, done=check), tooltip with pane breakdown
- Later: an optional fleet strip/panel (window-level) listing agent panes with name + state + last activity, click to jump (human-initiated focus only — never auto-focus, per focus-never-steal)
- MCP: expose the same aggregate as a tool so orchestrator agents can read fleet state cheaply
Non-goals
Not Maximus (#102 is extraction/alerting on content); this is presence/liveness UX.
Context
Follow-up from the herdr (ogulcancelik/herdr) comparison — see the 'Layout Persistence' sticky.
Goal
A single always-visible view of every agent pane's state: working / blocked-on-input / done / stalled — without clicking through tabs. herdr's core UX ('every agent at a glance') and the one surface gap left after the persistence work.
Signals — all already exist, no new detection needed
shell_state/detect_shell_state(dialog/prompt detection → 'blocked on input')last_output_atstaleness (bridge SessionInfo, added for the pulse) → working vs idlepane_busy/pane_idleself-report (authoritative when present)shell_last_exit+ shell integration → done/failedScope
GET /api/fleet) + push deltas over the bridgeNon-goals
Not Maximus (#102 is extraction/alerting on content); this is presence/liveness UX.
Context
Follow-up from the herdr (ogulcancelik/herdr) comparison — see the 'Layout Persistence' sticky.