| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| .gitattributes | 1.57 kB xet | aacf151a | |
| README.md | 3.21 kB xet | 3672ae7d | |
| added_tokens.json | 756 Bytes xet | 4019b50f | |
| chat_template.jinja | 5.29 kB xet | 5633af92 | |
| config.json | 1.69 kB xet | 1126300a | |
| generation_config.json | 152 Bytes xet | f678e14f | |
| merges.txt | 1.67 MB xet | 87912eed | |
| model-00001-of-00004.safetensors | 4.13 GB xet | 80f681bf | |
| model-00002-of-00004.safetensors | 4.91 GB xet | de532866 | |
| model-00003-of-00004.safetensors | 4.91 GB xet | a41bd888 | |
| model-00004-of-00004.safetensors | 3.59 GB xet | 8bdbe7f0 | |
| model.safetensors.index.json | 67.8 kB xet | 212c8019 | |
| preprocessor_config.json | 782 Bytes xet | 17427eab | |
| special_tokens_map.json | 613 Bytes xet | 8b458476 | |
| tokenizer.json | 11.4 MB xet | 7739c59e | |
| tokenizer_config.json | 5.85 kB xet | 784df873 | |
| video_preprocessor_config.json | 817 Bytes xet | c336fbe2 | |
| vocab.json | 2.78 MB xet | 9208e1be |
JoyAI-VL-Interaction
The first open, vision-driven real-time interaction model โ it watches a live video stream and decides on its own when to speak, stay silent, or delegate.
๐ Paper ยท ๐ Project Page & Demos ยท ๐ป GitHub ยท ๐ค Paper Page
Overview
Most large models today are turn-based: they answer only when you ask. But many moments in the real world don't wait for a question โ a fire starts on a security feed, someone falls, a product flashes by in a livestream. Once missed, the moment is gone.
JoyAI-VL-Interaction is built for exactly these moments. It is an 8B-scale, vision-first interaction model that continuously watches a live video stream and, every second, decides on its own to take one of three actions:
- Speak โ respond when something is worth saying
- Stay silent โ keep watching when nothing warrants a response (a first-class, trained action)
- Delegate โ hand a hard subtask to a background model/agent, keep watching, and weave the result back in when it returns
The decision of when to act is learned inside the model (from second-by-second time-aligned data + RL), not bolted on by an external turn-detector or polling loop. Vision is the first-class driver; speech (ASR/TTS) is treated as pluggable I/O.
To our knowledge, this is the first open, vision-driven interaction model released together with its training recipe, data, and a complete deployable system.
vLLM Usage
vLLM-Omni provides day-0 support for JoyAI-VL-Interaction! The model is a standard Qwen3-VL VLM served by a plain vllm serve; vLLM-Omni adds the real-time interaction layer on top โ the per-second speak / silence / delegate orchestration, 3-tier summary memory, and pluggable ASR / TTS / delegation. For installation and full setup, see the vLLM-Omni recipe.
Online Serving
# git clone https://github.com/vllm-project/vllm-omni.git
# 1. Serve the model (plain `vllm serve`, NOT --omni โ it is vanilla Qwen3-VL)
vllm serve jdopensource/JoyAI-VL-Interaction-Preview \
--served-model-name JoyAI-VL-Interaction-Preview --port 8061 \
--max-model-len 131072 --enable-prefix-caching --limit-mm-per-prompt '{"image":256,"video":1}'
# 2. Start the interaction orchestrator (OpenAI-compatible, :8070)
python -m vllm_omni.experimental.fullduplex.joyvl.serving.server --port 8070 \
--main-backend-url http://127.0.0.1:8061/v1 --main-model JoyAI-VL-Interaction-Preview
For the full browser demo โ live webcam / RTSP input, voice (ASR/TTS), and the per-tick decision stream โ run JD's official WebUI (services/webui) in front of the orchestrator; see the vLLM-Omni recipe for the steps.
- Total size
- 17.6 GB
- Files
- 18
- Last updated
- Jul 2
- Pre-warmed CDN
- US EU US EU