Spots filling up

Set a cap.
Kill the call.

Built for founders and engineers who’d rather ship than watch a session counter. Neat blocks the request before it leaves your machine. No cloud. No API keys. No prompts stored.

Claude Code & Codex · Local-first · Metadata only

How it works

One command in front of your agent.

Neat is a local proxy. It sits between your coding tool and the provider, relays your existing login, and reads only the metadata as requests pass through — so it can show you the spend and stop it before it leaves your machine.

1

Connect, keyless

One command points your tool at Neat and relays your own Claude Code or Codex login. No API key changes hands — nothing to vault or rotate.

2

It reads the metadata

Every call flows through localhost:4000byte-for-byte. Neat parses model, tokens, cache and cost — never the prompt, the response, or your code.

3

See it, then cap it

A live local dashboard shows spend, sessions and hidden cost. Set a budget and an over-budget call is blocked before it ever reaches the provider.

Claude Code · Codex──▶Neat · :4000──▶Anthropic · OpenAI
└──▶SQLite · metadata only

The request body is forwarded untouched. Only model, token counts and an estimated cost are written down — locally, bound to 127.0.0.1.

What you get

Spend control, not another dashboard to babysit.

Visibility

Hidden cost, surfaced

The cache-write tax on Claude’s first turn and Codex’s invisible reasoning tokens — the spend a plain session counter never shows you — broken out per request and per session.

Control

Budgets that actually block

Per-session caps on dollars, requests, tokens or requests-per-minute, plus a model denylist. Over budget? The call is stopped before it is sent — your tool gets a clean error and you spend $0.

Privacy

Keyless and local by default

Neat relays your own login, so there is no key to hand over. It stores metadata only, in a SQLite file on your machine. Prompts, responses, code and credentials never reach its logs or disk.

Coverage

Claude Code and Codex

One proxy for both. Codex auto-detects how it is signed in: an API key routes through Neat for full tracking; a ChatGPT login streams usage telemetry instead.

Advice · opt-in

Right-size every call

Turn on Suggestions and a cheap model grades each turn — over- or under-powered, the cheaper model that would have done the job, and the dollars a reroute would have saved.

Flow

Pause, resume, stay out of the way

Flip tracking off and back on from the dashboard — no tool restart, the tool keeps working. Live updates over the wire, dark or light.

FAQ

The questions everyone asks first.

Do you store my prompts or code?

No. Neat records metadata only— model, token counts, cost, timings, status. Prompt text, responses, code and credentials never touch its logs or database; a privacy layer and disk-scan tests enforce it.

Do I have to give Neat an API key?

No. It relays your existing Claude Code / Codex login unchanged — keyless passthrough. The only optional key powers the advisory Suggestions feature; it is stored locally and sent only to the model that grades your turns.

Can it actually block spend, or just watch it?

It blocks. Budget policies are checked before the request leaves your machine. An over-budget or denied-model call is stopped, no upstream call is made, and your tool gets a clean provider-shaped error instead of a crash.

Does it work with Codex and Cursor?

Yes for Codex: the Codex CLI routes through Neat — an API-key login is tracked in full, a ChatGPT login streams usage telemetry. Cursoris different — its built-in AI runs in Cursor’s own cloud, so it can’t be intercepted locally and isn’t supported in this MVP.

Is the cost my real provider bill?

It’s an estimatefrom a configurable price table, shown with confidence labels — a close guide, not your invoice. Reconcile against provider billing for the exact number.

What happens if Neat isn’t running?

Today the proxy sits in the path, so if you stop the daemon your tool can’t reach the provider until it’s back. A fail-open relay — pass traffic through untracked when Neat is down — is on the roadmap.

Where does my data live, and Windows?

In a local SQLite file under ~/.guardrail, bound to localhost — nothing is uploaded. It runs on macOS and Linux today, and on Windows via WSL2 while a native build is in progress.

Stop watching the session counter.

Join the waitlist — we’ll send your link when it’s your turn.

Send me the link