The Observatory dashboard
stella observe opens a local, loopback-only web dashboard over your workspace telemetry — runs, spend, models, tools, files, memory, MCP traffic, and the fleet ledger. Plus /export for a portable HTML report.
stella observe opens the Observatory — a local web dashboard over the
telemetry your own runs recorded:
stella observe # serves http://127.0.0.1:7787/
stella observe --open # …and opens your browser
stella observe --port 0 # pick any free portLocal by construction
The Observatory is built to the same no-phone-home standard as the rest of Stella — not as a policy, as a construction:
- Loopback only. It binds
127.0.0.1and nothing else. There is no remote mode, no auth because there is no exposure. - Read-only. Every database open is SQLite read-only — the dashboard can never mutate your telemetry or block a live session (the store runs WAL, so readers never block writers).
- Zero external references. The page is a single embedded HTML file with its assets inlined — no CDN, no web fonts, no analytics. A test in the repository enforces that the served HTML contains no external URL at all.
- Graceful on empty. A missing table or a workspace with no runs renders as empty panels, never an error.
What you can see
The nav has eight tabs, plus a window selector — 24h / 7d / 30d /
all (the default). The Overview KPIs, the tokens-per-run timeline, the
Executions table, and every Activity chart honor the window; the leaderboard
panels labeled all-time ignore it.
| Tab | Answers |
|---|---|
| Overview | KPI tiles (runs, resolve rate, total spend, tokens in/out, cache hits, model time), a tokens-per-run timeline, the Models breakdown ($/resolved task per provider/model), the tool leaderboard (calls, errors, p50/max latency, bytes returned), the most-touched files, the fleet ledger (per fleet run: tasks, attempts, successes, commits) with MCP traffic, a memory/reflections/skills digest — and the Executions table: every run's kind, prompt, model, outcome, steps, tool calls, files touched, tokens, and cost. Clicking a row opens a drill-down drawer with per-step tokens and latency, every tool call, the files touched, and the post-turn self-reflection |
| Activity | Per-day time series over the window: cost, tokens (input vs output), runs (resolved vs other outcomes), and tool calls (calls vs errors) |
| Code graph | The tree-sitter code-graph index of the workspace — a searchable force-directed canvas of files (with per-file symbol counts) and their resolved import edges, plus a selection detail panel |
| Skills | Installed and learned skills, with per-skill usage |
| MCP | Configured servers (.stella/mcp.toml) and observed per-server / per-tool traffic |
| Memory & rules | The memory plane: memories on disk (.stella/memories), citation receipts (were they useful and truthful?), and promoted rules |
| Self-improve | The self-improvement loop, receipted from .stella: self-rating per reflection, owned shortcomings, distilled lessons, and auto-extracted learned skills |
| Config | The merged engine config (user → org → project), where every store and database lives, and the per-scope config files |
Everything is served from <workspace>/.stella/store.db (and
.stella/fleet.db for the fleet view) — the same SQLite files you can query
directly with any SQLite client.
$/resolved — the metric that matters
The models view computes dollars per resolved task per provider/model —
the honest unit price of your agent work. A cheap model that rarely resolves
can cost more per outcome than an expensive one that resolves reliably; this
is the number that tells you which. stella stats
prints the same aggregation in the terminal (table, json, or csv).
Portable reports: /export
Inside the Command Deck, the /export slash command
packages the session's telemetry into
.stella/exports/session-<timestamp>.zip. <timestamp> is the archive's
watermark: the timestamp of the last log entry included — the data's own
clock, not the moment you typed /export. Every entry nests under a matching
<timestamp>/ folder inside the archive:
<timestamp>/raw/<table>.json— a pretty-printed dump of every telemetry table (executions, telemetry, tool calls, files touched, MCP usage, skill usage, reflections, …)<timestamp>/dashboard.html— a self-contained HTML dashboard (no external CSS or JS) with KPI insights, cost & efficiency by model, token economy, tool usage, files touched, and execution outcomes — openable offline, emailable, or committable to a PR as the receipt for what an agent run did and cost<timestamp>/manifest.json— the watermark (asexported_at) and per-table row counts
The Observatory is for living workspaces — point it at your repo and
watch spend and resolve rates as you work. /export is for sharing — a
frozen, portable snapshot anyone can open without Stella installed.
Telemetry & budget
Local-only telemetry in a SQLite store on your disk — tokens, cost, steps, tool calls, files, memory, reflections — and how --budget turns metering into a hard spend cap.
Files touched
Stella records every file it reads, creates, updates, or deletes — as a per-session CRUD ledger with reasons and line-delta counts, surfaced live in the TUI, in JSON output, and in the local store.