Dashboard
The Dashboard is the first screen you see when opening CritterWatch. It provides a system-wide summary of all monitored services and surfaces critical issues that need immediate attention.

The header reads System Overview and carries four quick-action buttons — View All Services, View Dead Letters, View Projections, and Alert Configuration — for jumping straight to the screen you need. On a fresh install with nothing connected yet, the Dashboard shows a "No services connected yet" empty state with a get-started link.
Summary Cards
A row of four cards shows fleet-wide aggregates:
| Card | Description |
|---|---|
| Total Services | Number of monitored services, with green/amber/red pills counting services by worst health status |
| Global Msgs/hr | Summed current throughput rate across all connected services — an instantaneous rate, not a 24-hour total. A sparkline beneath it plots the past 24h of throughput (it fills in as history accrues) |
| Active Alerts | Count of raised and elevated alerts, split by severity; click through to the Timeline |
| DLQ Total | Total unresolved dead-letter messages across all queues, plus a current DLQ/hr rate |
Cards with non-zero warning or critical values are highlighted to draw attention.
Top services + throughput
Below the cards, two tables call out the services that need attention:
- Top 5 Busiest Services — ranked by current messages/hour.
- Top 5 DLQ Services — ranked by unresolved dead letters.
A System Throughput sparkline (one bar per service) gives a quick visual of where the load sits. There is no per-service tile grid — use the Services list for the full roster, or click any row here to drill in.
Recent Events
A condensed view of the Timeline shows the 10 most-recent notable events — service registrations, node add/remove, projection lifecycle actions, and active alerts. The feed is filtered to an allow-list of operator-relevant event types (routine info chatter and resolved alerts are dropped).
Liveness, honestly: this tile is populated from a one-shot load when the console first connects, plus a seed of any currently-active alerts. It is not a continuously-updating live ticker today — new node-join/leave events won't stream in until the page reloads. (Wiring the live push is tracked in issue #636.)
Filtering
The global service filter is hidden on the Dashboard — it is a fleet-wide overview with no single-service context. To focus on one service, open it from the Services list.
Auto-Refresh
The Dashboard receives its data via SignalR; there is no manual refresh control. The summary cards and top-services tables update as service summaries arrive, and DLQ counts re-query periodically. (See the Recent Events note above for the one tile that is not yet live.)
