Become an AI Director with highly responsive prompt controllability
The LiveCore model is an interactive, real-time video generation system that creates continuous video streams using diffusion-based AI. Unlike traditional video generation models that produce fixed-length clips, LiveCore generates videos in a streaming fashion, allowing for dynamic prompt changes and real-time interaction during the generation process.Each generation cycle produces 240 frames. After completing a cycle, the model resets to a black screen and waits for new prompts to be scheduled before the next generation can begin.
Schedule a prompt to be applied at a specific frame during video generation.Parameters:
Parameter
Type
Required
Description
new_prompt
string
Yes
The prompt text to use
timestamp
integer
Yes
The frame number at which to apply the prompt (0-239)
Each generation cycle is 240 frames (0-239). After reaching frame 239, the model resets to a black screen and waits for new prompts before starting the next generation.
Behavior:
Scheduling a prompt at a timestamp that already has a prompt will overwrite it
Prompts scheduled in the past are ignored (e.g., if the model is at frame 100 and you schedule at frame 50, it will be ignored)
At least one prompt must be scheduled at frame 0 before calling start
Prompts can be scheduled while generation is running for real-time control
Example:
Copy
// Schedule initial prompt (required before start)await reactor.sendCommand("schedule_prompt", { new_prompt: "A serene mountain landscape at sunrise", timestamp: 0});// Schedule a transition at frame 30await reactor.sendCommand("schedule_prompt", { new_prompt: "The mountain transforms into a futuristic city", timestamp: 30});
Listen for messages from the model using reactor.on("newMessage", ...) (imperative) or the useReactorMessage() hook (React). The model emits two types of messages:
State messages provide a snapshot of the current model state. They are emitted:
When a prompt is scheduled
When generation starts
When generation is paused or resumed
After each frame block is processed
Copy
{ type: "state", data: { current_frame: number, // Current frame being processed current_prompt: string | null, // Active prompt text (null if not started) paused: boolean, // Whether generation is paused or waiting scheduled_prompts: { // Map of frame numbers to prompts [frame: number]: string } }}
The paused field is true both when explicitly paused and when waiting for generation to start (before a prompt at frame 0 is scheduled and the start command is issued).