Features Agents Observer Pricing Developers Download Free
SuperBased Observer · Free & Open Source

See what your AI tools are actually costing you.

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.

npm @superbased/observer Apache 2.0 · Open source

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.

Your AI provider's billing dashboard tells you how much. Not what or why.

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.

$"Where did this $147 Claude bill come from?"

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.

"How much did I waste re-reading files?"

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.

"Could that Opus session have been Sonnet?"

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.

"Are Claude Code and Cursor stepping on each other?"

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.

Six tiles, one trend chart, every dollar accounted for.

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.

http://127.0.0.1:8081 — Analysis
Period spend
$147.32
▲ +18.4% vs prior 30d
MTD vs budget
$98 / $100
Projection: $112 by 5/31
Effective $/1M tok
$4.71
Cache hit: 62.3%
Long-context surcharge
$22.18
14 turns repriced at 2× tier
Cache efficacy
62.3%
cache_read / total input
Discovery waste
~$8.40
312 stale re-reads · 18 repeated cmds
# 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

Four layers. One unified database.

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.

Cost intelligence

Per-message token cost computed correctly — including the long-context tier traps that the JSONL adapters can't always disambiguate.

  • LC-tier-aware pricing for Sonnet 4 / 4.5 (>200K), GPT-5.4 / 5.5 (>272K), Gemini 2.5 / 3.1 Pro (>200K)
  • Anthropic prompt-caching: 5m vs 1h ephemeral tier billing
  • Period-over-period movers — top 5 increases, decreases, new entrants
  • Routing-efficiency suggestions with $ deltas

Waste detection

The Discovery tab surfaces what's costing you with a $ estimate per offender. Token-priced, deduplicated, ranked.

  • Stale re-reads — files re-read after they changed within the same session
  • Repeated commands — same command run with no relevant input changed
  • Cross-tool overlap — files touched by 2+ AI clients
  • Native vs Bash split — see how much is real tool-use vs shell

Conversation compression

Optional pre-forward proxy that rewrites large tool_result blocks before they hit Anthropic / OpenAI. Importance-scored. Prefix-stable for cache alignment.

  • Per-type compressors — JSON / logs / text / diff / HTML / code
  • Importance-scored message dropping with searchable marker
  • Cache-control breakpoints re-aligned to the new prefix
  • Bytes saved + tokens saved + dollars saved on the Compression tab

Cross-tool MCP

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 compaction
  • search_past_outputs — FTS5 across every captured tool output
  • get_failure_context — error correlation + retry detection

Three commands. Then you're seeing your bill.

Pure Go binary — no CGO, no external services, no Docker. SQLite via modernc.org/sqlite. Works identically on Windows, macOS, and Linux.

1

Install the binary

Pinned npm install (recommended) or build from source with go install.

$ npm install -g @superbased/observer

Pinned, platform-aware. View on npm →

2

Register hooks + MCP with every AI tool you use

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
3

Start the watcher + dashboard + (optional) proxy

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
+

For accurate token counts (recommended)

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"

Every adapter, one normalized schema.

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.

CC
Claude Code
JSONL + hooks + proxy
CX
Cursor
hooks + proxy
CD
OpenAI Codex
rollouts + proxy
CL
Cline / Roo Code
VS Code data dir
CP
GitHub Copilot
JSONL adapter
OC
OpenCode
native + proxy
OW
OpenClaw
action types
PI
Pi
message ids
Local only. Zero network calls of its own.
Apache 2.0. Single Go binary, public source.
Secrets scrubbed. Redaction runs at the adapter boundary.
Hooks exit 0. Never blocks your AI tool.

Common questions, answered honestly.

How is this different from my AI provider's billing dashboard?

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).

Does Observer modify my AI tool's behavior?

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.

What about the proxy — does it touch my API keys?

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.

Is this the same as SuperBased Desktop?

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.

Is it really free?

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.

What about secrets in my AI tool's session logs?

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.

How does cross-tool MCP sharing actually work?

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.

What happens when I upgrade Observer and the schema changes?

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.

Ready to see your bill line by line?

Three commands and a dashboard URL. No account. No telemetry. No catch.