openjev
Gemma 3 4B option scorer that prefills context once and scores all options in one pass, on MLX or PyTorch, with a Doom demo.
Overview
openjev (daseinlabs) scores pre-written options with a local Gemma 3 4B in one pass: MLX on Apple Silicon or PyTorch on Windows and Linux. The model prefills the context once, expands the KV cache across the option batch and scores every option in a single padded forward pass with no decoding. Each option's score is its token log-probability given the context, and a softmax gives probabilities, following jevlike.
A demo runs ViZDoom headless, describes each frame as a line of text and ranks the action menu with one /score call or a System One choice question per step. The server exposes a System One-compatible endpoint. Per the list summaries, its docs show zero-shot overconfidence and describe an optional trained head and per-task fine-tuning. It installs with uv and needs Gemma licence acceptance on Hugging Face. It suits developers wanting local option scoring on modest hardware.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which action from the menu should be taken for this frame? | — |
How it works
- Prefill the context once.
- Expand the KV cache over all options.
- Score options by log-probability in one forward pass.
- Softmax to probabilities and pick or threshold.
Strengths
- Shared prefill makes many options cheap.
- Runs on Mac, Windows and Linux, CPU or GPU.
- Optional per-task fine-tuning.
Caveats
- Zero-shot scores are overconfident per its docs.
- Requires accepting the Gemma licence.
Getting started
uv sync; uv run hf download google/gemma-3-4b-it --local-dir models/gemma-3-4b-it; uv run openjev serve --backend torch --device auto --port 8000At a glance
- Type
- Service
- Status
- prototype
- Language
- Python
- Runtime
- MLX or PyTorch, HTTP server
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Open implementation: ranks a Doom action menu with one `/score` call per step and supports per-task fine-tuning, released under MIT with the terminal run recorded.
yibie/awesome-jevGemma 3 option scorer for Apple MLX that shares one prefill across candidate continuations and exposes a System One-compatible endpoint; its docs show zero-shot overconfidence and an optional trained head.
cobanov/awesome-jevOne-pass option scoring with a local Gemma 3 4B on Apple silicon via MLX, inspired by jevlike, with a Doom demo.
hellogumbo/awesome-jev
Frequently asked questions
How are options scored?
By the log-probability of each option's tokens given the context, in one padded forward pass.
Is it calibrated?
Zero-shot scores are overconfident; an optional trained head can help.
Does it work on Windows?
Yes, with the PyTorch backend.
Related projects
Open family of System One-style models fine-tuned from Qwen3.5 and Gemma that return typed decision probabilities in one pass.
ModelbetaPythonApache-2.0 395M ModernBERT System One model serving calibrated Choice, Noul and Score locally as a drop-in /v1/systemone replacement.
ServicebetaPython, TypeScriptGemma 4 12B with its LM head replaced by a small answer head, serving Jev-style noul, choice and score decisions with custom code.
ModelresearchPythonIndependent MLX port of Laya for Apple Silicon: typed decisions in about 13 ms (7 ms multilingual) with no PyTorch or cloud API.
ServicebetaPythonDeploys DiffusionGemma-Jev behind a TypeSafe-compatible API on a Cloud Run GPU, with snake, dino and tetris demos.
ServiceprototypePythonMangaba AI's local, calibrated typed-decision model for Portuguese text, trained to optimize the Brier score; proprietary since v5.
ProjectproductionPython