neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
공개 벤치마크에서 Claude Sonnet 5보다 약 38% 저렴하고, 50개 과제 중 74%에서 동등하거나 더 우수함
Open source. In a public benchmark, about 38% cheaper than Claude Sonnet 5 on equal footing and as good or better in 74% of 50 tasks it had never seen. It gives each task to the cheapest model that do
개발 도구Python · HTMLGitHub @cintocasals온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Frontier prices only for frontier work: each task goes to the cheapest model that does it well, a request is split only when that pays, and every result is checked. Decisions by Jev.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Frontier prices only for frontier work.
Taskpenny splits a request only when it expects splitting to pay, gives each task to the cheapest model that does
it well, checks every result, and shows you the receipt. Open source, Python, one command to try.
A real run replayed at 4x. Watch it in your browser: live demo
(no key, no cost). The saving on the page is the receipt's estimate against Claude Opus 5.5; the benchmark below
runs the models it compares with for real.README 전문 보기 ↗Frontier prices only for frontier work.
Taskpenny splits a request only when it expects splitting to pay, gives each task to the cheapest model that does it well, checks every result, and shows you the receipt. Open source, Python, one command to try.
A real run replayed at 4x. Watch it in your browser: live demo (no key, no cost). The saving on the page is the receipt's estimate against Claude Opus 5.5; the benchmark below runs the models it compares with for real.
On 50 English tasks Taskpenny had never seen (40 Arena-Hard prompts and 10 requests with four asks each), judged pair by pair by Gemini 3.1 Pro (full report):
| Against | Taskpenny's setup | Taskpenny cost | As good or better |
|---|---|---|---|
| Claude Sonnet 5 alone | Sonnet 5 as its strongest model, on equal footing (same worker instruction and reasoning cap) | 38% less (19 to 56) | 74% (62 to 86): 11 wins, 26 ties, 13 losses |
| Claude Opus 5.5 alone | the default | 78% less (66 to 86) | 50% (35 to 65): 1 win, 23 ties, 24 losses |
The ranges are 95% intervals: fifty tasks give a direction, not a precise figure. What they say:
Costs are the ones the gateway reported for each call, with Jev at its list price (it was billed in the Opus run and free before; the report has both). Each pair was judged twice with the order swapped, and a tie includes the pairs where the two orders disagreed. The judge prefers longer answers, and Taskpenny's workers are told to show the key steps while the baselines get no instruction; Taskpenny also caps hidden reasoning (off on tiers 1 and 2, low on tiers 3 and 4) while the baselines use each model's default, so part of the saving comes from that setting and not from routing. The control that gives the baseline both the same worker instruction and the same reasoning cap was run on 1 October 2026: on equal footing the saving is 38% (not 52.5%) and Taskpenny is as good or better in 74% (not 82%), which is the headline above. See the full report. The author also voted blind on 20 pairs (as good or better in 18, where the judge said 14), with limits the report spells out.
We publish where Taskpenny loses too: against Opus, in the first full run (only 13% cheaper than Sonnet 5), and in Catalan, our weakest set. It is all in the report.
pip install taskpenny
taskpenny demo # replays a real run in the terminal: no key, no cost
Then give it a key:
export AI_GATEWAY_API_KEY=... # one Vercel AI Gateway key: Jev decides, and it reaches Claude, GPT and Gemini
taskpenny run "Write a short email to move tomorrow's meeting to Thursday"
taskpenny ui # the live task tree in your browser
The Vercel key is required: every decision is Jev's, and Jev is reached through Vercel AI Gateway. Your own OpenAI, Anthropic or Gemini keys can be added next to it; see "Keys" below.
Every run is saved in runs/ as JSON. taskpenny export runs/<id>.json turns one into a Markdown report.
Who it is not for (yet): if every answer must match Claude Opus on hard prompts (see above), or if your calls are one short classification each, where a per-request router is enough. Tool calling, images and JSON mode are not supported yet; Taskpenny returns a clear error.
| Project | What it routes | What Taskpenny adds |
|---|---|---|
| RouteLLM, OpenRouter Auto, Not Diamond, LiteLLM's auto router | A whole request, to one model | It can split a request when the parts go to cheaper models, and Jev checks every result before the answer goes out |
| ROMA | Subtasks, recursively, with a model set for each module | Jev picks the tier of every subtask and the cheapest model of that tier does it; a plan is dropped when splitting would not pay |
| JevRouter | The steps of a plan, with Jev deciding | Taskpenny also does the work, checks it and gives you the cost receipt |
From each project's own README and docs, September 2026. All of them are good at what they do, several report what each request cost, and several can sit next to Taskpenny: it speaks the OpenAI API.
request
|
v
[gate] Jev: split it? which tier (1-4)? what kind of work? what form of answer?
| |
| clearly worth splitting | one task
v v
[planner] subtasks with prompt, [router] closed question -> Jev answers it
success criteria and anything else -> cheapest model of the tier
dependencies; each one goes |
back to the gate v
| [worker] result + notes for the tasks that depend on it
| |
| v
| [check] Jev: does it meet the criteria?
| no -> repair, then one tier up (at most 2)
v
[assembly] an outline from a cheap model; the parts are stitched in, not rewritten
|
v
[final check] Jev against the request; only what is missing gets written
|
v
answer + cost receipt + full task tree
Every decision is a closed question (split or not, which tier, is this good enough), and closed questions are what Jev, TypeSafe AI's decision model, answers well and cheaply. When a request, or a part of a plan, is itself a closed question about texts it gives (label these messages, yes or no for each email, rate each ticket), Jev answers it item by item; the cheapest model only writes the question, and answers the items Jev is unsure about. Jev does not solve problems: maths, code and quiz questions always go to a language model.
Splitting uses more tokens in total. The saving is in money: 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 (5 of 11 plans in the Sonnet-ceiling run on the 50 new tasks). Details, thresholds and fallbacks: docs/how-it-works.md. Every option and variable: docs/configuration.md.
taskpenny serve starts an OpenAI-compatible endpoint on http://127.0.0.1:8765/v1, with the live page on the
same address. Change only the base URL:
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8765/v1", api_key="unused", max_retries=0) # each call is a paid run
reply = client.chat.completions.create(
model="taskpenny", # or "taskpenny/anthropic" to use only Claude models
messages=[{"role": "user", "content": "Draft a polite reminder for an unpaid invoice."}],
)
print(reply.choices[0].message.content)
print(reply.model_extra["taskpenny"]) # run id, status, warnings, cost in USD, baseline estimate, saving
runs/ and visible live on the page while it works.stream: true works, but the answer arrives in one piece at the end: Taskpenny checks the work before answering.
The headers and a keep-alive line go out at once.taskpenny.status says done, unverified (complete, but a check did not pass or
could not run) or partial (stopped early, finish_reason: "length"), with the reasons in taskpenny.warnings;
a run with no answer is an HTTP 502 error.max_retries=0 in your client, or send an Idempotency-Key header so a retry
gets the first run's answer. A client that disconnects without that header cancels its run.TASKPENNY_CEILING=anthropic/claude-sonnet-5 makes the model you use today the strongest one Taskpenny may use."taskpenny": {"max_cost": 0.2, "no_split": true} in the body, or the header X-Taskpenny-Max-Cost.TASKPENNY_API_KEY
(openssl rand -hex 24) and put an https proxy in front: then the API and the page need the key (the page asks
for it once). A request's budget is a ceiling, and it can ask for at most TASKPENNY_MAX_COST (2 USD by default).docker compose up # page and API on http://127.0.0.1:8765
# or: docker build -t taskpenny . && docker run -p 127.0.0.1:8765:8765 -e AI_GATEWAY_API_KEY taskpenny
Keys come from your environment and are never written into the image. Runs are kept in the taskpenny-runs
volume.
| You set | What Taskpenny does |
|---|---|
AI_GATEWAY_API_KEY (required) | Jev decides every step and every model is reached through Vercel AI Gateway, with the real cost of every call. |
That, plus TASKPENNY_DIRECT=anthropic,openai and those providers' keys | Those providers' models go straight to their own API; everything else, Jev included, through Vercel. |
That, plus TASKPENNY_LOCAL | Basic tasks go first to a free local model (below). |
Without the Vercel key there is no real run: Taskpenny tells you so, and taskpenny demo and --dry-run still
work. taskpenny doctor shows what your keys reach and whether each model name exists on its provider's API,
without spending tokens.
With Ollama running, basic tasks can run on your machine at no cost:
ollama pull qwen3:4b
export TASKPENNY_LOCAL=qwen3:4b # tier 1 goes local; "qwen3:8b@2" also covers tier 2; "auto" = all installed
Jev still checks every result. A weak answer is first repaired by the same local model, then moves one tier up, where a cloud model does it unless a local model covers that tier too. Use a model of at least 3 to 4 billion parameters: tiny ones answer fast but badly.
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, run files or logs; set the server's own key
with TASKPENNY_API_KEY too, since a key on the command line shows in the process list. Saved runs contain your
requests and answers. The page loads nothing from other sites (its fonts come with it). See
SECURITY.md.
With Jev at its list price. The report also has the figures with Jev free, as it was during the run.
| What Taskpenny did | Tasks | Taskpenny cost | As good or better |
|---|---|---|---|
| Basic and standard tasks, one cheap model | 103 | 92% less | 76% |
| Of those, labelling customer messages (true labels) | 10 | 95% less | same accuracy, 96 of 100 |
| Advanced tasks, one model | 16 | 11% less | 69% |
| Critical tasks, sent to Claude Opus | 8 | 2.0x as much | 100% |
| Requests split into parts | 15 | 2.2x as much | 73% |
| All | 142 | 13% less | 76% |
That run is why the ceiling and the "split only when it pays" rule exist. The 50 new tasks above were run after both changes. Method, raw data and how to rerun it: bench/public.
Can you trust an LLM judge? It is from a third provider, compares each pair twice in both orders, and counts
a tie when the two orders disagree. It does like longer answers: many of Taskpenny's losses on basic tasks were
short, correct answers against longer ones. You can rerun the benchmark with your own judge, or give the baseline
Taskpenny's own worker instruction (--baseline-system worker) to see how much that matters.
Do I need Vercel? Yes. Every decision in Taskpenny is Jev's, and Jev is only reached through Vercel AI Gateway. Earlier versions let a small language model stand in for Jev; it made decisions that cost more and were never measured for accuracy, so it is gone. Your own provider keys still work next to the Vercel key.
Why Jev? Every decision Taskpenny makes is a closed question. Jev answers those with a probability and a confidence, costs about 4 cents per thousand decisions at list price (about 1,000 tokens each in our benchmark), and never writes text.
What if Jev changes? The development cases (bench/run_dev.py) show quickly whether its decisions moved, and
the thresholds that use them are in one place (Settings in decider.py).
Adding a model is a few lines in models.yaml.
Translations of the page and good first issues: CONTRIBUTING.md
and docs/good-first-issues.md.
If Taskpenny saves you money, a star helps other people find it.
The code is MIT. The benchmark's task texts keep their own licences (Apache 2.0, CC BY-SA 3.0, CC BY 4.0): see bench/public/LICENSES.md. Made by Cinto Casals · SerIA Nativa.