Skip to content
System One

Kev

Kev is an open-source family of System One models from Jared Palmer, at 0.8B, 4B and 9B on Qwen3.5 bases. It answers typed Choice, Score and Noul questions with probabilities, serves TypeSafe's /v1/systemone API, and runs on your own GPU or Mac under Apache 2.0.

Updated

Open source, self-hosted. There is no hosted API. You download the weights and run them on your own hardware. How open-source models are listed.

What Kev is

Kev is a family of open-source System One models published by Jared Palmer. It reads a state and answers typed Choice, Score and Noul questions about it with probabilities, the same three shapes Jev uses. There is no hosted API. You download the weights from Hugging Face and run them on CUDA, ROCm or Apple Silicon through MLX.

The server exposes POST /v1/systemone with the same request and response shape as TypeSafe’s API, so the typesafe-sdk Python client works once you point base_url at your own machine. The repo also ships a Modal script that deploys Kev-4B to an L40S behind a bearer key, and a Hugging Face Space runs Kev-4B and Kev-0.8B in the browser.

How it is built

Each checkpoint is a rank-16 LoRA adapter plus a small pointer head on a Qwen3.5 base, at 0.8B, 4B and 9B. The head scores each option against a decision token at the end of its question, and a softmax turns those scores into probabilities. Questions share the state but cannot see each other.

Training is plain cross-entropy on 10,000 examples from ten public datasets, plus 896 generated policy examples and 1,680 from generated rule structures. The README says no Jev outputs were used. Each checkpoint ships with a temperature fitted on in-distribution data, which changes the probabilities but never the answer.

All three models got a short second training pass on generated examples on 2026-09-21, with the earlier weights kept at revision v7-base. Kev-4B was updated again on 2026-09-24 after one epoch on consumer-finance complaints.

What its own evals show

These are the author’s numbers from the repo’s own benchmark, which also runs the Jev comparison. On datasets Kev was not trained on, Kev-9B scores 0.822 on the development set against Jev’s 0.857, and 0.852 on a test set Jev has not been run on. On held-out examples from its training sources it scores 0.872 against Jev’s 0.845. The README says this is not a controlled comparison, because Jev’s training data is unknown.

Speed is self-reported too. Kev-4B on an L40S takes 36ms to 179ms of model time for a new state, depending on how many questions you ask and how long the state is. The README’s sample request on an Apple M5 in bf16 came back in 495ms.

What it is not for

Knowledge questions are the widest gap: Kev-9B scores 0.74 on MMLU where Jev scores 0.90. Changing the order of options can change an answer. Training covered at most 384 state tokens, so long documents fall outside it even though the server accepts 8,192. The server handles one request at a time, and the Qwen3.5 models run slowly on a Mac.

Specifications

Question typesChoiceScoreNoul
Max Choice options255
Score levelsUp to 255
Questions per callNot documented
Total context8,192 tokens
State budgetNot documented
Rate limitNone. It runs on your own hardware, and the server handles one request at a time.
EndpointPOST /v1/systemone on your own server
SDKsPython: typesafe-sdk

The server accepts 8,192 tokens for the state plus one question, but training used at most 384 state tokens and 1,024 for the state plus one question, so longer inputs fall outside what training covered. Choice takes 1 to 255 options and Score 1 to 255 levels. A request can carry any number of questions; the server runs them a 16,384-token row at a time, so memory does not grow with the question count.

Versions

  • jaredpalmer/kev-0.8b, 21 Sep 2026, LoRA adapter and pointer head on Qwen3.5-0.8B-Base. Weights updated on 2026-09-21 with a second training pass on generated examples; the previous weights are at revision v7-base. Release notes
  • jaredpalmer/kev-4b, 24 Sep 2026, The recommended starting point, on Qwen3.5-4B-Base. Updated on 2026-09-21 like the others, then again on 2026-09-24 with one epoch on 5,219 consumer-finance complaint narratives; the previous weights are at revision night2-du-release. Release notes
  • jaredpalmer/kev-9b, 21 Sep 2026, The most accurate Kev, on Qwen3.5-9B-Base. Updated on 2026-09-21; the previous weights are at revision v7-base. Release notes

Use cases

What people use Kev for, one page per pattern.

Workflow controlStarter

Support inbox triage with System One models

Send a support ticket to Jev once with every question attached. Category comes back as a selected label, severity and frustration as numbers on scales you wrote, refund intent as a probability. Your code reads those values and decides what happens to the ticket.

ChoiceScoreNoul
Workflow controlIntermediate

Confidence-gated actions with System One models

Jev returns a confidence value from 0 to 1 alongside every Choice and Score answer. Your code treats it as a separate axis: act automatically when it's high, confirm or flag when it's middling, hand the decision to a person when it's low. Riskier actions get higher bars.

ChoiceScore

Examples built with Kev

The most-starred and most-viewed entries in the directory. Browse all examples.

Alternative

jaredpalmer/kev

A family of small, self-hosted decision models built on Qwen3.5 at 0.8B, 4B and 9B, with training code and an API that matches TypeSafe's System One so TypeSafe's own Python SDK can point at a local server.

ChoiceScoreNoul
Tool

jevals

A Python evals and guardrails library for agent traces that uses Jev-style decision models instead of an LLM judge, running Jev through TypeSafe or Vercel, or Kev or Laya locally on a Mac. All checks for a trace go out as one request in a few hundred milliseconds.

Tool

kevala

Runs Laya and Kev decision models inside the browser: a zero-dependency Rust engine compiled to WebAssembly with WebGPU kernels, downloading a pinned int8 model pack and answering choice, score and noul questions with no server or API key.

ChoiceNoul