Skip to main content

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

FlagDefaultDescription
--listen:9090Address and port for the HTTP server
--git-repo./consul-backupPath to the Git backup repository
--prefixconfig/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:

  1. Overview shows 3 KV changes in the last hour.
  2. Change History reveals config/payment/api-url was modified 20 minutes ago.
  3. Diff View shows the URL was changed from https://api.stripe.com to https://api.stripe.com/v2 (a non-existent endpoint).
  4. 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.