Probe0 vs Jan

Jan is a desktop application that runs models on your machine and gives you a chat window over them. Probe0 sits under the coding agent CLIs you already run and controls where their traffic goes, what it costs, and what gets logged.

An open-source desktop app from Menlo Research that runs local GGUF models through llama.cpp behind a chat UI, with an OpenAI-compatible server on localhost and bring-your-own-key bridges to cloud providers.

FeatureProbe0JanEdge
What you installLocal proxy plus one certificate; agents keep their own configDesktop app with a chat UI and model managerEven
Runs the model itselfNo. Routes to Ollama or LM Studio, or to the cloudYes. Bundles llama.cpp, MLX on Apple Silicon, CUDA, VulkanCompetitor
Setup for Claude Code, Codex and CursorOne proxy, one certificate, all three covered, no per-tool setupPoint each tool at the localhost OpenAI-compatible server yourselfProbe0
Spend limitsHard cap per run and per day: warns, then pausesNone. Cloud keys are unmetered by JanProbe0
Cost and usage recordsPer-request ledger: model, tokens, real cost, latency, calling processNo usage or cost dashboard in the desktop appProbe0
Response cachingExact cache on local disk plus a semantic cache with a strict similarity floorInference KV cache settings only, no response cacheProbe0
Repeat work that skips the networkExact hits served from disk; identical in-flight calls collapse into oneEvery prompt re-runs inferenceProbe0
Routing decisionsCheap model first, local model when one is loaded, weak answers retried on the cloudManual model choice, plus llama.cpp router presets for which local model servesProbe0
Tells you if your plan tier is wrongYes, from the recorded ledger of what you actually usedNo usage record to base that onProbe0

Jan owns its inference stack and Probe0 never will: it bundles llama.cpp, detects your hardware, and on Apple Silicon uses MLX rather than the slower Metal path. What it does not do is tell you what your coding agents cost, and that is the bill most developers are actually worried about. Probe0 installs one local proxy and one certificate, after which Claude Code, Codex and Cursor all route through it with nothing edited per tool. Spend Guard puts a hard cap on a run and on a day, warns, then pauses the run rather than mailing you an alert after the money is gone. Recording writes every request down with the model, token counts, real cost, latency and the process that made the call, so when I say a tier is wrong for you it comes from your ledger rather than a guess. No Probe0 server exists, so none of that leaves the machine.

The two products sit at different layers, which is the part most comparisons get wrong. Jan is the client and the server: you open Jan, you type in Jan, and Jan answers. Probe0 has no chat window at all. It intercepts what the coding agent CLIs already send. Jan can serve those same agents through its OpenAI-compatible endpoint on localhost:1337, but you point each tool at it yourself, and once a tool is pointed there you have swapped which model answers without gaining any control over what the traffic costs. Probe0 keeps the control: Local Routing sends work to a model already loaded in Ollama or LM Studio and retries weak answers on the cloud, Model Tiering tries the cheap model first, and every module switches off on its own and reports what it saved, so the numbers are auditable instead of a headline.

Cost control is where Jan's own ecosystem admits the gap. Paste a cloud API key into a Jan provider slot and nothing meters it; third-party guides tell Jan users to put a gateway such as LiteLLM or Cloudflare AI Gateway in front of the provider to get spend visibility. Probe0 is that piece, built for one developer's machine rather than for an org, and the caching is written for agents specifically. Exact Cache hits are served from local disk and never touch the network. Semantic Cache holds a strict similarity floor and refuses to match anything carrying tool calls, because a wrong hit in the middle of an agent run corrupts the run. Request Coalescing folds simultaneous identical calls into one upstream request. Sign-in is Google or GitHub with no password, and the ledger, the cache and the models stay on your disk.

The verdict

If your money goes through AI coding agents on a Mac, install Probe0. It is the layer that caps the spend, records where it went per process, and cuts the repeat traffic before it bills, and nothing in Jan does any of that. Jan is the better pick in one case: you want a cross-platform chat app that runs models on your own hardware with source you can read, and cost is not the problem you are solving. The two also run together, Jan as the local inference server and Probe0 deciding when to use it, which is the setup I would run on a Mac.

Questions

Can I use Jan and Probe0 at the same time?
Yes, and that is a sensible setup. Jan runs and manages the local models, and Probe0 handles local LLM routing for your coding agents, sending work to a loaded model when one fits and falling back to the cloud when the answer looks weak.
Does Jan track how much my API spending costs?
The Jan desktop app does not. Cloud access is a bring-your-own-key setup with no metering, budget or cap, and Jan's own community commonly recommends putting an LLM proxy in front of the provider for cost visibility. Probe0 covers that with a per-request ledger and hard spend caps.
Is Probe0 open source like Jan?
No. Jan is Apache 2.0 and you can read the whole codebase; Probe0 is in private beta with sign-in via Google or GitHub. Probe0 still runs entirely on your machine and there is no Probe0 server, but Jan wins clearly on auditability.
Which one works with Claude Code and Codex?
Both can, differently. Jan exposes an OpenAI-compatible endpoint you point each tool at one by one. Probe0 installs as a local proxy plus a certificate, and every AI coding agent CLI on the machine routes through it for LLM cost control without per-tool configuration.

Get started

Switch from Jan to Probe0