Open source · MIT · Python
Frontier prices only for frontier work.
Taskpenny splits a request only when splitting pays, gives each task to the cheapest model that does it well, checks every result, and shows you the receipt.
About 38% cheaper than Claude Sonnet 5 on equal footing, and as good or better in 74% of 50 tasks it had never seen. How it was measured
pip install taskpenny
01 · Measured, not promised
Tested on 50 tasks it had never seen.
Fifty English tasks (40 Arena-Hard prompts and 10 requests with four asks each), judged pair by pair, twice with the order swapped, by a model from a third provider (Gemini 3.1 Pro). Costs are the ones the gateway reported for both sides, with Jev at its list price.
Against Claude Sonnet 5 alone · Sonnet 5 as Taskpenny's strongest model, on equal footing
38% cheaper
As good or better in 74% of the tasks (11 wins, 26 ties, 13 losses), with the same worker instruction and the same reasoning cap. 95% intervals: 19 to 56 for the saving, 62 to 86 for the quality.
Against Claude Opus 5.5 alone · default setup
78% cheaper
As good or better in 50% of the tasks (1 win, 23 ties, 24 losses; 48 compared, as Opus gave no answer on two). 95% intervals: 66 to 86 for the saving, 35 to 65 for the quality.
- Sonnet-class answers for much less, on equal footing. Basic and standard tasks cost 88% less than Sonnet 5, and were as good or better in 77% of them.
- Labelling customer messages (first benchmark): 95% cheaper than Sonnet 5, with the same accuracy (96 of 100 right on both sides, against the true labels).
Fifty tasks give a direction, not a precise figure. Method, raw data and how to rerun it: the full report.
Where it loses
- Against Opus on hard prompts. Taskpenny saves most of an Opus bill, but its cheap tiers were judged worse than Opus about half the time; critical tasks go to Opus itself and tied. If every answer must match Opus, Taskpenny is not there yet.
- The first full run. On 142 tasks against Sonnet 5, before the ceiling and the “split only when it pays” rule existed, Taskpenny was only 13% cheaper: critical tasks went to Claude Opus, a dearer model, and splitting did not pay at advanced level.
- Catalan. Our weakest set: in that first run, as good or better in 43% of 14 Catalan tasks.
- The judge likes long answers. Many of Taskpenny's losses on basic tasks were short, correct answers against longer ones, and Taskpenny's workers are told to show the key steps while the baselines get no instruction; Taskpenny also caps hidden reasoning (off on the two cheapest tiers, low on the other two) while the baselines use each model's default, so part of the saving came from that setting and not from routing. The equal-footing control gives the baseline both the same instruction and the same reasoning cap: that is why the headline is about 38% cheaper and as good or better in 74%, not 52.5% and 82%. The author also voted blind on 20 pairs and rated Taskpenny as good or better in 18, where the judge said 14; twenty votes from one person are too few to correct the judge, so the figures are the judge's.
02 · How it works
Four steps, and every one is on the receipt.
- 01
Decide
Jev, TypeSafe AI's decision model, answers closed questions: should this request be split, which tier from 1 (basic) to 4 (critical) each part needs, and what form the answer should take.
- 02
Route
Each task goes to the cheapest model of its tier. When a task is itself a choice (an option, a yes or no, a score), Jev answers it directly, with no language model.
- 03
Check
Jev checks every result against the task's success criteria. A weak answer is repaired first, then moved up one tier, at most twice.
- 04
Receipt
The parts are stitched into one answer and checked against the request once more. You get the answer, the full task tree and what every step cost.
Splitting uses more tokens in total. The saving is in money, because most tokens go to models that cost a fraction of a frontier model, and Taskpenny drops a plan when the parts would not go to clearly cheaper models: it dropped 5 of 11 plans in those 50 new tasks.
03 · Download and install
Free to download. You pay only for the models you use.
Taskpenny is free and open source, under the MIT license: no account, no subscription, and nothing added to what your model calls cost. It runs on your computer, and you pay the models with your own key.
With pip
For Python 3.10 or newer, on your computer or a server.
pip install taskpenny
From GitHub
The source code, the docs and the benchmark. You can read the code, change it or run it with Docker.
Download from GitHubHow to install it, in four steps
Check that you have Python
Taskpenny needs Python 3.10 or newer. If you do not have it, get it from python.org.
python3 --versionInstall it and try it, with no key
pip install taskpenny # replays a real run in your terminal: no key, no cost taskpenny demoAdd your key
Real requests need one Vercel AI Gateway key: every decision is Jev's, and Jev is reached through Vercel AI Gateway. The same key reaches Claude, GPT and Gemini, and your own OpenAI, Anthropic or Gemini keys can be added next to it.
export AI_GATEWAY_API_KEY=... # shows what your keys reach, without spending tokens taskpenny doctorSend it real requests
taskpenny run "Write a short email to move tomorrow's meeting to Thursday" # the live task tree in your browser taskpenny uiAnd
taskpenny servegives you an OpenAI-compatible endpoint, so any OpenAI client, or n8n, needs only a new base URL.
If you prefer Docker: in a copy of the repository, docker compose up starts the page and the API on your machine, at 127.0.0.1:8765.
04 · Who it is for
For people who send everything to one strong model.
It is for you if
- You send most of your requests to one strong model, and the bill grows with usage.
- Your requests mix easy and hard parts: a summary plus a decision, ten labels plus a reply, a plan plus copy.
- You want to see why each model was chosen and what each step cost.
Not for you yet if
- Every answer must match Claude Opus on hard prompts (see above).
- You need tool calling, images or JSON mode. They are not supported yet, and Taskpenny returns a clear error.
- Each of your calls is one short classification. A router that picks one model per request is enough.
05 · Compared
What the others do, and what Taskpenny adds.
| Project | What it routes | Who picks the model | Checks each result | Shows the work and the cost |
|---|---|---|---|---|
| RouteLLM | The whole request | A trained router | No | No |
| OpenRouter Auto | The whole request | A classifier | No | No |
| LiteLLM Auto Router | The whole request | Jev, rules or a language model | No | Cost or savings per request |
| ROMA | Each subtask, recursively | A fixed model per task type | An optional verifier | A tree in the terminal, no receipt |
| Taskpenny | Each subtask, only when splitting pays | Jev, for every task | Yes, every result | A live task tree and a cost receipt |
From each project's own README and docs, September 2026. All of them are good at what they do, and several can sit next to Taskpenny: it speaks the OpenAI API.
06 · Questions
Frequently asked questions.
Is it really free?
Yes. Taskpenny is open source under the MIT license: you can use it, at home or at work, and change it, with no account and no subscription. What you pay are the model calls, with your own key, and Taskpenny adds nothing to them. The demo on this site and taskpenny demo cost nothing.
What do I need to run it?
Python 3.10 or newer and, for real requests, a Vercel AI Gateway key. Every decision is Jev's, and Jev is only reached through Vercel AI Gateway; your own OpenAI, Anthropic or Gemini keys can be added next to it. taskpenny doctor shows what your keys reach, without spending tokens.
Do my requests go through your servers?
No. Taskpenny runs on your computer and there is no server of ours in the middle. Your prompt goes to Jev and the models through Vercel AI Gateway, and to any provider you call directly. Keys are read from environment variables only and are never written to disk. Saved runs, with your requests and answers, stay in the runs/ folder on your machine.
Are the answers as good as my usual model's?
Against Claude Sonnet 5 on equal footing, as good or better in 74% of 50 tasks it had never seen, for about 38% less. Against Claude Opus 5.5, in 50%: if every answer must match Opus on hard prompts, Taskpenny is not there yet. The figures, and where it loses, are above.
Can I use it from the tools I already have?
Yes. taskpenny serve starts an OpenAI-compatible endpoint on your machine: change only the base URL in your OpenAI client, or in the OpenAI Chat Model node of n8n. Chat Completions and Responses both work.
Can I cap what it spends?
Yes. On the command line, every run has a budget of 0.50 USD unless you set another with --max-cost. Through the API, each request can set its own, up to TASKPENNY_MAX_COST (2 USD by default). And --ceiling sets the strongest model Taskpenny may use, for example the one you use today.
Can the models be free too?
In part. With Ollama running and TASKPENNY_LOCAL set, basic tasks go to a model on your own machine, at no cost. Jev still decides and checks every step, so the Vercel key is still needed.
Does it work in other languages?
It takes requests in any language the models understand. The benchmark above is in English. Catalan is our weakest set: in the first run, as good or better in 43% of 14 Catalan tasks.
What is Jev?
TypeSafe AI's decision model. It answers closed questions (split or not, which tier, is this good enough) with a probability and a confidence, and never writes text. Taskpenny asks it for every decision and every check.
If it saves you money, give it a star.
It helps other people who pay for language models find it.
Star on GitHub