choosekit
Library and MCP server that scores a fixed set of choices with a model you already run (llama.cpp, Ollama, OpenRouter).
Overview
choosekit brings a Jev-style typed decision interface to general models. It scores a finite set of choices using the model's conditional log probabilities at the token branches that distinguish them, and returns a typed decision with a probability distribution, from text or images, through llama.cpp, Ollama or OpenRouter. It targets agent needs like approving or rejecting an action, routing a message, selecting the next tool, classifying evidence or choosing a legal move.
It ships as an npm library and a choosekit-mcp package exposing the same choice as one read-only MCP tool. The README includes a SuperGPQA table of accuracy, cost per 1,000 decisions and throughput across many models, with Jev 1.13 at 53.6% and $0.0244 per 1,000, and a comparison of local Qwen 3.8 27B with choosekit against Jev on SemIf's 144-case benchmark, noting results are specific to that benchmark. It is independent of TypeSafe.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which of these known options should the agent pick (approve/reject, route, next tool, legal move)? | — |
How it works
- Define options
- choosekit computes log probabilities at distinguishing token branches
- Return the choice and distribution
- Use from code or via the MCP tool
Strengths
- Uses models you already run
- Text and image input
- Benchmarks with cost and throughput
Caveats
- Quality depends on the base model
- Benchmark results are task-specific
Getting started
npm install choosekit (MCP: npm install --global choosekit-mcp)At a glance
- Type
- Library
- Status
- beta
- Language
- TypeScript
- Runtime
- library + MCP server
- Has code
- yes
- License
- Apache-2.0
Use cases and integrations
How curated lists describe it
Scores a finite set of choices against a model you already run and returns a typed decision with a probability distribution, from text or images. Backends for llama.cpp, Ollama and OpenRouter, and a `choosekit-mcp` package exposing the same choice as one read-only MCP tool.
MrJev/awesome-jev
Frequently asked questions
Does it need Jev?
No, it scores choices with your own model; Jev appears only in comparisons.
Which backends?
llama.cpp, Ollama and OpenRouter.
Is there an MCP server?
Yes, choosekit-mcp exposes one read-only tool.
Related projects
llama.cpp-based C++ server that turns any LLM into a System One decision model, reading answers from next-token logits.
ProjectbetaC++Python library that imitates Jev-style typed decisions (choice, score, yes/no) on local LLMs via Ollama, vLLM or llama.cpp.
ProjectprototypePythonMLX library that turns an existing local model into a decision engine by reading candidate logits, with no fine-tuning, on Apple Silicon.
ProjectprototypePythonTurns any local LLM into a Jev-style engine via masked-logit softmax, or proxies OpenAI-compatible APIs or Jev; includes a chat crush radar.
ServiceprototypePythonLocal server (xks) implementing Jev's /v1/systemone contract on an open-weight LLM, accelerated with Xeon Phi cards.
ProjectresearchRustEducational C11 library and CLI that turns DiffusionGemma 26B into a CPU-first OpenJev-style decision engine reading candidate logits.
ProjectresearchC