Operator dashboard

AI Ops Dashboard

Where it all comes together

โš™ Tabs

Show or hide any dashboard tab.

How: Toggle tabs on/off and pick the default tab. Hidden tabs stay installed and can be turned back on anytime โ€” nothing is deleted.

Change the dashboard's color theme.

How: Pick any of the 8 themes โ€” your choice is saved in this browser only (it doesn't change the shared default).

Data updated 10/19/2018, 6:46 PM PDT
Rendered 6/20/2026, 12:18 AM PDT ยท auto-refresh 120s
โ† AI Operations Dashboard docsยทhelp/connecting-repos.md

Connecting your existing repos

This dashboard is a hub. Your other project repos report *into* it: when a Claude Code session (or you) finishes work in a connected repo, the ai-ops-dashboard CLI writes a log entry, a pending item, or a postmortem into this dashboard's data files, and the dashboard shows them on the next page load.

Same machine only โ€” both repos live on one filesystem. There is no API, server, or polling.

Three steps: install the CLI once, connect each repo once, then report work through the CLI.

> Every command below is verified end-to-end against this codebase. If a step doesn't behave as written, that's a bug โ€” please flag it.

0. Install the CLI (do this once)

The ai-ops-dashboard CLI is not published to npm, so npx ai-ops-dashboard โ€ฆ will NOT work from your other repos (npm can't find the package). Make the command available everywhere by linking this dashboard repo once:

cd /path/to/ai-ops-dashboard      # this dashboard repo
npm link                          # installs a global `ai-ops-dashboard` command
ai-ops-dashboard --version        # -> ai-ops-dashboard CLI v0.3.0 (schema 0.3)

Prefer not to link globally? Call it by full path everywhere instead: node /path/to/ai-ops-dashboard/cli/ai-ops-dashboard.mjs <command>.

1. Connect each repo (once per repo)

From inside each project repo you want to report into the dashboard:

cd ~/code/their-saas
ai-ops-dashboard init --dashboard /path/to/ai-ops-dashboard --name "their-saas"

This:

  • creates .ai-ops-dashboard-client/ (config + a per-repo AGENTS.md) in the project repo,
  • writes/updates a managed CLAUDE.md block at the repo root, so any Claude Code session there learns the dashboard exists and how to report,
  • registers the repo in the dashboard's data/connected-repos.json (it then appears on the Repos tab).

Verify from the connected repo:

ai-ops-dashboard status           # prints the resolved dashboard path + last write time

2. Report work (per Claude Code session, or by hand)

Each Claude Code session in a connected repo automatically reads the CLAUDE.md that init wrote, so it already knows to route writes through the CLI. You โ€” or the session โ€” report work with:

# Log what you shipped -> dashboard docs/operator-log.md (Log tab)
ai-ops-dashboard log --why "..." --shipped "..." [--tags "a,b"] [--next "..."]

# Add / close a pending task -> dashboard data/pending.json (Pending tab)
ai-ops-dashboard pending add --title "..." --priority high
ai-ops-dashboard pending close <id>

# File a postmortem -> dashboard knowledge/postmortems/ (Postmortems tab)
ai-ops-dashboard postmortem --slug <slug> --severity p1

Every entry is tagged with the repo's id, token-verified against connected-repos.json, and written atomically. The dashboard reads files on each request (no polling) โ€” reload the page to see new entries.

Prefer to brief a session explicitly? Paste this into its first message:

This repo reports into an AI Operations Dashboard (see .ai-ops-dashboard-client/config.json).
When you finish a unit of work, run:
  ai-ops-dashboard log --why "<why>" --shipped "<what>"
and `ai-ops-dashboard pending add` / `ai-ops-dashboard postmortem` as appropriate.
Read .ai-ops-dashboard-client/AGENTS.md first. Do NOT edit the dashboard's app/ or components/.

What flows into the dashboard

| Signal | Command | Lands in | Shows on | |---|---|---|---| | Operator log entry | ai-ops-dashboard log | docs/operator-log.md | Log tab | | Pending task | ai-ops-dashboard pending add / close | data/pending.json | Pending tab | | Postmortem | ai-ops-dashboard postmortem | knowledge/postmortems/ | Postmortems tab | | Connected-repo metadata | ai-ops-dashboard init / status | data/connected-repos.json | Repos tab |

Commit / build / deploy *activity* reporting is not wired in v0.3 โ€” the Activity tab shows the dashboard repo's own frozen git history, not the connected repos'.

Committing the writes

The CLI writes (and stages) the dashboard's data files but does not commit or push them. Commit them from the dashboard repo yourself:

cd /path/to/ai-ops-dashboard
git add -A && git commit -m "operator updates"

Re-pointing / disconnecting

  • Re-point a repo at a different dashboard (run from the connected repo): ai-ops-dashboard link --dashboard /new/path.
  • Disconnect: delete .ai-ops-dashboard-client/ in the repo, and remove its entry from the dashboard's data/connected-repos.json.

Limits (v0.3 โ€” intentionally small)

  • Same machine only. No remote write, no API, no daemon.
  • No auto-commit in the dashboard. The CLI writes the data files; you commit them.
  • No polling. Reload the dashboard to see new writes.
  • One operator at a time. Concurrent writes to the same JSON file can race.

Troubleshooting

  • `ai-ops-dashboard: command not found` โ€” you didn't npm link the dashboard (or it was unlinked). Re-run npm link in the dashboard repo, or call it by full node .../cli/ai-ops-dashboard.mjs path.
  • `write token โ€ฆ does not match` โ€” re-run ai-ops-dashboard init --dashboard <path> from the repo, or ai-ops-dashboard link --rotate-token.
  • `no .ai-ops-dashboard-client/config.json` โ€” the repo was never connected; run init.
  • Writes succeed but a tab looks empty โ€” reload the page (no polling). If still empty, check the target JSON is valid.

For the full agent contract, read the dashboard's AGENTS.md and the per-repo .ai-ops-dashboard-client/AGENTS.md.

Connecting your existing repos