Jev alternatives
Kev
The drop-in that keeps the official SDK working
Quick answer
Choose Kev when the goal is replacing a hosted Jev call without touching application code: it speaks the same `/v1/systemone` wire format, so the official TypeSafe SDK works after a base-URL change. Expect automation coverage of roughly 0.45–0.57 at a 5% error budget against Jev’s 0.70, and a large knowledge gap that comes from the base model rather than the adapter.
Kev is a family of rank-16 LoRA adapters plus a pointer head on Qwen3.5 bases, from Jared Palmer. It started as Kev-0.5B and grew into 0.8B, 4B, 9B and a 27B variant. Its real selling point is not accuracy — it is that it serves TypeSafe’s own POST /v1/systemone contract, so the official SDK works unchanged after you change one base URL.
Adapt a large model
Keep the LLM as the backbone and bolt a decision structure onto it — LoRA adapters or a pointer head — so one prefill answers every question.
Search aliases
Key specs
- Licence
- Apache-2.0
- Author
- Jared Palmer
- Backbone
- Qwen3.5 + rank-16 LoRA + pointer head · 0.8B / 4B / 9B, plus a 27B variant
- Size
- ~9 GB for the 4B · 55 GB for the 27B
- Latency
- 47 ms on MLX with a repeated state, 77 ms fresh · 18.1 ms on an H100 · 721 ms on an M5
- Wire format
- TypeSafe POST /v1/systemone, unchanged
- Install
- uv sync --extra serve
Kev against Jev, where Kev publishes its own losses
Third-party and project-published figures only. Kev’s own evaluation is unusually candid about calibration, and it is the reason this page can be specific.
| Kev against Jev, where Kev publishes its own losses | Kev | Jev |
|---|---|---|
| Held-out new sources | 0.822 (9B) · 0.848 / 0.896 (27B) | 0.857 |
| Confident errors | 4.0% | 3.7% |
| Automation at a 5% error budget | 0.45–0.57 | 0.70 |
| Knowledge tasks (MMLU-Pro) | 0.515 — a base-model limitation, not an adapter one | 0.840 |
| Integration cost | Change one base URL; SDK untouched | Waitlist and API key |
When Kev is the right choice
Kev is the shortest migration path in the whole open ecosystem. If your code already calls the TypeSafe SDK and your concern is data residency, per-call cost or rate limits, swapping the base URL is a one-line change and everything else keeps working. The 4B on a mid-range GPU is the practical sweet spot; the MLX backend makes a Mac viable, going from 213 ms on the old PyTorch MPS path to 47 ms on a repeated state.
When to walk away
Do not pick Kev for knowledge-heavy decisions. MMLU-Pro at 0.515 against Jev’s 0.840 is a base-model ceiling, and no amount of adapter training fixes it. Also do not assume the quoted accuracy: it is measured on held-out sources with the project’s own protocol, and every other open project runs a different protocol, which is how the same week produced four incompatible "Jev scores".
Adopting Kev in three steps
# 1. Serve a Kev checkpoint locally
git clone https://github.com/jaredpalmer/kev.git && cd kev
uv sync --extra serve
KEV_DTYPE=bf16 uv run --extra serve python -m kev.serve \
--run jaredpalmer/kev-0.8b --port 8009
# 2. Call it with the same request shape Jev uses
curl -s localhost:8009/v1/systemone \
-H 'content-type: application/json' \
-d '{
"model": "kev-latest",
"state": "Shoes arrived late and in the wrong size.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"returns": "Exchanges, refunds, damaged items",
"shipping": "Delivery status, delays",
"billing": "Charges, invoices"
}
}
}}'Kev questions people actually ask
Is Kev really a drop-in replacement for Jev?
On the wire, yes. It implements TypeSafe’s POST /v1/systemone and accepts the same state and choice / score / noul question shapes, so the official SDK works after a base-URL change. On quality it is not equivalent: held-out accuracy sits a few points behind, automation coverage at a 5% error budget is 0.45–0.57 against 0.70, and knowledge questions are far behind.
Which Kev checkpoint should I run?
The 4B on a mid-range GPU is the practical choice: the 9B gains little for double the memory, and the 27B needs about 55 GB. The original Kev-0.5B still exists and is what early write-ups named, but the project has since moved to 0.8B / 4B / 9B, so older comparisons may be measuring a different model.
Why is Kev slow on a Mac?
It used to be. On the older PyTorch MPS path the same request took about 213 ms; the MLX backend added in September 2026 brought that to 77 ms on a fresh state and 47 ms on a repeated one, after a one-off 3.2 s first call.
Can I fine-tune Kev on my own decisions?
That is the intended workflow — the adapters are small and the training path is documented. But measure your own held-out set first: the project’s published numbers use its own protocol, and cross-project comparisons in this ecosystem are notoriously inconsistent.
Sources
- jaredpalmer/kev — adapters, serving, evals
- Best open source Jev alternatives — MLX latency and drop-in framing
- HN discussion (438 points)
- JevBench board versions v1.3.0 and v1.4.2
Every comparison number on this page is a third-party published figure or a read of a public repository — not a benchmark we ran. We have not tested TypeSafe Jev itself, and its customer agreement forbids using its outputs to build similar products.