surface
What AI runs here, and what it costs.
One binary, one local scan, no account. It reads the transcripts, history and config already on your disk, then tells you what runs here and what it cost.
Every release ships SHA256SUMS, and the installer checks the download against it
before it moves anything. All the ways in.
Why surface
AI tooling arrives one install at a time — an agent in ~/.local/bin, an
assistant in /Applications, an extension in a .vscode directory, a browser
tab doing the rest. None of it is written down. Neither is the bill: the tokens
are spent here, but the invoice arrives monthly, aggregated, detached from the
work that caused it.
surface answers both from local files only. It reads the transcripts your tools already write and the history databases already on disk, then prices them against LiteLLM's public rate table. No daemon, no account, no telemetry — one optional request, for prices.
It is narrow on purpose: no message content, no URLs, no paths. The
AI-domain filter runs inside SQLite, so the rest of your browsing never reaches
memory, and working directories become owner/name before anything is stored.
Privacy has the full list.
What is inside
Installation
cargo install, a prebuilt binary, or a build with no C toolchain at all.
Quickstart
First scan, first dashboard, and what the first run costs you in time.
Core concepts
The scan, the ledger, the price table and the repo attribution — five ideas.
The dashboard
Five views, every key, and what each column actually measures.
Costs
Where the money figures come from, and the four ways they can be wrong.
Privacy
What is read, what is stored, what is never touched, and what is unreadable.
Quickstart
That is the whole setup — no config file, no login. To pipe the same scan into something else:
At a glance
| Binary | ~2 MB, static, no runtime dependencies |
| Warm scan | ~400 ms — 6 ms tools, 330 ms browser history, 50 ms transcripts |
| Cold scan | ~19 s once, reading 900 MB of transcripts; ~50 ms thereafter |
| Coverage | 18 AI tools · 30 AI domains · 10 browsers · 3 token sources |
| Platforms | macOS, Linux, Windows — x86-64 and arm64 |
| Privilege | Runs unprivileged. Never elevates, never prompts |
| Network | One optional request, for model prices. --offline skips it |
New here?
Start with Installation, then the
Quickstart. If you want to know why a
number says ≥ or unpriced before you trust it, read
Core concepts and then
Costs.