Status: ready-for-agent # 35 — Tracker web dashboard ## What to build A read-only web dashboard served by the tracker itself at `GET /dashboard` — single page, plain HTML/JS polling the tracker's HTTP endpoints, static assets embedded in the tracker package. No new build toolchain. Because the tracker hive replicates ledger and registry state, **any tracker in the mesh — leader or follower — can serve the dashboard** from its own state. Panels: - Hive membership and current Raft leader - Node registry: health, scores, coverage map per model - Client ledger balances - Node pending balances and next-payout ETA - Settlement history with devnet explorer links (tx signatures) - Strikes / bans / forfeiture events - Rolling RPM stats per model Write operations (editing prices, manual settlement trigger) are deferred to a later story. ## Acceptance criteria - [ ] `GET /dashboard` serves the UI from any tracker (leader or follower) - [ ] All seven panels render with live data - [ ] Auto-refresh ≤5s without page reload - [ ] No new build toolchain — static assets embedded in the tracker package - [ ] Works against a 3-tracker hive in the two-machine LAN test setup ## Blocked by - `31-billing-ledger.md` - `33-settlement-loop.md`