promptrouter scores every coding task with a small local judge, keeps the tasks it rates easy on hardware you already own, and reaches for a cloud model only when the score crosses a threshold you set.
Three moving parts, one YAML file. The judge is small and local, so scoring a task adds no cloud cost.
A small model on Ollama scores each task on difficulty, typically in about a third of a second once it is warm. The scoring runs on your own machine, so it adds no cloud cost.
Score mode lets you set your own 0-100 thresholds and name each level; tier mode gives three fixed buckets. Either way each level is an ordered engine chain with fallbacks. You own the mapping.
Tasks that score below your threshold run on your local model with no cloud bill. Only the ones above it reach your cloud provider. route --stats shows your actual split.
Grab it however you like. Packages are built on every tagged release.
# drops the binary on your PATH
curl -fsSL https://raw.githubusercontent.com/taynotfound/promptrouter/main/install.sh | bash# build the package from the shipped PKGBUILD
git clone https://github.com/taynotfound/promptrouter
cd promptrouter/packaging/aur && makepkg -sisudo dpkg -i promptrouter_*_amd64.deb
sudo rpm -i promptrouter_*_amd64.rpm
nix run github:taynotfound/promptrouter
go install github.com/taynotfound/promptrouter/cmd/route@latest
route bench runs the real judge over a labeled task set and reports how often it agreed with the labels, plus per-call latency. Nothing here is hand-waved. These are the author's numbers on an RTX 2070, built-in 15-task set, and you can reproduce them.
| Judge model | Accuracy | Latency | Note |
|---|---|---|---|
| qwen2.5:7b-instruct | 93% | 0.32s | recommended default |
| qwen2.5:3b-instruct | 67% | 0.28s | weak on hard tasks |
| qwen2.5:1.5b-instruct | 60% | 0.26s | no faster, less accurate |
| llama3.2:1b | 33% | 0.34s | worse than guessing |
Accuracy is agreement with a hand-labeled set, not a measure of answer quality. It tells you the judge routes the way a human would, nothing more.
Smaller is not faster here. Below 7B the latency floor is inference warmup, not model size, so you lose accuracy for no real speed. 7B is the smallest judge that still routes reliably.
Bring your own tasks. route bench --set mine.json scores the judge on your workload, on your hardware.
The wizard picks your models, stores any tokens locked down, and writes the config for you.
You run local models. If you have Ollama and a GPU, promptrouter keeps the tasks it scores easy on your own machine and only spends money when a task clears the threshold you set.
Local first, by default. Most routers choose between cloud providers. promptrouter puts your own machine at the front of the chain, so the free path is the default and the cloud is the exception.
An interactive builder: pick a routing mode, wire local and cloud engines into fallback chains, choose a provider preset for the OpenAI-compatible kind, and copy or download a valid config. It runs entirely in your browser.