One proxy under every coding agent you run.
I built this because I had four agents running and no idea which one was burning the money. Probe0 is a local proxy, so everything your CLIs send goes through it first. From there it can hand cheap work to a model you already run, reuse answers it has seen before, stop a run at a number you pick, and keep the receipts.
- claude-code · 41822sonnet-4.6 · $0.0732sonnet-4.618.4k / 1.2k2.9s$0.0732Upstream
- codex · 41903qwen3:8b · local · $0.0000qwen3:8b · local6.1k / 8400.8s$0.0000Local
- cursor · 41940haiku-4.5 · $0.0000haiku-4.52.2k / 1900.00s$0.0000Cache hit
- claude-code · 41847sonnet-4.6 · $0.0000sonnet-4.618.4k / 1.2k0.01s$0.0000Coalesced
- claude-code · 42011opus-4.7 · blockedopus-4.7--blockedCapped
1proxy slot
Your machine only has one, and every tool here wants it. So you pick an inspector or a cache or a router, and live without the rest.
$47Kin three days
What one team ran up leaving agents going over a weekend. Plenty of tools would have caught it, but none were in the request path.
96%already cached
Of a coding agent's prompt tokens already come back from the provider's cache. That caps what more caching can win, so the rest is routing.
Four things happen between your agent and the invoice
It sits underneath the tools you already run, so there's nothing to remember to invoke. Any stage here can be switched off.
- 01
Intercept
A local proxy plus a certificate you install once. After that every agent CLI on the machine goes through it, Claude Code and Codex and Cursor included, and you don't have per-tool config drifting out of sync.
- 02
Route
Every request gets a decision. Summarising, classification, short completions, the boring stuff can go to whatever you're running in Ollama or LM Studio, while the real work stays on the frontier model. If a local answer comes back weak it gets retried upstream and you never see it.
- 03
Reuse
Requests you've already made come back from a local cache instead of the network, and calls fired at the same moment collapse into one. Both are on by default and both tell you what they saved.
- 04
Account
Every call gets written down: model, tokens, real cost, latency, which process made it. There's also a hard cap that pauses things before a run gets away from you.
Every part of it is a switch
Owning the proxy slot only matters if you can change what runs in it. Each one reports what it actually saved, and anything not worth its latency comes off.
Send fewer tokens
- Strip Compression
- Cuts the uncached tail of the prompt to a budget you set.
- Caveman
- Strips articles, copulas and hedges word by word.
Send them somewhere cheaper
- Local Routing
- Whole classes of work go to a model you already run. Weak answers retry upstream.
- Cloud Routing
- Simple turns drop a rung to a cheaper model in the same family.
- Model Tiering
- Cheap model first, expensive one only when the work needs it.
Don't send them at all
- Exact Cache
- Repeats answered from local disk. Never touch the network.
- Semantic Cache
- Close matches from a local vector index, strict floor.
- Request Coalescing
- Simultaneous identical calls collapse into one upstream.
Know what it cost
- Spend Guard
- A hard cap per run or per day. Warns, then pauses.
- Recording
- Every call, which agent made it, and cost math you can check line by line.
Caching only helps the second time
Compression works on the first. That 65% is one feature on its own. They stack, and they stack on top of routing and the caches underneath them.
- Strip Compression~65% fewer tokens
- Drops low-information lines from the part of the prompt your provider isn't already caching. How hard it cuts scales with how much there is to cut.
- CavemanStrips grammar
- Removes articles, copulas and hedges word by word. “The file needs to be updated” becomes “file needs update”.
One slot, open to everyone
Long term I'd rather this be the layer other people build on than a fixed list of features I happened to pick.
- Only one thing can hold the slot
- Your machine has one proxy position and everything wants it. Running an inspector and a cache and a router at once isn't possible, so today you pick one and give up whatever the others were good at.
- So the slot should be programmable
- Probe0 takes the position and then opens the pipeline up. A module is a function that sees a request and decides what happens to it next, through the same interface the built-in ones use.
- It declares what it needs
- A module says up front what it wants: read metadata, rewrite a body, reach the network. It runs sandboxed with nothing else available, and you approve that list when you install it.
- Reviewed before it gets listed
- Anything published gets reviewed first. The sandbox is what makes that review tractable, since I only have to check the capabilities a module asked for.
The cheapest call is the one that never leaves
Plenty of agent work doesn't need a frontier model, and Probe0 is sitting in the right place to tell the difference.
- Your models, your hardware
- Point Probe0 at a model you're already running in Ollama or LM Studio and it becomes another tier. It checks the connection with a real round trip before it routes anything there.
- Or a cheaper cloud model
- Not everything that doesn't need the frontier model belongs on a laptop. Simple turns can drop a rung to a cheaper model in the same family instead, which keeps a real model on the problem. Anything carrying tool calls takes the conservative step, never the aggressive one.
- You set the share, not a rule
- Both routes are a dial: what fraction of your own traffic may take the cheaper path. It's a share of what you actually do, so it keeps meaning the same thing when your work changes.
- Nothing is relayed
- The proxy, the ledger and the cache all run on your machine, writing to your own disk. I don't run a server for them to phone home to.
The month you didn't need that plan
Probe0 knows what you actually used, so it can tell you when you're paying for a tier above the one you need. That's usually worth more than any cache will ever save you, and it's not something your provider has any reason to mention.
It works the other way round too. If you're hitting limits every week it'll say so, rather than leaving you to guess.
- Requests recorded
- 12,408
- Billed to provider
- $96.20
- Duplicate calls collapsed
- 1,842
- Answered from cache
- 2,317
- Current plan
- Max 20x · $200
- What you actually used
- 48% of it
You could drop to the tier below. Based on 30 days of real use, not a guess.
Try it on your own agents
Probe0 is in private beta on macOS. You install it, point your shell at it, and it starts keeping track the next time an agent runs. Nothing you run through it gets uploaded.