Skip to content

choosekit

Library and MCP server that scores a fixed set of choices with a model you already run (llama.cpp, Ollama, OpenRouter).

LibrarybetaApache-2.0

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

TypeQuestionAnswers
ChoiceWhich of these known options should the agent pick (approve/reject, route, next tool, legal move)?—

How it works

  1. Define options
  2. choosekit computes log probabilities at distinguishing token branches
  3. Return the choice and distribution
  4. 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.

    ProjectprototypePython
  • MLX library that turns an existing local model into a decision engine by reading candidate logits, with no fine-tuning, on Apple Silicon.

    ProjectprototypePython
  • Turns any local LLM into a Jev-style engine via masked-logit softmax, or proxies OpenAI-compatible APIs or Jev; includes a chat crush radar.

    ServiceprototypePython
  • Local server (xks) implementing Jev's /v1/systemone contract on an open-weight LLM, accelerated with Xeon Phi cards.

    ProjectresearchRust
  • Educational C11 library and CLI that turns DiffusionGemma 26B into a CPU-first OpenJev-style decision engine reading candidate logits.

    ProjectresearchC