A single Go binary that captures every Claude Code, Cursor, Codex, Cline, Copilot, OpenCode, and OpenClaw session — and tells you exactly how the bill broke down. Cost intelligence, waste detection, conversation compression, and a 12-tool MCP server that lets your AI tools query each other. Local-only. Apache 2.0.
Local. Single binary. No CGO. No external runtime. Pure-Go SQLite. Zero network calls of its own — only the optional API proxy forwards your requests verbatim to Anthropic / OpenAI.
AI coding assistants are often the second-largest line item on a developer's monthly spend. The providers' dashboards are coarse — totals by month, maybe by model. They don't tell you which projects, which sessions, which tool calls, or which habits are burning your budget.
Which projects? Which models? Which sessions? Did Sonnet hit the long-context tier and silently reprice at 2× the rate? The provider doesn't tell you.
Every stale re-read is real money. Observer hashes every file the AI touches, surfaces the re-reads that didn't need to happen, and prices the waste in dollars.
Routing-efficiency analysis flags trivial Opus sessions (short turns, simple tools, low complexity) where Sonnet would've cost 1/5. With the actual delta in dollars.
Cross-tool overlap surfaces files touched by 2+ AI clients in the same window. Observer organizes by git root, not by tool — every client sees the unified view.
The Analysis tab — period-over-period spend, MTD vs your monthly budget, effective $/1M-token rate, cache efficacy, long-context surcharge, Discovery waste $. Plus a daily trend chart with a Model / Project / Tool dimension toggle, a movers table, and routing-efficiency suggestions. Hover any column for its definition + formula.
# Or skip the dashboard — same data from the CLI $ observer cost --days 30 --group-by model KEY IN OUT CACHE_R CACHE_W TURNS COST_USD claude-opus-4-7 450.8k 9.00M 5474.15M 108.97M 25269 $109.36 claude-sonnet-4-6 1.20M 2.40M 1234.50M 45.30M 18432 $28.74 claude-haiku-4-5 494.6k 669.1k 166.84M 20.80M 5262 $4.66 gpt-5.4-codex 892.3k 1.80M 320.10M 58.40M 9847 $3.81 gemini-2.5-pro 123.4k 245.8k 12.30M 8.90M 1342 $0.75 routing-efficiency: 7 trivial Opus sessions could've used Sonnet estimated savings: $24.80
Every tool call your AI clients make becomes a normalized action row, organized by git root. The cost engine, waste detector, compressor, and MCP server all read from the same SQLite store — so a read by Claude Code becomes a freshness signal for Codex.
Per-message token cost computed correctly — including the long-context tier traps that the JSONL adapters can't always disambiguate.
$ deltasThe Discovery tab surfaces what's costing you with a $ estimate per offender. Token-priced, deduplicated, ranked.
Optional pre-forward proxy that rewrites large tool_result blocks before they hit Anthropic / OpenAI. Importance-scored. Prefix-stable for cache alignment.
12 MCP tools your AI clients can call to query the unified database. A read by Claude Code becomes a freshness signal for Codex; a Cursor compaction is visible from Cline.
check_file_freshness — has this file changed since I last read it?get_session_recovery_context — rebuild after a context compactionsearch_past_outputs — FTS5 across every captured tool outputget_failure_context — error correlation + retry detectionPure Go binary — no CGO, no external services, no Docker. SQLite via modernc.org/sqlite. Works identically on Windows, macOS, and Linux.
Pinned npm install (recommended) or build from source with go install.
$ npm install -g @superbased/observer
Pinned, platform-aware. View on npm →
Patches ~/.claude/settings.json, ~/.cursor/hooks.json, ~/.codex/config.toml in place. Records SHA-256 checksums of every touched file so observer uninstall is reversible.
$ observer init --all
Foreground process. ctrl-c to stop. Dashboard lands on http://localhost:8081. Backfills history from existing session logs so the dashboard isn't empty.
$ observer scan && observer start
Point your AI tool at the local proxy. JSONL adapters are best-effort; the proxy reads the upstream's authoritative usage envelope including cache-tier breakdowns. Both env vars can coexist on the same machine.
$ export ANTHROPIC_BASE_URL="http://127.0.0.1:8820"
$ export OPENAI_BASE_URL="http://127.0.0.1:8820/v1"
Each AI client writes its own session format — JSONL, SQLite, JSON rollouts. Observer parses each format natively into a unified action row, so the dashboard rolls up cross-tool activity into one trend.
The provider tells you how much — usually monthly, by model. Observer tells you what and why: which projects, which sessions, which tool calls. It surfaces the long-context tier surcharge (Sonnet repriced at 2× when prompts exceed 200K), cache efficacy, stale re-reads with token-priced waste, and routing-efficiency hints (which trivial Opus sessions could have been Sonnet).
The hooks are read-only and exit 0 on every path — they capture activity, they never block. The optional API proxy passes your requests through verbatim by default. Conversation compression (pre-forward rewriting of large tool_result blocks) is opt-in via [compression.conversation].enabled = true in ~/.observer/config.toml.
The proxy is a plaintext HTTP reverse proxy on 127.0.0.1:8820. It receives your AI tool's request, parses the usage envelope from the upstream's response for accurate token counts, and forwards everything else verbatim. Your API key passes through in the Authorization header to the upstream provider — Observer never stores it. Skip the proxy entirely if you want; the JSONL adapters give you 90% of the data, just with less precision on tokens.
No — they're separate products under the same brand. SuperBased Desktop gives AI eyes and hands on your screen (capture, annotate, drive). Observer watches what your AI tools are doing in your repo (cost, waste, compression). They share zero data and run independently. Use either, or both.
Yes. The local binary is Apache 2.0 and free forever. No paid tier exists today. If we ship managed multi-developer rollups in the future, the local binary stays free; the hosted product is an upgrade for teams that want cross-developer visibility.
Observer runs a redaction pipeline at the adapter boundary — before any session-log content lands in the SQLite store. API keys, tokens, passwords, connection strings, and PII patterns get replaced with placeholders. The optional [observer.secrets].extra_patterns config lets you add project-specific rules. Re-scrubbing is also applied to the proxy's pre-forward body when conversation compression is enabled.
Observer's init registers its 12-tool MCP server with every detected AI client. All tools query the same SQLite database — not the client's scoped slice. So when Claude Code runs go test, Cursor's get_last_test_result call returns Claude Code's output without re-running. When Cursor edits auth.ts, Codex's check_file_freshness("auth.ts") reflects the edit immediately. The unified DB is the cross-tool memory.
Migrations apply automatically on first run. For new columns or adapter behaviors that need historical re-population, observer backfill --all re-walks every session file and brings old rows up to current shape. The dashboard's Settings → Backfill tab surfaces every backfill mode as a click-to-run button.
SuperBased Observer watches what your AI tools cost. SuperBased Desktop + Headless give your AI tools eyes and hands on your screen — multi-region capture, voice dictation, and 72 MCP tools across capture / dictation / GUI automation. Same brand, different products. Run either, or both.
Three commands and a dashboard URL. No account. No telemetry. No catch.