Open Jev reproductions beyond Ollama

Autor: Jakub Rusinowski · Ostatnia aktualizacja:

Ollama ships five decision models. The community has published about 70 open reproductions of Jev, and several score far higher on the Decision Index — Winnow-12B (50.0) fits a 16 GB card at Q8_0, and AutoJev-27B (56.4) comes within 1.5 points of Jev (57.9) but needs about 49 GiB for its BF16 weights. Almost all of them expose the same POST /v1/systemone request shape, so code you wrote against Ollama keeps working — you change the URL and port.

When to leave Ollama's decision models

Stay with nimble / tev1 if they're accurate enough on 50–100 of your own labelled examples. Move on when:

  • your questions are harder than routing — multi-step judgments, knowledge questions, long policies — where the Index gap between Nimble (39.6) and the leaders (50–57) shows up;
  • you need more than 26 options in a choice (Ollama's limit; Decider and Jev go to 255);
  • you need non-English input (Laya's multilingual router covers 100+ languages; most others are English-first);
  • you need images in the state (Ollama's clef and clef-flash accept images, and so do AutoJev, Intern-Decision and Winnow; Ollama's endpoint does not take them for nimble or tev1). See Decision models on images.

The shortlist

Only models with open weights, a permissive licence, and a documented local runtime made the cut. Decision Index 0.2.1 snapshot of 28 September 2026 (chance-corrected; 0 = random, 100 = perfect).

ModelIndexBaseWeights you runRuntimeLicence
AutoJev-27B56.4Qwen3.8-27B~49 GiB BF16autojev-serve (CUDA)Apache-2.0 weights, MIT code
Winnow-12B50.0Gemma 4 12B12.7 GB Q8_0 · 23.8 GB BF16 GGUFWinnow llama.cpp server (CUDA, Metal)Apache-2.0
Decider 35B-A3B (NVFP4)47.1Qwen3.5-35B-A3B19.6 GB NVFP4vLLM / TensorRT-LLM on BlackwellApache-2.0
Decider 4B40.7Qwen3.5-4B8.4 GB BF16decider Python package + serverApache-2.0
Winnow-E4B39.9Gemma 4 E4B8.0 GB Q8_0 GGUFWinnow llama.cpp serverApache-2.0
JevK538.8Qwen3.5-4B~9 GB BF16, or GGUF Q4_K_M/Q8_0jevk5-serve, or llama.cpp via JevK5-GGUFApache-2.0
Intern-Decision-4B37.8Qwen3.5-4BSafetensors (Transformers)InternLM reference codeApache-2.0
Decider 2B29.0Qwen3.5-2B3.8 GB BF16decider package + serverApache-2.0
Decider 0.8Bnot on the boardQwen3.5-0.8B1.4 GB BF16decider package + serverApache-2.0
Laya (EN + multilingual)6.0 ²ModernBERT-large / mmBERT421M / 322M paramspip install layaApache-2.0
Jev 1.13 (reference)57.9closedhosted onlyTypeSafe APIproprietary

² Laya is an encoder built for fast routing and guardrails in many languages, not a general reasoner — its Index score reflects that. It's on the list because nothing else covers 100+ languages locally.

Left off on purpose: the top-ranked Surogate Rune 26B-A4B (57.4) because its Hugging Face repo listed no GGUF file when we checked on 30 September; the JPT family because it is CC-BY-NC-4.0 (non-commercial); and every "inference technique" entry on the Index, because those are decoding methods applied to stock models rather than weights you download. We'll add Rune once its files are published.

Added in October 2026. Five more families now have pages, and Rune is among them: its weights are out, though the repo holds BF16 safetensors rather than the GGUF its name suggests, and it is gated. This table renders from each model's record, so it stays in step with the model pages. One licence note: Liquid AI's d1 models ship under the LFM Open License, which allows commercial use only below a company-revenue threshold, so they are not permissive in the sense the table above uses.

ModelIndexSmallest downloadRuns withInputsLicence
Rune 26B-A4B v357.4451.6 GB (BF16)surogate servetext, imageApache-2.0
OpenDecider-nano—790 MB (BF16)opendecider serve :8000textApache-2.0
OpenDecider-small—2.5 GB (Q4_K_M)opendecider serve :8000textApache-2.0
OpenDecider-small MLX 4-bit—2.26 GB (MLX 4-bit)opendecider (MLX)textApache-2.0
Bosun v3.1 0.6B14.32400 MB (Q4_K_M)jev-compatible-server :8000textApache-2.0
Bosun v3.1 1.7B20.11.26 GB (Q5_K_M)jev-compatible-server :8000textApache-2.0
d1-3B—6.25 GB (BF16)Transformers (trust_remote_code)text, imageLFM Open License v1.0
d1-omni-600M experimental—2.35 GB (F32)Transformers (trust_remote_code)text, image, audioLFM Open License v1.0
THX-01 322M provisional—640 MB (F16)thx01.server :8095textApache-2.0

Rendered from each model's record. "Index" is the community Decision Index score where the model is on the board; models scored only by their authors show "—" here, and their own benchmarks are on their pages.

ModelRuns withPublished sizeDecision Index 0.2.1
Bosun v3.1 0.6B
Hanno Labs
jev-compatible-server :8000400 MB (Q4_K_M)14.32
THX-01 322M
HAL-X AI
thx01.server :8095640 MB (F16)—
OpenDecider-nano
Manjunath Janardhan
opendecider serve :8000790 MB (BF16)—
Bosun v3.1 1.7B
Hanno Labs
jev-compatible-server :80001.26 GB (Q5_K_M)20.1
Decider 0.8B preview
Mapika
decider.serve1.4 GB (BF16)—
OpenDecider-small MLX 4-bit
Manjunath Janardhan
opendecider (MLX)2.26 GB (MLX 4-bit)—
d1-omni-600M
Liquid AI
Transformers (trust_remote_code)2.35 GB (F32)—
OpenDecider-small
Manjunath Janardhan
opendecider serve :80002.5 GB (Q4_K_M)—
Decider 2B
Mapika
decider.serve3.8 GB (BF16)28.97
d1-3B
Liquid AI
Transformers (trust_remote_code)6.25 GB (BF16)—
Winnow E4B
EldanRing
winnow-inference :80918.01 GB (Q8_0)39.89
Decider 4B
Mapika
decider.serve8.4 GB (BF16)40.7
JevK5 4B
alibiserikbay
jevk5-serve :80909 GB (BF16)38.81
Winnow 12B
EldanRing
winnow-inference :809112.67 GB (Q8_0)50.02
Decider 35B-A3B (NVFP4)
Mapika
decider.serve19.6 GB (NVFP4)47.11
Rune 26B-A4B v3
Surogate
surogate serve51.6 GB (BF16)57.44
AutoJev 27B
denis-pplx
autojev-serve :800052.6 GB (BF16 (49 GiB))56.4
Intern-Decision 4B
InternLM
reference Python code—37.81
Laya
ConvAI Innovations
laya-serve / Python Router—6.04

Fit on your hardware: set your GPU or unified memory in the hardware analyzer and this page shows whether each model fits it. Check your hardware

Pattern 1 — GGUF + llama.cpp-based server (Winnow)

The most hardware-flexible path. Winnow's own server is built on llama.cpp and exposes /v1/systemone and a normal /v1/chat/completions from the same loaded model — one download gives you a decision model and a chat/vision model.

Tested setups, per its README: Linux with an NVIDIA GPU (RTX 5070 Ti, CUDA 12.8+), Apple Silicon with 24 GB or more of unified memory, and an NVIDIA Docker container. The Q8_0 build was run with a 64K context on a 16 GB RTX 5070 Ti.

bash
# bash — Linux (NVIDIA) or macOS (Apple Silicon)
git clone https://github.com/EldanRing/winnow-inference
cd winnow-inference
python3 scripts/setup.py                             # downloads the model (~12.9 GB)
python3 scripts/serve.py --profile 5070ti-64k        # NVIDIA
# python3 scripts/serve.py --profile apple-silicon   # Mac

It listens on http://127.0.0.1:8091. Your Ollama request works unchanged apart from the URL:

bash
curl http://127.0.0.1:8091/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{"state":"The store accepts returns within 30 days. This item was bought 12 days ago.",
       "questions":{"eligible":{"type":"noul","instructions":"Is the item eligible for return?"}}}'

Check the repo's quickstart for whether model is required and for the current profile names — this project is two weeks old and moves quickly.

Pattern 2 — Python package with a built-in server (Decider, JevK5, AutoJev)

These ship their own inference code and a small HTTP server that speaks TypeSafe's format. You need a working PyTorch install with GPU support first.

Decider — the most downloaded open decision model (over 255,000 downloads of the 2B in its first two weeks). Four sizes share one interface.

python
# Python 3.11+; needs torch, transformers>=5 and flash-linear-attention
# (it runs without flash-linear-attention, but several times slower)
from decider.infer import Decider   # the decider/ package ships inside the model repo

d = Decider("Mapika/decider-2b")
d.decide(
    "My card was charged twice for the same purchase.",
    [{"question": "Which department should handle this?", "options": ["billing", "technical support", "sales"]},
     {"question": "Does this need a refund action?", "options": ["no", "yes"]}],
)

For an HTTP endpoint, run decider.serve with DECIDER_MODEL pointing at the downloaded model folder; the official typesafe-sdk works against it unchanged with TYPESAFE_BASE_URL set to that server. Decider allows 2–255 options per question, and abstain_below=t makes it return None instead of an answer when confidence is under t.

JevK5 — one of the best-calibrated 4B models on the Index (expected calibration error 0.027). English only; inputs over 16,384 tokens are refused rather than cut.

bash
# bash — needs a CUDA GPU with ~9 GB free for BF16
jevk5-serve --model alibiserikbay/JevK5 --port 8090

No NVIDIA card? The alibiserikbay/JevK5-GGUF builds run under llama.cpp on NVIDIA, AMD, Intel and Apple GPUs or the CPU. Per its card, the Q8_0 file matches the full-precision answer on 229 of 231 public JevBench items, and Q4_K_M on 221.

AutoJev-27B — the strongest open model you can actually download today. Its card asks for a GPU with room for about 49 GiB of BF16 weights plus runtime overhead — in practice a 64 GB-class or larger workstation card.

bash
# bash — Python 3.12+ and uv
git clone https://github.com/denis-pplx/autojev.git
cd autojev
uv sync --frozen --python 3.12
uv run hf download denis-pplx/autojev-27b --local-dir checkpoints/selected
AUTOJEV_CHECKPOINT=checkpoints/selected uv run autojev-serve

It serves a browser playground at http://localhost:8000 and POST /v1/systemone with optional base64 images. Set AUTOJEV_API_KEY to turn on authentication — do that before exposing it to a network.

Pattern 3 — A tiny encoder for routing in any language (Laya)

bash
pip install laya            # extras: laya[serve], laya[mcp], laya[langchain], laya[onnx]
python
from laya import Router

router = Router()   # downloads a checkpoint on first use
result = router.predict(
    "Hi, we were billed twice for March. Please refund the duplicate today or we will cancel our plan.",
    {"department": {"type": "choice", "instructions": "Which department should handle this?",
                    "criteria": {"billing": "invoices, payments, refunds",
                                 "technical": "bugs, outages, system errors",
                                 "other": "everything else"}}},
)
print(result["answers"]["department"]["choice"], result["routing"]["model"])

The router detects the script and language and sends non-English text to the multilingual checkpoint automatically. It's the fastest thing on this page and the least capable at reasoning — use it as a first-pass router, not a judge.

/v1/systemone-compatible servers

You do not have to run a decision model in the server its authors ship. Several general-purpose servers now speak the same request shape: a state, plus questions keyed by name, each a choice, noul or score. Ollama has served it since v0.35; the llama.cpp server, LM Studio and Hugging Face's transformers serve document it too. The model-specific servers (Bosun's jev-compatible-server, opendecider serve, THX-01's own server) remain the only route for features the general servers do not cover, such as THX-01's extra question types.

ServerModelsEndpointQuestion typesImages / audioMax optionsBatchingInstall or start
Ollama v0.35.0+models trained for it (see each model page)/v1/systemonechoice, noul, scoreimages: Clef and Clef-Flash, from 0.35.126—docs ↗
llama.cppmodels trained for it (see each model page)/v1/systemonechoice, noul, scoreimages: models with a multimodal projector; audio: lfm2-d1-omniset by the model (52 to 255 for the models the docs name)—docs ↗
LM Studiomodels trained for it (see each model page)/v1/systemone and /v1/decisionschoice, noul, scoreimages: base64 data URLs, for models with image input——docs ↗
Transformersmodels trained for it (see each model page)/v1/systemonechoice, noul, scoreimages: up to 4 per request, vision-capable models26answers scored in one batched forward passdocs ↗
surogate serveRune 26B-A4B v3/v1/decisionschoice, noul (yes / no), scoreimage——no full command published
opendecider serveOpenDecider-nano, OpenDecider-small/v1/systemonechoice, noul (yes / no), scoretext only——opendecider serve --model manjunathshiva/opendecider-nano
opendecider (MLX)OpenDecider-small MLX 4-bitPython library, no HTTP endpointchoice, noul (yes / no), scoretext only——pip install "opendecider[mlx]"
jev-compatible-serverBosun v3.1 0.6B, Bosun v3.1 1.7B/v1/systemonechoice, noul (yes / no), scoretext only255—uvx --from 'jev-compatible-server[transformers]' jev-compatible-server --model bosun-v3.1-0.6b
Transformers (trust_remote_code)d1-3B, d1-omni-600MPython library, no HTTP endpointchoice, noul (yes / no), scoreimage, audio——pip install "transformers>=5.14" torch torchvision pillow
thx01.serverTHX-01 322M/v1/systemonechoice, noul (yes / no), score, number, excerpt, citationtext only——THX01_MODEL=doofz/THX-01 THX01_API_KEY=your-key python -m thx01.server --port 8095

General-purpose servers first, read from each engine's documentation; then the servers that ship with one model family, read from that model's card and listed on its page. "—" means the documentation does not say. Max options is what the server or card states; a model can accept fewer than its server does.

How to choose:

  • Already on Ollama or LM Studio? Stay there for the models they load. Ollama's endpoint is the reference most guides on this site assume, and LM Studio adds a second, OpenAI-style /v1/decisions route for clients built on the OpenAI SDK.
  • Need images or audio? The llama.cpp server reads images for any decision model that ships a multimodal projector, and its documentation names one architecture (lfm2-d1-omni) for audio. Ollama reads images only through Clef and Clef-Flash.
  • Need many options per question? Ollama caps a choice at 26 options. The llama.cpp server documents per-model limits that reach 255 for some of the models it names. Check the limit on the model's page before you design a 40-way router.
  • Evaluating a model nobody has packaged yet? transformers serve scores the allowed answers of any chat model with a chat template, in one batched forward pass. That makes it a handy harness, but a general chat model scored this way is not a trained decision model: measure its calibration before you trust its probabilities (see the confidence guide).
  • Want THX-01's number, excerpt or citation types? Only its own server returns them.

Two request shapes are in use. /v1/systemone takes a state and an object of named questions. The OpenAI-style /v1/decisions that LM Studio documents (and Rune's server uses) takes an input and a list of questions. They answer the same kind of question, but a client written for one will not talk to the other without changes. Rune's page says which one it expects.

The request builder writes valid /v1/systemone requests for the models it supports.

Sources, checked 2026-10-14: Ollama System One API (v0.35.0+, choice up to 26 options) · llama.cpp server: /v1/systemone, per-model option limits, image and audio input · LM Studio: /v1/systemone · LM Studio: OpenAI-style /v1/decisions · transformers serve: /v1/systemone for any chat model.

Which one for your hardware?

Your machineStart withWhy
CPU only, 8–16 GB RAMtev1:0.8b (Ollama) or LayaSmallest files; Laya is an encoder and cheap on CPU
8 GB GPUDecider 2B, or JevK5-GGUF Q4_K_MSmall BF16 or quantised 4B
12 GB GPUnimble (Ollama) or Decider 4BBest accuracy that fits comfortably
16 GB GPU (e.g. RTX 5070 Ti, 4080)Winnow-12B Q8_0Highest Index score that fits; tested on exactly this class of card
Apple Silicon, 24–48 GBWinnow-12B (Metal profile)Its README lists 24 GB+ unified memory for Apple Silicon
24–32 GB Blackwell cardDecider 35B-A3B NVFP419.6 GB, needs vLLM/TensorRT-LLM with NVFP4 support
64 GB-class or larger workstation GPUAutoJev-27BWithin 1.5 Index points of Jev

This table is guidance from the published file sizes and each project's tested setups. Your analyzer result is the verdict for your exact machine. If the model you need doesn't fit what you have, renting a GPU by the hour is often cheaper than buying for an occasional batch job — compare in the cost calculator.

For phones, Jetson boards and plain CPUs, the smaller models added in October 2026 change the picture; decision models on edge hardware goes device by device. Before you commit to any of these, test your top two on your own data, as the evaluation guide describes.

Train your own

Two of these projects publish their full recipe:

A decision model fine-tuned on a few thousand of your own labelled decisions usually beats a bigger general one on your task. Our fine-tuning guides cover the basics of LoRA on a single GPU.

Frequently asked questions

Are any of these actually Jev?

No. TypeSafe hasn't released Jev's weights or its RLCD training method. Every model here is an independent reproduction of Jev's interface — state plus typed questions in, probabilities out — trained with its own data and method.

Why does a 27B model score like a hosted model?

Most open reproductions fine-tune a strong base model (Qwen3.8-27B, Gemma 4) to read the answer directly off the logits of each option in one forward pass. A capable base plus a narrow task goes a long way. The Index measures accuracy; it does not measure latency under your load or cost at your volume.

Can I load these GGUFs into Ollama?

Not for /v1/systemone today. Ollama's endpoint requires a model packaged for its System One runner; it rejects models it can't score. Use each project's own server.

How do I compare two models fairly?

Label 100 of your own real decisions, run both models on the same requests, and compare accuracy and how often a high-probability answer was wrong. The thresholds guide walks through it. --- Index figures from data/index.json of the Jev Decision Index Space (edition 0.2.1, generated 28 September 2026). Runtimes and sizes from each model's Hugging Face card and GitHub README, read 30 September 2026. The Index is community-maintained and not affiliated with TypeSafe AI.

Verified against: Decision Index 0.2.1 data (generated 28 Sep 2026); Hugging Face model cards and GitHub READMEs read 30 Sep 2026.

Keep going