Jev and open alternatives¶
What Jev is¶
Jev (TypeSafe, typesafe/jev, served through OpenRouter) turns a model into a typed decision engine: send a text (the
state) and questions of type noul (yes/no), choice or score, get typed answers with probabilities, with no text
generation. SelfJev copies the interface, not the model: selfjev serve answers Jev's requests at Jev's paths
(/v1/systemone, /api/alpha/decisions, /v1/decisions), so Jev clients work by changing the base URL and the key
(API, how it works).
What TypeSafe discloses (public web, read 2026-09-23):
- "Transformer-based, but it is not a large language model", with a "new model architecture, parallel sampler": all outputs come from one pass.
- Questions run "in parallel and in isolation against the same state". That is the shape of our shared-prefix tree.
- Limits: 64K tokens per request; 32K for the state plus the longest question. Rate limit 250K tokens/s.
- Training: "Reinforcement Learning for Calibrated Decisions (RLCD)", no details. Their benchmark's reference answer is the average of GPT-6 Astra and Fable 5.1.
- Not disclosed: size, base model, data. They "cannot prove the price is unsubsidized".
Sources: typesafe.ai/blog/introducing-system-one-models-and-jev, docs.typesafe.ai/models.md, marktechpost.com/2026/09/19/typesafe-ai-releases-jev/.
What we measured about it:
| result | |
|---|---|
| accuracy | eval2 97.2%, eval_llm 92.5%, dev benchmark 82.7% (GPT-6 Astra 85.8%) |
| weakest slices | eval2: temporal 89.2, numeric 92.0, multilabel exact match 94.2; eval_llm: verify 86.7, multilabel exact match 81.3 |
| latency | flat 143–178 ms p50 from California, 8 → 4,096 tokens, 1 or 16 questions |
| marginal speed | 132–137 ms fixed + 2.2–2.6 ms per 1,000 tokens ≈ 400K tokens/s |
| long texts | reads the whole text: 97.2% on evidence at the end of 4K–17.6K-token texts |
| tokenizer | its billed token count is 1.036× Qwen's, so probably not the Qwen tokenizer |
| price | $0.042 per million input tokens; the whole dev benchmark cost $0.06 |
| as an annotator | agrees with authoring models on 93.0% of round-2 questions; worst on temporal |
Our reading (2026-09-25 update: what Jev's behaviour implies and what to build next):
the gap is mostly training, not architecture. 4B → 8B, a bigger adapter and stock → tree each moved
the dev benchmark by ≤ 1.3 points, while 10K verified target-task questions moved eval2 by +5.5. Our default model,
selfjev-4b, is now 1.4 points behind on eval2 (95.8), level on eval_llm (93.1, p = 0.52) and ahead on the dev
benchmark (83.8). Jev's speed is mostly the hardware: on one H100 our Qwen3 4B tree is faster than Jev inside the
machine in every cell but 4,096 tokens × 16 questions (2026-09-26, speed);
Jev's per-token cost is still ≈ 6× lower than ours, so a smaller model or more GPUs per request, and the end-to-end
difference is network distance. selfjev-4b's own serving engine is not timed on a GPU yet.
The open field and the shared yardsticks (survey 2026-09-30)¶
About 50 model cards read from HF other=classification
(sorted by downloads, likes and trending, created since 2026-09-15), plus the benchmarks they cite. Nothing was run for
the survey. Session: Claude competitors, JOURNAL 2026-09-30.
Shared yardsticks. These are the only places where our numbers and theirs can meet:
| benchmark | what | size | who runs it | cited by |
|---|---|---|---|---|
| JevBench (Benchmark Heaven, MIT, not TypeSafe's) | public easy/original/hard items; live board benchmarkheaven.com/jev-models | public 231 (48/72/111); board v1.5.4 scores 1,624 per system, 720 sealed | board: maintainers only; public-231: anyone, typesafe adapter on /v1/systemone |
≈ 15 cards |
| LocalLLaMA/typed-decisions | 4 synthetic workflows, one request per case; gold = a ≈4B teacher, ceiling 0.735 | test 400 cases / 2,000 decisions | anyone | ≈ 10 cards |
| Decision Index 0.2.1 | 38 public benchmarks, chance-corrected balanced_skill |
≈ 120K requests, rebuild ≈ 7 GB | maintainer board; kit is open | ≈ 6 cards |
| Nimble 13-subset suite ("S1Bench", PUBLIC_BENCHMARKS.md) | human labels: VitaminC, MASSIVE en/de, BoolQ, SQuAD2, PAWS, MNLI, Civil Comments, Aegis2, HelpSteer2, SummEval ×2, PubMedQA | 3,880 | anyone (lev's levbench) |
lev, decider, Nimble |
| DecisionBench 1.0 (Hanno Labs) | 43 tasks, up to 255 candidates | 23,900 | board + open runner | imajev, Bosun, Winnow |
| Image JevBench v0.1.4 | images | 684 (228 public) | maintainers | board only |
Overlap check (exact + 8-gram, data/all.jsonl.gz vs the benchmark states): JevBench public-231 0 / 231,
typed-decisions test 0 / 400. We never trained on either. On the Nimble suite, MNLI's train split is in our hf_nli.
Measured head-to-head (2026-09-30): the same requests, on one L40S (protocol, recipes and caveats).
Eight open models, each served with its card's recommended recipe, and selfjev-4b-vision, all asked exactly the
questions Jev gets (scripts/eval/score_systemone.py); failed requests count as wrong. Public sets through their own
harnesses. Generated by scripts/eval/competitors/matrix.py:
| model | size, base, licence | eval2 s (1 L40S) | eval2 | eval_llm | image test: held-out / trained-on datasets | typed-decisions | JevBench public-231 / hard-111 | Nimble 13 macro |
|---|---|---|---|---|---|---|---|---|
| decider-4b | 4.2B, Qwen3.5-4B-Base full FT, text, Apache-2.0 | 145 | 90.8 | 82.8 | — | 68.0 | 83.1 / 65.8 | — |
| imajev-4b | 4B, Qwen3.5-4B + LoRA r64, text + images, Apache-2.0 | 489 | 91.5 | 84.9 | 85.2 / 70.1 | 68.5 | 85.7 / 71.2 | — |
| jpt-4b | 4.5B, Qwen3.5-4B merged LoRA, text + images, CC-BY-NC-4.0 | 90 | 92.5 | 85.0 | 83.8 / 71.4 | 78.8 | 87.9 / 78.4 | — |
| kev-4b | 4B, Qwen3.5-4B-Base + LoRA r16 + head, text, Apache-2.0 | 109 | 88.4 | 74.7 | — | 67.0 | 75.8 / 54.1 | — |
| laya | 0.4B, ModernBERT-large encoder, text, Apache-2.0 | 23 | 45.4 | 46.4 | — | 36.0 | — | — |
| laya-long | same, max_len 8192 / head 2048 | 108 | 46.9 | 45.6 | — | 36.0 | — | — |
| mica-4b | 4.2B, Qwen3.5-4B merged LoRA (llama.cpp BF16), text, Apache-2.0 | 162 | 89.6 (98% answered) | 84.1 (99% answered) | — | 68.0 | 82.7 / 64.0 | — |
| openjev-27b-fp8 | 27B, Qwen3.8-27B FP8, text + images, CC-BY-NC-4.0 | 753 | 96.8 | 92.6 | 82.6 / 72.8 | 71.1 | 87.4 / 74.8 | — |
| plumb-4b | 4.2B, JevK5 (Qwen3.5-4B), text, Apache-2.0 | 471 | 93.4 | 84.1 | — | 61.4 | 89.6 / 80.2 | — |
| selfjev-4b-vision | 4B, Qwen3.5-4B + LoRA r64, text + images, Apache-2.0 code; Jev soft targets in training | 100 | 94.7 | 90.7 | 85.1 / 94.0 | 66.1 | 83.5 / 66.7 | 74.8 |
| model | set | ours only right | model only right | p |
|---|---|---|---|---|
| decider-4b | eval2 | 122 | 43 | 5.9e-10 |
| imajev-4b | eval2 | 99 | 35 | 2.9e-08 |
| jpt-4b | eval2 | 81 | 37 | 6.3e-05 |
| kev-4b | eval2 | 153 | 28 | 4.7e-22 |
| laya | eval2 | 1001 | 18 | 6.8e-269 |
| laya-long | eval2 | 969 | 17 | 6e-261 |
| mica-4b | eval2 | 140 | 38 | 6.3e-15 |
| openjev-27b-fp8 | eval2 | 30 | 72 | 3.9e-05 |
| plumb-4b | eval2 | 79 | 52 | 0.023 |
| decider-4b | eval_llm | 107 | 32 | 1.2e-10 |
| imajev-4b | eval_llm | 88 | 33 | 5.9e-07 |
| jpt-4b | eval_llm | 82 | 28 | 2.5e-07 |
| kev-4b | eval_llm | 168 | 17 | 2.1e-32 |
| laya | eval_llm | 441 | 22 | 2.1e-102 |
| laya-long | eval_llm | 449 | 22 | 1.2e-104 |
| mica-4b | eval_llm | 85 | 23 | 1.5e-09 |
| openjev-27b-fp8 | eval_llm | 33 | 51 | 0.063 |
| plumb-4b | eval_llm | 84 | 22 | 1e-09 |
| imajev-4b | eval_images_v1 | 346 | 53 | 8.2e-54 |
| jpt-4b | eval_images_v1 | 326 | 38 | 3.3e-58 |
| openjev-27b-fp8 | eval_images_v1 | 336 | 56 | 9e-50 |
- Our frozen sets: selfjev-4b-vision is first among the open 4B models on eval2 and eval_llm; every paired test against a 4B favours it (closest: Plumb-4B on eval2, 79 vs 52 questions only one of the two gets right, p = 0.023). openjev (27B, non-commercial) beats it on eval2 (96.8, 30 vs 72, p = 4e-5) and is level on eval_llm (92.6, p = 0.063), 3× slower on the same GPU. Jev on the same requests: eval2 97.2, eval_llm 92.5. These sets are ours (same authors and judges as our training data), so the shared benchmarks below matter more for a public claim.
- Through Jev's request shape we lose points against our own evaluation (eval2 94.7 vs 96.1, eval_llm 90.7 vs 92.5):
multilabel becomes one yes/no per candidate (86.1 vs 90.8 on eval2). The native
multiquestion is our edge. - On the shared public benchmarks we are mid-pack, not first. JevBench public-231 83.5 (zero-shot) vs Plumb 89.6,
jpt-4b 87.9, openjev 87.4, imajev-4b 85.7, decider-4b 83.1, Mica 82.7, kev-4b 75.8 (Jev 86.6 on the board).
typed-decisions 66.1: below openjev (71.1), imajev (68.5), Mica and decider (68.0), kev (67.0) and Jev (72.7), above
Plumb (61.4); jpt-4b's 78.8 is in distribution (its card). Nimble 13 macro 74.8 vs Jev 76.0 and Nimble-9B 74.8 on
their runs. Our weakest question type there is
score(60.9). - Images: on the 4 datasets nobody trained on, a tie (85.1 vs imajev-4b 85.2, jpt-4b 83.8, openjev 82.6). Our 94.0 on the other 6 comes from fine-tuning on them.
- Speed: second among the 4B models on this workload (eval2 in 100 s with selfjev 0.4.2, measured 2026-10-05; 166 s with 0.4.1 and 242 s before; jpt-4b 90, kev-4b 109, decider-4b 145, Mica 162, Plumb 471, imajev 489, openjev 753). End to end with 4 requests in flight, not a controlled latency benchmark (engine report).
- Every card number we could reproduce matched (JevBench: decider, kev, Mica, Plumb, jpt; typed-decisions: Laya 36.0 vs 36.2), so the harnesses measure what the cards measure.
Accuracy matrix, published numbers only (%). B = run by the board's maintainers, S = self-reported by the model's author, M = measured by us on 2026-09-30 with the benchmark's own harness, † = the author used the public items for model selection or tuning, F = fitted on the benchmark's train split. JevBench public-231 totals come from the per-tier numbers on each card where the card gives no total.
| model | params | images | JevBench public-231 | JevBench hard-111 | JevBench board v1.5.4 (rank) | Decision Index 0.2.1 | typed-decisions | Nimble 13 macro | DecisionBench | Image JevBench (rank / 50) |
|---|---|---|---|---|---|---|---|---|---|---|
| selfjev-4b-vision (ours) | 4B | yes | 83.5 M | 66.7 M | not submitted | not run | 66.1 M | 74.8 M | dropped (too slow on many-option tasks, README) | not submitted |
| Jev 1.13.0 (API) | ? | no | 86.6 B | 73.0 B | 72.1 (#3) | 57.91 B | 72.7 | 76.0 S (Nimble) | 72.0 B | — |
| Cygnet (API) | ? | ? | 87.9 S (basal) | — | 73.7 (#1) | — | — | — | — | — |
| GLiDE (Fastino API) | ? | no | — | — | not listed | 64.81 S | — | — | — | — |
| Winnow-12B | 12B | ? | 85.7 S | 73.0 B | 73.2 (#2) | 50.02 B | — | — | 76.7 B | — |
| JevK5 v0.3 | 4B | no | 87.9 S | 78.4 S | 71.9 (#4) | 38.81 B | — | — | — | — |
| Plumb-4B (JevK5-based) | 4B | no | 89.6 S† | 80.2 S† | 71.6 (#5) | — | — | — | — | — |
| decider-4b (v2 / v2.1) | 4B | no | 83.5 B (v2) / 82.7 S | 67.6 / 64.9 S | 71.3 (#7) | 40.70 B | — | 75.6 S | — | — |
| decider-2b (255K dl/30 d) | 2B | sibling | 71.0 B | 49.5 B | 45.1 (#30) | — | — | 70.6 S | 61.4 B | — |
| Wald-4B | 4B | no | 87.9 S† | 74.8 S† | not listed | 54.59 S (pending) | — | — | — | — |
| jpt-4b (NC licence) | 4B | yes | 87.9 S | 78.4 S | not listed | 43.04 B | 79.6 S F | — | — | 69.55 (#6) |
| jpt-9b (NC licence) | 9B | yes | 85.3 S | 73.0 S | not listed | 46.89 B | 80.6 S F | — | — | 65.82 (#12) |
| imajev-4b | 4B | yes | — | — | #1 on v1.4.2.2 (67.37) | — | — | — | 79.7 B | 76.39 (#1) |
| Mica-v0.1-4B | 4B | no | 83.1 S† | 64.9 S† | not listed | — | — | — | — | — |
| kev-4b | 4B | no | 75.8 S / 66.2 B (older build) | 54.1 S / 36.9 B | 38.1 (#37) | 34.64 B | — | — | 65.2 B | — |
| lev (interfaze-ai) | 4B | no | — | — | not listed | 38.54 B | — | 68.9 S (Jev 76.1, same harness) | — | — |
| Eikos-4B | 4B | no | — | 72.1 S | not listed | — | — | — | — | — |
| AutoJev-27B | 27B | yes | 87.0 S (basal) | 70.3 S (101 items) | 19.5 (#52, cost) | 56.40 B | — | — | — | 66.85 (#9) |
| openjev (27B, NC licence) | 27B | yes | — | — | not listed | — | — | — | — | — |
| Nimble-9B | 9B | no | 79.7 B | 62.2 B | 31.8 (#40) | — | — | 74.8 S | — | — |
| vjev-vision (distilled from Jev) | 4B | yes | — | — | — | — | — | — | — | 47.67 (#31) |
| Laya (the most liked, 4.6K) | 0.4B | no | 58.4 B | 35.1 B | 0.0 (#93) | 6.04 B | 36.2 S (base) / 76.6 S F | 62.5 B (6-subset) | 39.2 B | — |
Eikos-4B was scored on eval2 on 2026-09-24 through our option mapping: 92.8 (reports/eikos_4b/eval2).
What the survey and the head-to-head say about our claims.
- Architecture. The shared prefix is common now: Mica shares one prefill across questions, kev continues each
question from the shared state, ArseneLupin has a
shared_prefixmode, decider and Eikos lean on vLLM prefix caching. What remains ours: each candidate is scored from its own description inside one tree pass (no A–Z letter slot, no 26/52-option chunking) and multilabel is native. Most others read letter logits; several cap options at 16–26. - Text and images in one model is not unique: jpt-4b/9b, imajev-4b, openjev, vjev-vision, AutoJev-27B and decider-2b-vision take images too. imajev-4b leads Image JevBench (76.39). Our image test is mostly in distribution (JOURNAL 2026-09-30 02:05: no transfer to new image tasks); on held-out image datasets we tie imajev-4b (above). Image JevBench's public items are not downloadable, so only its maintainers can score us there.
- Real data. Most cards report on their own sets or on public items they tuned against (†). Maintainer-run numbers (B) are rare and worth more: sealed accuracy on JevBench is far below public for everyone (Jev 36.7 sealed vs 86.6 public on v1.4.2.2).
- Laya is the most liked but the weakest here: JevBench board #93, Decision Index 6.04, a ≈ 320-token state window.
Open "Jev-like" models (survey of Hugging Face model cards, 2026-09-24)¶
Nothing was downloaded or run for the survey (Eikos-4B was scored later, below); claims are each model's own, on its own benchmark, and not comparable with ours.
| camp | models | notes |
|---|---|---|
| small encoders, 0.15–0.4B | Laya (ModernBERT / mmBERT), open-jev-deberta-v3-large, rlcd-modernbert-151m (GLiClass), GLiNER2.5-Decide (DeBERTa-v3-large, labels and text in one bidirectional pass; JOURNAL 2026-10-04) | advertise 33–46 ms; long texts truncated (GLiNER: 384-token chunks, logits max-pooled) |
| decoders with answer-token readout (mostly LoRA), 0.6–27B | kev 0.5/0.8/4/9B, decider 0.8/2/4/35B-A3B, openjev, Bespoke-Nimble-9B, AutoJev-27B, Lumma-fev-0.6b, Eikos-4B | mostly Qwen3.5 bases; same recipe as ours (LoRA, logit readout, no generation) |
- Their claims: AutoJev-27B 84.6 vs Jev 82.8; kev-4b beats Jev in distribution but trails out of domain (0.817 vs 0.857); kev-0.8b trails everywhere; decider-35b-a3b JevBench hard 0.676, decider-4b 0.541.
- The same pattern as ours: sub-1B trails, 4B and up is where the quality is.
- "JevBench" public items exist and several cards report on them: the only shared yardstick. Scoring our tree on it is an open idea.
Laya (reviewed at commit 970dc8c)¶
- A bidirectional encoder (ModernBERT-large 421M, or mmBERT-base 322M multilingual), one sequence per question with
every option and the state; a new 2-layer transformer head scores each option's
[MASK]. Trained with a GRPO-style policy gradient on proper-scoring-rule rewards, which it calls RLCD. - Documented limits: the state is truncated to ≈ 320 tokens by default (≈ 768 multilingual, up to 8K opt-in), options share a 192–256-token budget, base checkpoints near chance zero-shot on its own set, over-confident before temperature fitting (ECE 0.466 → 0.081).
- Its Jev latency figure (236–276 ms p50) is slower than we measured (143–178 ms).
- Verdict: the faster and multilingual option (≈ 33 ms on a T4), not the more accurate one on long, trap-heavy texts. Our closest measured analogue, jina 0.6B listwise, scores 73.3 on eval2. Scoring Laya on eval2 is open (no API cost; a small GPU box, never the laptop).
Eikos-4B (caiovicentino1/Eikos-4B, MIT)¶
- A full fine-tune of Qwen3.5-4B distilled from GLM-5.3-Flash on finance and rules data; options as letters, softmax over the letter logits.
- vLLM ≥ 0.30 with
--enable-prefix-caching --mamba-cache-mode allshares the state across questions (the card reports that vLLM 0.11 lost 3–6 points on batched long shared documents). - Own-harness claims: JevBench public hard 72.1 (Jev 73.0 on the official leaderboard), ECE 0.033.
- Evidence that the Qwen3.5 base works for typed decisions. Zero-shot through our option mapping it scores 92.8 on
eval2 (
reports/eikos_4b/). Qwen3.5-4B has been the base of our best models since 2026-09-25,selfjev-4bincluded.
Qwen3.5 and Qwen3.8 as bases¶
- Qwen3.8 has no small dense model: 27B (48 linear-attention + 16 full layers), a 180B MoE and a 2.4T MoE.
- Qwen3.5 has 0.8/2/4/9/27B; the 4B has 32 layers (24 Gated DeltaNet + 8 full attention) and 262K positions. A tree
mask cannot branch its linear-attention layers in one pass. First a forked native cache did it
(challengers); now our Qwen3.5 tree
(
src/selfjev/engine/tree.py) runs those layers level by level from copied states, in training and serving (tree scorer).