Dashboard
The dashboard command starts a web UI with an integrated KV watcher. Changes appear in real-time via WebSocket -- no manual refresh needed.
Starting the dashboard
consul-guardian dashboard \
--consul-addr http://localhost:8500 \
--prefix "config/,feature-flags/" \
--git-repo ./consul-backup \
--static-dir ./frontend/dist \
--listen :9090
Open http://localhost:9090 in your browser.
The dashboard runs the watcher and web server in a single process. Changes detected by the watcher are simultaneously committed to Git and pushed to the dashboard via WebSocket.
Pages
The dashboard has 10 pages:
Overview
The landing page. Shows KPI cards (total keys, recent changes, sync status), a live activity feed of KV changes, and the Consul cluster leader. Updated in real-time over WebSocket.
KV Store
Browse all keys under your watched prefixes. Each key shows its value (JSON-formatted if applicable), flags, create index, and modify index. Filter by prefix or search by key name.
KV Editor
Create, edit, and delete keys directly from the dashboard. Edits go straight to Consul -- Guardian's watcher picks up the change and commits it to Git automatically.
Drift Detection
Run a drift scan between your Git repository (desired state) and the live Consul state. Results are categorized as MISSING, EXTRA, or DRIFTED. See the drift detection guide for details.
Diff View
Side-by-side comparison of config values across Git revisions. Select any two commits to see exactly what changed.
Restore
Point-in-time restore from Git history. Preview all planned changes before applying them. Uses CAS to prevent overwriting concurrent modifications. See the restore guide.
Snapshots
Take a full cluster snapshot, view existing snapshots, and manage retention. See the snapshots guide.
Change History
Timeline view of every KV change Guardian has recorded. Filter by change type (Added, Modified, Deleted) or search by key name. The last 500 events are kept in memory.
Env Compare
Compare configuration values across different environments (production, staging, development). Requires separate Guardian instances or prefixes per environment.
Settings
Configure dashboard behavior: alert destinations (Slack webhook URL), watched prefixes, and snapshot schedule.
WebSocket updates
The dashboard connects to ws://host:port/ws on load. Every time the watcher detects a KV change, it broadcasts a JSON message to all connected clients:
{
"type": "changes",
"events": [
{
"timestamp": "2026-04-04T14:30:00Z",
"type": "Modified",
"key": "config/database/host",
"value": "db-2.example.com",
"index": 42
}
]
}
If the WebSocket connection drops, the dashboard reconnects automatically.
Configuration
| Flag | Default | Description |
|---|---|---|
--listen | :9090 | Address and port for the HTTP server |
--git-repo | ./consul-backup | Path to the Git backup repository |
--prefix | config/ | Comma-separated KV prefixes to watch |
--static-dir | (embedded) | Path to frontend build directory |
Global flags (--consul-addr, --consul-token, --log-level) also apply. See the CLI reference.
Real-world example
Your on-call engineer gets paged at 2am because the payment service is returning 500s. They open the Guardian dashboard:
- Overview shows 3 KV changes in the last hour.
- Change History reveals
config/payment/api-urlwas modified 20 minutes ago. - Diff View shows the URL was changed from
https://api.stripe.comtohttps://api.stripe.com/v2(a non-existent endpoint). - Restore lets them revert just that key to the previous value with a dry-run preview first.
Total time to diagnose and fix: under 3 minutes.