Instructions to use OmniJev/OneJev with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use OmniJev/OneJev with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="OmniJev/OneJev")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("OmniJev/OneJev", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use OmniJev/OneJev with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "OmniJev/OneJev" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OmniJev/OneJev", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/OmniJev/OneJev
- SGLang
How to use OmniJev/OneJev with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "OmniJev/OneJev" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OmniJev/OneJev", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "OmniJev/OneJev" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OmniJev/OneJev", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use OmniJev/OneJev with Docker Model Runner:
docker model run hf.co/OmniJev/OneJev
We propose OneJev, a multimodal System One decision model. Give it a screenshot, a photo, a video or plain text along with a few typed questions, and it returns a calibrated probability for every option of every question in a single forward pass. It speaks TypeSafe's System One API, extended with images and video, and comes in four sizes, all trained on the same 99,193 questions drawn from real agent runs, videos and images.
Models
| Model | Folder | Base | Weights |
|---|---|---|---|
| OneJev-0.8B | 0.8B/ |
Qwen3.5-0.8B | 2.2 GB |
| OneJev-4B | 4B/ |
Qwen3.5-4B | 10.4 GB |
| OneJev-9B | 9B/ |
Qwen3.5-9B | 18.8 GB |
| OneJev-27B | 27B/ |
Qwen3.8-27B | 54.7 GB |
| OneJev-27B-FP8 | 27B-FP8/ |
OneJev-27B in 8-bit | 30.4 GB |
Each folder is a full model; qev serve --model OmniJev/OneJev/4B fetches just that folder.
Results
Scores are accuracy in percent. The OneJev test set is questions from the same kinds of data as training that the models never saw during training. Jev 1.13's scores are its published ones, and it reads text only. We ran Jev-Omni and Qwen3.8-27B thinking on the same questions; the thinking model writes a few thousand words of reasoning before each answer, OneJev answers directly.
Quick start
pip install git+https://github.com/OmniJev/OneJev.git
qev serve --model OmniJev/OneJev/4B --port 8000
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
Text-only requests are plain System One requests; the official typesafe-sdk works with
TYPESAFE_BASE_URL=http://localhost:8000. More in examples/: a screenshot, a video, curl, and the official
SDK. benchmarks/latency.py measures the speed chart on your own GPU.
How it works
The state is read once, with its images and video frames, and every question runs as a short branch off that one read. The answer is the probability of each option letter at the last position. Ten questions about one screen cost little more than one.
API
POST /v1/systemone takes TypeSafe's request plus an optional media list; the state points at each item as
<image:N> or <video:N>.
image {"type": "image", "url": ...} {"type": "image", "data": <base64>} {"type": "image", "path": ...}
video {"type": "video", "frames": [<image>, ...], "fps": 2.0}
Training
Full-parameter fine-tuning of Qwen3.5-0.8B, Qwen3.5-4B, Qwen3.5-9B and Qwen3.8-27B for one epoch, vision tower frozen.
Citation
@misc{onejev2026,
title = {{OneJev}: A Multimodal System One Decision Model},
author = {{OmniJev Team}},
year = {2026},
howpublished = {\url{https://github.com/OmniJev/OneJev}}
}