OneJev is a multimodal System One decision model. It returns calibrated probabilities for typed questions about screenshots, photos, videos and text in a single forward pass. Available in 0.8B, 4B, 9B and 27B.
Results
Accuracy (%). The OneJev test set is held out from OneJev training. Jev 1.13 uses published text-only scores; Jev-Omni and Qwen3.8-27B thinking were evaluated by us.
Quick start
Choose one backend, then run the Python example below.
Option A: PyTorch
For NVIDIA GPUs. Supports text, images and video.
pip install "qev[torch] @ git+https://github.com/OmniJev/OneJev.git"
qev serve --model OmniJev/OneJev-4B --port 8000
Option B: llama.cpp
For GGUF models. Supports text and images; use PyTorch for video. Install
llama.cpp first (brew install llama.cpp on macOS).
pip install git+https://github.com/OmniJev/OneJev.git
qev serve --gguf mradermacher/OneJev-4B-GGUF:Q8_0 --port 8000
Send a request
Both backends serve the same API at http://localhost:8000. In another terminal, run this example with your own
screenshot.png:
from qev import Client, Choice, Noul, Score
from qev.media import data_uri
r = Client("http://localhost:8000").system_one(
state={"task": "Pay the open invoice from ACME", "screen": "<image:1>"},
media=[{"type": "image", "data": data_uri("screenshot.png")}],
questions={"done": Noul("The invoice has been paid"),
"next": Choice("What should the agent do next?",
{"click": "click an element", "type": "type text", "scroll": "scroll", "stop": "stop"}),
"progress": Score("How far along is the task?", ["not started", "halfway", "almost done", "done"])},
)
r.answers["done"].noul # probability of yes
r.answers["next"].probabilities # one probability per option
r.answers["progress"].score # expected level
The API is compatible with TypeSafe System One. More examples: video, curl, official TypeSafe SDK.
Training
git clone https://github.com/OmniJev/OneJev.git
cd OneJev
pip install -e ".[train]"
# Choose A or B. A is enabled below.
# A. Demo: 100 examples with images (23 MB)
hf download OmniJev/OneJev-Data sample/sample-100.parquet --repo-type dataset --local-dir data/onejev
python -m train.unpack data/onejev --sample
# B. Full dataset: 94,707 examples (17.7 GB). Uncomment these two lines instead of A.
# hf download OmniJev/OneJev-Data --repo-type dataset --include "data/*.parquet" --local-dir data/onejev
# python -m train.unpack data/onejev
Either option creates data/onejev/train.jsonl and extracts images and video frames into data/onejev/media/.
OneJev-Data releases 94,707 of the original 99,193 training questions; the remaining sources do not permit redistribution.
Fine-tune
The four models fine-tune Qwen3.5-0.8B, Qwen3.5-4B, Qwen3.5-9B and Qwen3.8-27B for one epoch with the vision tower
frozen. The configs use a learning rate of 5e-6, a 16,384-token limit, and cross-entropy plus Brier loss over answer
probabilities. To train the 4B model on four GPUs:
torchrun --nproc-per-node 4 -m train.sft --config train/configs/onejev_4b_full.yaml
Configs: 0.8B · 4B ·
9B · 27B.
Set --nproc-per-node to your GPU count; the 9B and 27B configs enable FSDP to shard model and optimizer state.
For your own data, change train and media_root in the config.
The final 4B checkpoint is saved to train/runs/onejev_4b/final. Start it with:
qev serve --model train/runs/onejev_4b/final --port 8000
Citation
@misc{onejev2026,
title = {{OneJev}: A Multimodal System One Decision Model},
author = {{OmniJev Team}},
year = {2026},
howpublished = {\url{https://github.com/OmniJev/OneJev}}
}
Friendly Links
License
Metadata
Release files for onejev 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| onejev-0.1.1.tar.gz | 51.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| onejev-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 105.3 kB
Release files / onejev-0.1.1.tar.gz
| Download URL | onejev-0.1.1.tar.gz |
|---|---|
| Size | 51.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a234d5fd597d6a21187a688d94c656a38c2be9dc472574d3fba0a903ba220a75
|
|
BLAKE2b-256 checksum How to use checksums |
c98e2b4417d812a40b49b2b6a1b7c59b083aa24ad79527b3302314406e93c188
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / onejev-0.1.1-py3-none-any.whl
| Download URL | onejev-0.1.1-py3-none-any.whl |
|---|---|
| Size | 53.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01ac5a9168b70d5632a7d77138d0a17be29ecf51f3b6b4f956595b1b854710cb
|
|
BLAKE2b-256 checksum How to use checksums |
787d9dd2122299e5b9eb641037a77c63da05e49d0563d8b12d5530777a30a9e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|