How we reviewed this: in python:3.12-slim on CPU, using the project’s own uv environment and the checkpoints its download command fetches, with the prediction itself run under --network none. We then ran the test suite exactly as the README installs it. This is an open model, so nothing here is a Jev call or a measurement of Jev.
What it does
A research toolkit for visual typed decisions. An image is encoded once, and several questions are answered from the resulting posterior rather than from one pass per question. The repository ships three separate experiments — 8,192 synthetic scenes with a small CNN and a supplied prior, a 2,960-image Oxford-IIIT Pet subset, and 1,680 CLEVR-4 images — each with a fixed event vocabulary. The README says plainly that these are experiments with a limited English parser, not a general visual assistant, which is the right frame for what it does.
Setup
The quick start works as written, apart from one gap covered below:
uv sync --frozen --extra vision --extra dev
uv run --no-sync openjev-vision download
uv run --no-sync openjev-vision predict --checkpoint artifacts/openjev-vision-v0.1/synthetic-joint \
--image examples/vision/scene-0.png --prior examples/vision/scene-0-prior.json \
--questions examples/vision/questions.json
download fetches four checkpoints (synthetic-joint, pets-joint, clevr4-joint, clevr4-independent) plus a binding head, and the prediction then runs with the network off.
Using it
Four questions about one scene, answered together:
answers: left_red noul 0.5334
right_red noul 0.0128
same_color noul 0.4683
both_red noul 0.0073
visual_encodings: 1
That last line is the claim the project is built around, and the output states it rather than leaving you to trust it: four questions, one encoding. The response also carries top_world and the full posterior, so the joint distribution the answers were read from is in the same payload — you can check that both_red is consistent with left_red and right_red instead of taking three independent numbers on faith.
The questions themselves are declarative events (red(left) and red(right)), not free text, which is the limitation the README states up front.
Permissions and data
Local throughout. No API key, no outbound call at prediction time, and the images are yours; the only network access is the checkpoint download. The vision path uses frozen DINOv2 features for public images and a small CNN for the synthetic scenes.
Maintenance
Apache-2.0, a CITATION file, a changelog, a contributing guide, and a CI badge that is green. Fourteen test files, and the README’s own install cannot collect them:
tests/test_v03_data.py:7: from openjev.data_v03 import world_records
src/openjev/branch_model.py:10: from peft import LoraConfig, PeftModel, get_peft_model
E ModuleNotFoundError: No module named 'peft'
peft lives in the qwen extra. CI installs --extra dev --extra qwen --extra vision; the README’s quick start installs --extra vision --extra dev. So the person following the documentation gets a suite that stops at collection — two tests skipped, the other twelve files never reached — while the same suite is green in Actions. One word in the README, or a lazy import in branch_model.py, closes it — reported with both options.
The results are the part worth reading: three seeds, independent calibration, and negative findings kept in — the direct joint predictor degrades on new dependency structures, and independent attributes beat both the joint and the binding heads on unseen CLEVR-4 combinations. A repository that publishes the configuration in which its own idea loses is doing the thing we keep asking for.
Verdict
Take it as what it says it is: a reproducible experiment in reading several visual decisions off one encoding, with checkpoints you can run on a laptop and a results section that does not flatter itself. Install it with --extra qwen as well if you intend to run the tests.
For typed decisions about text from an open model, see AgentJev and SemIf; for the same many-questions-one-prefill idea on Apple Silicon, Jev Visual.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Sep 24, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.