Skip to main content

VideoJev (local)

VideoJev (MCG-NJU, Apache-2.0) is a video System One model family: it scores temporal intervals and multiple-choice options directly against video evidence, without autoregressive answer decoding. OpenTryOn exposes it on the decide service as videojev-4b and videojev-35b-a3b (Path B, extra="local").

Hosted API?​

There is no first-party VideoJev HTTP API today.

ProviderVideo input?Notes
Typesafe Jev (jev)NoPOST /v1/systemone, text/JSON state only
HAL-X THX-01 (thx-01)NoSame System One shape, text/JSON
VideoJevYes (local)HF weights + predict_video

Workarounds (frame captions → text state → Jev) are possible but are not VideoJev integration.

Models​

Registry idHF checkpointBackbone
videojev-4bZhuYuhan/VideoJev-4BQwen3.5-4B
videojev-35b-a3bZhuYuhan/VideoJev-35B-A3BQwen3.6-35B-A3B

Paper: arXiv:2610.18615 · Code: MCG-NJU/VideoJev

Requirements​

VideoJev upstream targets Python 3.12, PyTorch 2.8 + CUDA 12.8, FlashAttention 2, and trust_remote_code checkpoints. Use a dedicated GPU environment (same pattern as Liquid d1 / LTX local):

pip install opentryon[local]
pip install "transformers>=4.51" torch torchvision
# FlashAttention 2 per VideoJev requirements.txt / scripts/env.sh

Optional env overrides:

  • VIDEOJEV_MODEL_ID — default checkpoint for both tiers
  • VIDEOJEV_MODEL_ID_4B / VIDEOJEV_MODEL_ID_35B_A3B
  • VIDEOJEV_BASE_4B / VIDEOJEV_BASE_35B — local Qwen base paths (see upstream repo)

Question schema (VideoJev-native)​

Unlike Jev/d1 noul / choice / score maps, VideoJev expects a JSON array of tasks:

[
{
"id": "grounding-1",
"task": "grounding",
"query": "The model walks the runway."
},
{
"id": "qa-1",
"task": "choice",
"query": "What is she wearing?",
"options": ["A. Evening gown.", "B. Denim jacket.", "C. Activewear."]
}
]

Grounding returns a time interval in seconds; choice returns answer_index and answer.

CLI​

opentryon decide --model videojev-4b \
--video clip.mp4 \
--questions videojev_tasks.json \
--fps 2.0 --max-frames 2048 --context 8192

opentryon decide --model videojev-35b-a3b \
--video https://example.com/clip.mp4 \
--questions videojev_tasks.json \
--context 262144

opentryon decide --model videojev-4b --video clip.mp4 --questions tasks.json --dry-run

Python​

from tryon.models.videojev import VideoJevAdapter

adapter = VideoJevAdapter(variant="4b")
out = adapter.decide(
questions="videojev_tasks.json",
video="clip.mp4",
)
print(out["results"])

MCP​

Restart MCP after registry changes. Tools:

  • decide_videojev_4b
  • decide_videojev_35b_a3b

When to use​

  • Temporal grounding — “when does X happen?” with scored intervals
  • Multiple-choice video QA — fast structured labels for agents (QC, routing, dataset filtering)
  • Repeated queries on one clip — upstream supports cached/joint inference for many questions per video

For text/image noul/choice/score without video, use Jev, d1, or THX-01.