Goal
The Rusty TUI dashboard should match the Elixir reference as closely as possible.
Reference screenshot:

Current State vs Target
Header / Summary Stats
The Elixir dashboard shows a SYMPHONY STATUS block with these fields:
| Field |
Elixir |
Rusty Status |
| Agents |
19/50 (running/max) |
⚠️ Partial — shows running count but not max concurrency |
| Throughput |
658,875 tps |
❌ Missing |
| Runtime |
1m 54s |
✅ Present |
| Tokens |
in 38,183,882 | out 368,361 | total 38,552,243 |
⚠️ Shows total only; missing in/out breakdown |
| Rate Limits |
codex | primary n/a | secondary n/a | credits n/a |
❌ Missing |
| Project |
Clickable link to project issues page |
❌ Missing |
| Next refresh |
1s countdown |
❌ Missing |
Running Agents Table
| Column |
Elixir |
Rusty Status |
| ID |
Issue identifier (e.g. MT-725) |
✅ Present (as Issue) |
| Stage |
Issue state (Todo, In Progress, Rework) |
✅ Present (as State) |
| PID |
OS process ID |
✅ Present |
| Age / Turn |
1m 19s / 1 |
⚠️ Shows Turns only — missing age |
| Tokens |
1,442,520 (comma-formatted total) |
✅ Present |
| Session |
Truncated session ID 019c...ac5e10 |
⚠️ Missing in TUI (present in web dashboard) |
| Event |
Full event text |
⚠️ Truncated to 18 chars — should show more |
Backoff Queue Table
| Column |
Elixir |
Rusty Status |
| Issue |
Identifier |
✅ |
| Attempt |
Retry count |
✅ |
| Due at |
Timestamp |
✅ |
| Error |
Error message |
✅ (truncated) |
The backoff queue is at parity. Main gaps are in the header stats and running table.
Implementation Tasks
- Header block: Replace the 4-card horizontal layout with a vertical
SYMPHONY STATUS block matching the Elixir format — one stat per line, labels left-aligned
- Add missing header fields: Throughput (tps), Rate Limits, Project link, Next refresh countdown
- Running table columns: Rename/reorder to
ID | Stage | PID | Age / Turn | Tokens | Session | Event
- Age / Turn column: Combine elapsed time + turn count (e.g.
1m 19s / 2)
- Session column: Show truncated session ID in TUI (
019c...ac5e10 format)
- Event column: Show full event text (or at least more than 18 chars — allow horizontal scroll or flex width)
- Bullet indicators: Each running row has a
• prefix (teal/cyan) as a status dot
Goal
The Rusty TUI dashboard should match the Elixir reference as closely as possible.
Reference screenshot:
Current State vs Target
Header / Summary Stats
The Elixir dashboard shows a
SYMPHONY STATUSblock with these fields:19/50(running/max)658,875 tps1m 54sin 38,183,882 | out 368,361 | total 38,552,243codex | primary n/a | secondary n/a | credits n/a1scountdownRunning Agents Table
MT-725)Issue)State)1m 19s / 1Turnsonly — missing age1,442,520(comma-formatted total)019c...ac5e10Backoff Queue Table
The backoff queue is at parity. Main gaps are in the header stats and running table.
Implementation Tasks
SYMPHONY STATUSblock matching the Elixir format — one stat per line, labels left-alignedID | Stage | PID | Age / Turn | Tokens | Session | Event1m 19s / 2)019c...ac5e10format)•prefix (teal/cyan) as a status dot