Skip to content
MrJev

jevmlx

Jev-style typed decisions from local MLX models on Apple Silicon.

View on GitHub →

Hands-on review

Rebuilds Jev's approach on local MLX models: one prefill, parallel rows, JSON assembled rather than parsed. Apple Silicon only, and the demo data is broken.

Good for

  • Running Jev-style typed decisions entirely on an Apple Silicon Mac
  • Reading a careful implementation of constrained, no-parse structured output
  • Anyone who wants measured numbers about batching drift rather than claims

Watch out for

  • Apple Silicon only; it installs cleanly elsewhere and then cannot run
  • The shipped example data has all its dollar amounts stripped out
  • The README's leaderboard is transcribed from elsewhere, not measured here

Tested Sep 20, 2026 at 7ccf3ab4f815 · Python 3.12 in Docker on Linux x86-64 — its inference engine needs Apple Silicon, so only the non-model paths ran here

How we reviewed this: we installed it in Docker on Linux, ran the full test suite, and read the engine. Its inference path requires Apple Silicon and MLX, so we could not run the model; everything about generation here is read from code, not observed.

What it does

jevmlx, by bnsd55, is not a client for Jev — it rebuilds the technique on open models you run locally with MLX. A schema of typed fields becomes a set of teacher-forced continuations sharing one prefill; at each decision point the engine reads the next-token logits and picks; the JSON is then assembled from the winners rather than parsed. There is no JSON repair loop and no retry, because there is nothing to fail to parse — the parallel path never calls a JSON decoder at all.

Supported field types are boolean, enum, multi-select and ordered enum, and one bundled preset goes to 255 options.

“One forward pass” is the idealised description: in practice there is chunking when there are many rows, an optional prior pass, a re-score at batch size one when two options are close, and a second pass for dependent fields. The telemetry counts only the main loop, so the reported pass count understates real model calls.

What we could and couldn’t check

Its tests are written for macOS: on Linux, 734 passed and 110 failed, and every failure we traced was environmental — MLX missing, or a fixture calling a symbol that is None without it. There are no skip guards, and the project’s CI only runs tests on macOS, so the Linux surface has never been exercised despite the package installing there.

That install is the first thing to fix: the dependency list has no platform marker, so pip install succeeds on any machine and then every model command raises “requires Apple Silicon”. The error is clear, but it arrives after installation rather than during it.

We did find one reproducible bug in a command that doesn’t need a model: jevmlx validate passes the alias (quality) straight to the tokenizer loader instead of resolving it to a model id, so it tries to fetch a nonexistent repository and fails after ten retries. Its help text says “no model download”.

And the shipped example data is corrupted: in all four presets, every dollar amount has been eaten — “Transaction Amount: ,850.00 USD”, “Average monthly spend ,200”. Those files are the context behind the README’s headline fraud example, so the demo’s key evidence isn’t there. It looks like an unquoted shell variable at generation time.

The honest parts

Two things we want to credit, because they’re rare.

The leaderboard in the README is labelled as a citation, not a measurement — the data file says so in its first key, and the build script separates cited, computed and measured rows. No number in that table is the project’s own.

Batching drift is measured, not hand-waved. The repository documents that batched matrix multiplications tile differently by shape, includes a probe showing the measured score drift, and notes that it exceeds the project’s own tie band — while also recording that no decision flipped in that probe. A separate note reports that a higher-precision decision head does not remove it. That is the kind of disclosure most projects would bury.

Verdict

As an implementation of the idea — structured decisions with nothing to parse — this is the most rigorous open attempt we’ve read, and the engineering habits (golden prompt vectors, crash-resumable evaluation, Wilson intervals in the leaderboard builder) belong to a much older project.

It is alpha, it is Mac-only in practice, its serve mode has no authentication if you move it off localhost, and its demo data needs regenerating. Read it for the technique; run it only on Apple Silicon.

For other open reproductions, see our Jev alternatives guide.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Open Models & Reproductions

Laya

★ 35k▲ 521

NandhaKishorM/laya

Non-autoregressive decision engine over 100+ languages: three checkpoints and a router that detects the script and dispatches per request. Its benchmarks end with a limits section naming the datasets it does not generalise to and the headline figure that came from a training split.

PythonReviewed

kev

★ 9.8k▲ 215

jaredpalmer/kev

Jev-style decision models from 0.5B to 8B, built as LoRA adapters on Qwen and served behind a Jev-compatible /v1/systemone API.

PythonReviewed

SemIf

★ 4.9k▲ 35

TheoLeeCJ/SemIf-OpenJev

Jev-style decisions from a frozen 4B model on a single RTX 3090, with a browser demo. Formerly OpenJev.

PythonReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.