@reactor-models/sana-streaming SDK: a <SanaStreamingProvider>
and hooks for React, a SanaStreamingModel class for plain JavaScript, with every command, message,
and track checked at compile time. It wraps the same base wire protocol every Reactor model speaks,
so you can also drive it from the base Reactor client by command
name (the path for Python). SANA-Streaming’s surface adds commands for applying edit prompts and
for steering a live run.
At a glance
The model name is
reactor/sana-streaming. The typed SDK bakes it in
(new SanaStreamingModel(), <SanaStreamingProvider>); with the base class you pass it yourself
(new Reactor({ modelName: "reactor/sana-streaming" })). See
Pricing & Billing for how billing works.
Key features
Surgical edits
Change the one thing you name and nothing else.
Real-time responsiveness
Send a new edit mid-stream and watch it land about a second later, not after a re-render.
Live webcam input
Restyle yourself, your room, or your product demo as it streams.
Quick start
The fastest path to a working SANA-Streaming app is thecreate-reactor-app CLI, which scaffolds a
runnable project for you. You can also clone the
open-source reference frontend
directly, or follow the tutorial for a guided
walkthrough.
- npm
- pnpm
pip install reactor-sdk and drive the same edit from the base SDK — see From Python
below (and the quickstart for the full walkthrough).
A minimal connect-and-edit flow in React wraps your app in <SanaStreamingProvider> and drives the
edit from a child component with useSanaStreaming():
publish comes from the base SDK and works the same on every model; useSanaStreaming()
exposes it next to the typed commands (see Tracks). To change the edit
mid-stream, call setPrompt again: the new edit lands at the next chunk boundary, about a second
later. Prefer plain JavaScript?
new SanaStreamingModel() carries the same typed methods; see the
schema’s complete example.
From Python
The base SDK drives the same edit from Python. Publish a camera withpublish_track(), describe the edit, then start.
Edited frames arrive as NumPy arrays.
How it works
On connect the model is live but idle. Publish your camera and callstart; the edited stream
begins on main_video. A prompt is optional: with none the model streams a near-reconstruction of
the source, and setting one steers the edit. From there you direct it in real time: send a new
prompt and the change lands at the next chunk boundary, so successive edits feel like adjustments
to a live feed rather than separate render jobs. The run has no length limit. It continues until
you send reset or the session ends.
The architecture comes from the paper SANA-Streaming: Real-time Streaming Video Editing with Hybrid
Diffusion Transformer (Zhao et al., 2026), research led by NVIDIA with collaborators at MIT, THU,
NUS, and HKU.
See the schema for every command and message, and the
prompt guide for how to write edit prompts that
land where you aim them.