Tracks
| Direction | Name | Type | Format | Rate |
|---|---|---|---|---|
| Outbound | main_video | Video | (N, H, W, 3) uint8 RGB | Adaptive, paced to model throughput |
Session lifecycle
WAITING. start transitions to
GENERATING (provided a prompt and seed image are set); pause moves to PAUSED; resume returns
to GENERATING; reset clears state and returns to WAITING from any state. The
Commands table below lists each command’s preconditions and effects. See
Sessions for the separate connection-level lifecycle
(disconnected → connecting → waiting → ready) the session passes through before reaching the
runtime states above.
When all chunks of a run complete and the session is still started, the server automatically kicks
off the next run with the same prompt and image. Call reset to stop the loop and re-stage with new
conditions.
Commands
Send commands to the model usingreactor.sendCommand(). Setter commands (set_*) take effect at
the next chunk boundary. Below are all available commands:
| Command | Description |
|---|---|
set_prompt | Set or swap the text prompt (works before and during generation) |
set_image | Set the seed image that anchors the world (required before start) |
set_movement | Set WASD movement direction |
set_look_horizontal | Set yaw (look left/right) direction |
set_look_vertical | Set pitch (look up/down) direction |
set_rotation_speed_deg | Set how fast the camera rotates when a look axis is active |
set_seed | Set the RNG seed for the next generation |
start | Begin generation (requires a prompt and a seed image) |
pause | Pause after the current chunk |
resume | Resume from a pause |
reset | Clear all session state and return to WAITING |
- set_prompt
- set_image
- movement / look
- set_rotation_speed_deg
- set_seed
- start / pause / resume / reset
set_prompt
Stores the prompt and re-applies it on the next chunk boundary. Works beforestart and
mid-generation for live prompt swaps. Emits prompt_accepted then conditions_ready.Parameters:| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Prompt text, ≤ 1000 chars |
Messages
LingBot emits the following messages. Every message is delivered as JSON{ "type": "<name>", "data": { … } }.
| Event | When | Payload |
|---|---|---|
prompt_accepted | After set_prompt | { prompt: string } |
image_accepted | After set_image decodes | { width: int, height: int } |
conditions_ready | After set_prompt or set_image | { has_prompt: bool, has_image: bool } |
generation_started | After start | { prompt: string, chunk_num: int, frame_num: int } |
chunk_complete | After each chunk emits | { chunk_index: int, frames_emitted: int, active_prompt: string, active_action: string } |
generation_paused | After pause | { chunk_index: int } |
generation_resumed | After resume | { chunk_index: int } |
generation_complete | After all chunks of a run finish | { total_chunks: int } |
generation_reset | After reset | { reason: string } |
command_error | When a command is rejected | { command: string, reason: string } |
state | On connect, after every command, and after every chunk_complete | Full session snapshot |
state payload
state is the single source of truth for driving UI. Subscribe once and treat it as the
authoritative session snapshot; you generally do not need to track individual set_* and
chunk_complete events yourself.
| Field | Type | Meaning |
|---|---|---|
running | bool | started && !paused. Equivalent to “frames are actively streaming” |
started | bool | True once start has been accepted; remains true through pauses and across auto-restarts. Flips back to false on reset |
paused | bool | True while in the PAUSED state |
current_chunk | int | Zero-based index of the last completed chunk; 0 before the first chunk and after reset |
current_prompt | string | null | The prompt currently driving generation, or null if none set |
has_prompt | bool | Whether a prompt has been set this session |
has_image | bool | Whether a seed image has been set this session |
current_action | string | +-joined composite of movement and look. E.g. "w+left", or "still" when idle |
movement | string | Current value of the movement input field |
look_horizontal | string | Current value of the look_horizontal input field |
look_vertical | string | Current value of the look_vertical input field |
rotation_speed_deg | float | Current rotation speed (0.0 – 30.0) |
seed | int | Current seed value (effective only on the next start) |