Jev is a closed model, and that has not stopped the ecosystem from rebuilding its shape in the open. The projects fall into three groups, and knowing which group you are looking at tells you what the numbers mean.
API-compatible servers
The first group speaks the System One wire protocol, so the official SDKs work unchanged.
Kev releases 0.8B, 4B, and 9B weights on Hugging Face with training code and evaluation data, and its API matches TypeSafe's, so the official Python SDK can point at a local server. The 4B and 9B fit a 32 GB Mac in bf16, and a web playground permutes option order for testing. OpenJev takes the same approach with a documented limit worth reading: a Choice can carry at most 128 options against Jev's 255. openjev-sglang wraps the same interface around SGLang on a B200, with radix caching and breakable prefill graphs, and deploys to Modal with a scale-to-zero server. Simple Jev Project builds its JSON from next-token logits, so nothing is generated and output_tokens is always zero; its public demo needs no key, with a 2k-token context and 2 requests per second.
Retrained heads on small models
The second group keeps a small pretrained model and trains the decision interface on top.
NanoJev is built on Qwen3-0.6B with decision heads and one shared step-400 checkpoint across Maze, Snake, ViZDoom Basic, and Predict Position. On its held-out tests it scores 128/128 on ViZDoom Basic against 56/128 for Jev, and 27/128 against 11/128 on Predict Position, with checkpoints and data published. Laya uses ModernBERT-large (421M) for English and mmBERT-base (322M) for 100+ languages, answering in one forward pass at 33 ms for a single question and 7.2 ms per question batched on a T4. decider trains Qwen3.5-2B and 35B-A3B variants and states plainly that nothing was distilled from Jev; its v10 adds 384 steps of calibration-aware RL that lifted sampled browser play from 83% to 93%. OpenJev (Verdict) reports 77.10% against Laya's 76.60% and Jev's 72.70% on 2,000 held-out decisions, with inference-only fixes that cut hard-tier calibration error from 0.298 to 0.118.
Von is the smallest serious option at 395M parameters, answering in under 25 ms on CUDA, ROCm, MPS, or CPU — and its README is also the best reminder to read past the headline, since a 91.23% adversarial claim sits next to its own 49-task table reporting 72.0% macro. PocketJev pushes the same idea on-device: MLX plus Qwen3-VL-2B reads A/B/C logits on an iPhone for 2 to 26 choices, with no image-upload path.
Inference-time tricks
The third group changes nothing about the weights and everything about the decoding.
SemIf reads direct typed logits instead of generating: 21 binary criteria in 1.023 s versus 5.332 s and 111 output tokens for an autoregressive JSON array on one RTX 3090, with CUDA, llama.cpp, and Apple Silicon backends. JEVfire does the same on vLLM: a 28-field fresh-prefix task ran in 496.9 ms against 5,113.1 ms for constrained JSON on the same 27B model, 10.29x faster, and its browser Mario demo cleared World 1-1 at 71 ms mean inference on an M4 Max.
How to read the claims
- Match the task. Browser play, ViZDoom kills, and JevBench tasks are not interchangeable.
- Separate self-reported numbers from reproduced ones. Most of these READMEs say which they are; believe the ones that do.
- Check the wire compatibility before porting. Option limits, score levels, and usage accounting differ.
- Treat calibration claims as the hardest to reproduce. Accuracy is easier to move than calibration error.
The repos & SDKs category collects these projects alongside the client libraries for languages TypeSafe does not ship officially.


