← Blog
Blog

Choosing a decision model for an agent harness: Clef vs Kev, Laya and Open-Jev

Clef-Flash made the best decisions of four open models tested for the Rameness agent harness, while Kev-4B was the strongest CPU option.

By Samar Sajnani · · 9 min read

Cloudflare’s Clef-Flash made the best decisions of the four open decision models we tested for the Rameness agent harness. It got all 54 standard cases right and 89% of the reworded ones, in 0.15 s each on an RTX 5070 Ti. Kev-4B is the best choice without a GPU, at 93% and 83%, though it is ten times slower and less sure of its answers.

What a decision model does

A general-purpose LLM is built to generate language: give it a situation and it can explain, qualify and suggest. A decision model has a narrower job. Give it the same situation plus a fixed set of allowed answers, and it returns one choice—or true/false—with a probability for every option. That makes the result easy for software to log, compare and act on.

The same failed-deployment question sent to a general LLM and a decision model. The LLM writes an open-ended explanation; the decision model scores three allowed choices and selects reorient with 83 percent probability.

The model underneath can still understand language. The difference is the job it is given and the constrained output the harness receives.

Why the LLM doesn’t make the decisions

In Rameness, every multiple-choice fork in the agent loop goes to a small typed decision model, never to the LLM doing the work. That layer is called JEV. It decides things like:

A typed model reads a short state and returns a probability for each option in one forward pass. No text is generated, so it can’t ramble, can’t produce an answer outside the options, and is fast enough to call on every turn. We tried letting the LLM decide early on; it was slower and less consistent. The probabilities also tell us how sure each decision was, and every decision is logged.

The contenders

Four open decision models that speak the Jev “System One” API, plus a baseline with no model at all.

Model Publisher Size Base License Ran on
Clef-Flash Cloudflare 9B, 8-bit Qwen3.5-9B Apache-2.0 RTX 5070 Ti (16 GB)
Kev-4B Jared Palmer 4B, bf16 Qwen3.5-4B Apache-2.0 CPU
Open-Jev-2B Zefan Cai 2B + LoRA Qwen3.5-2B MIT CPU
Laya typed-decisions Convai Innovations 0.42B Laya’s own Apache-2.0 CPU
Lexical baseline Rameness no model IDF-weighted word overlap Apache-2.0 CPU

The lexical baseline is Rameness’s last-resort fallback when no model is reachable. It shows how much of the test can be solved by matching words alone. TypeSafe’s hosted Jev was not tested: it is a paid service, and we only compared models you can run yourself.

How we tested

Each model answered the same 72 labelled decisions, taken from the questions Rameness really asks.

Hardware: an AMD Ryzen 7 7800X3D (8 cores) with 30 GB of RAM for the CPU models, and an RTX 5070 Ti for Clef-Flash. Clef-Flash is built for a GPU, so the comparison is each model where you would actually run it. The CPU models were started fresh one at a time; Clef was measured on its running server. Each model got the same state budget Rameness gives it in production.

Results

Rameness JEV benchmark summary comparing Clef-Flash and Kev accuracy on standard and reworded decisions, with speed and footprint notes for every contender.

Rameness JEV benchmark, October 15, 2026 (Open-Jev: September 25, 2026) · 72 labelled decisions.

The reworded cases are the real test. The lexical scorer looks strong on standard phrasing because its cues were written for it, then falls to 61% once the words change. Kev holds up well but gives the right answer less confidence: it put on average 67% of its probability on the correct option, against Clef’s 88%.

Where each model misses

Clef-Flash’s only misses are two near-synonyms among 36 task categories. Kev’s misses are the ones that matter in a harness: safety and recovery.

Accuracy per decision kind, standard and reworded cases together, each model with its production wording:

Decision kind Cases Clef-Flash Kev-4B Laya Lexical
route (answer, tool or agent) 11 100% 91% 73% 82%
intake (how to split a request) 10 100% 100% 60% 90%
task category (36 options) 9 78% 78% 56% 56%
effort 8 100% 100% 50% 100%
significance (ask a person?) 8 100% 75% 75% 88%
failure (what next) 6 100% 83% 100% 100%
question (answer or escalate) 6 100% 100% 100% 83%
scope (open-ended or specific) 6 100% 100% 67% 100%
loop guard 4 100% 75% 50% 100%
stall 4 100% 100% 100% 75%

What the misses were:

Open-Jev-2B isn’t in this table: its run used an earlier version of the set, so its per-kind numbers don’t line up.

Speed and footprint

On a GPU, Clef-Flash decides in 0.15 s, ten times faster than Kev on a CPU. The catch is that it needs about 12 GB of GPU memory.

Model Per decision (median / 95th pct) 16 yes/no questions in one request Memory Start-up
Clef-Flash 9B (GPU) 0.15 s / 0.31 s 0.35 s 11.8 GB GPU + 2.4 GB RAM already running
Kev-4B (CPU) 1.51 s / 7.24 s 8.3 s 18.5 GB RAM 16 s
Laya 0.42B (CPU) 0.12 s / 0.24 s 0.83 s 4.1 GB RAM 7 s
Open-Jev-2B (CPU, September) 0.59 s / 5.6 s 2.8 s 4.2 GB RAM 3 s
Lexical, no model under 1 ms under 1 ms none none

Batching matters because Rameness asks “which of these apply?” as one yes/no question per option. Clef answers 16 at once in barely more time than one. Kev’s long tail comes from the number of options: about 1.5 s for a 2-to-5-way choice, but 7.2 s to pick among the 36 task categories. That adds up over hundreds of decisions in a run.

Keywords or sentences

How you word the options matters, and not the same way for every model. Clef-Flash is better with plain sentences; Kev is slightly better with keywords.

Model Options as keywords (standard / reworded) Options as sentences (standard / reworded)
Clef-Flash 96% / 89% 100% / 89%
Kev-4B 93% / 83% 93% / 78%

With keywords, Clef missed two intake decisions: “migrate the whole monolith to microservices” (should be split into parts, not researched) and “make it better” (should get a clarifying question). Described as sentences, both came out right. So Rameness writes each option as a sentence for Clef and as keywords for the others. Laya was measured with keywords only.

What we picked, and the caveats

Rameness now picks Clef-Flash first whenever it is running, then Kev (the CPU option), then Laya (the lightweight one). If no model is reachable, the lexical scorer keeps the harness running, with a warning.

What this test doesn’t tell you:

To reproduce it, start Clef with rameness jev up clef and run:

python -m bench.jevmodels --models clef,kev,laya,openjev,lexical --styles both

The cases are in rameness/jevbench.py in the Rameness repository, and rameness jev bench checks whichever model you have configured.