StackMap
Subscribe

kev vs localjev

Open reproduction of TypeSafe's Jev: a LoRA + readout head on Qwen that answers many typed questions about one document in a single prefill pass, returning calibrated probabilities. — versus — GitHub Next's local Jev bridge: a Bun/TypeScript POST /v1/systemone that translates typed decision questions into prompts for DiffusionGemma behind any OpenAI-compatible endpoint.

The curated verdict

Both serve a local Jev-compatible /v1/systemone so TypeSafe's SDK works against localhost; kev trains a LoRA + readout head so the probabilities come from weights, LocalJev prompts a general model for a JSON probability vector — portable to any OpenAI-compatible backend, but self-reported rather than read from logits.

kevlocaljev
Stars492380
Forks3022
LanguagePythonTypeScript
LicenseApache-2.0MIT
Last activityyesterday2 days ago
Topicstraining, localgateway, local
Curated connections85

kev — the curator's take

Reach for kev when the task is decisions, not prose: route this ticket, score this risk, answer 30 yes/no questions about one document — and you want a number you can threshold on rather than text you have to parse. The head is trained with cross-entropy on labelled outcomes, so the probabilities mean something (kev-8b: Brier 0.34, 8% confident errors out of domain), and a block-causal mask keeps questions from seeing each other, verified to 4e-6 against separate requests. It speaks TypeSafe's System One API, so their SDK works against localhost with a base_url change. Not a general chat or agent model - it never decodes, and it only answers the question types you define (noul/choice/score). Don't use it zero-shot on your own domain either: the value is in training the head on your labels, and the three 0.6B/4B/8B checkpoints are explicitly previews that failed the author's own release screen on held-out rule reasoning. Real Jev still wins out of domain (0.86 vs 0.77) - kev's pitch is that it runs on your laptop and you own the weights.

localjev — the curator's take

Use LocalJev when you want to point TypeSafe's SDK at your own hardware today, with a model you already serve: set TYPESAFE_BASE_URL and the quickstart runs unchanged, with chunking, admission control (max-inflight, HTTP 529 queue), and corrective retries on malformed JSON already handled. Read the honesty in its own README before trusting it: the probabilities are *generated* by the model as a JSON scalar/vector, not read from logits, so it is wire-compatible with Jev but not mathematically equivalent — OpenJev's structured read needs unmerged vLLM extensions that oMLX doesn't expose. That makes it fine for routing and triage, and the wrong tool for consequential decisions until you have run its own bake-off (AG News / BoolQ / SST-5, five models, two input lengths) on your workload. If you would rather own calibrated probabilities than borrow them, kev trains a readout head instead of prompting.