Video
Brainstorm turns prompts and images into short video clips that live right on
the board. Every clip is a video bubble — a <video> with controls in the same
chrome as code cells (a draggable header, a bottom-right resize grip, and an ×
to remove it) that pans and zooms with the canvas and plays inline.
Text-to-video
Right-click → Video → Text-to-video opens the generate dialog in video mode. Describe the video, choose the length in seconds and a count (and, in hosted mode, a different model per clip), and hit Generate. The clip(s) drop onto the board as video bubbles at the click point — no source image needed. (You can still toggle the dialog back to Image if you’d rather run text-to-image.)
Image-to-video
Every image — loaded or generated — carries an orange + on its bottom edge. Click it to open the Transform image dialog, which has an Image / Video toggle. Flip it to Video, write a prompt, choose the length and a count, and hit Animate to run image-to-video from that source image.
The result is a small lineage beneath the source, joined by Bézier connectors — the same shape as image-to-image, but the row holds clips instead of stills:
source image → prompt bubble → row of generated clips
- The prompt bubble is display-only; the clips are full video bubbles that play inline, drag, resize, and close.
- The same curved connectors apply — they reshape as you drag either end, and a hover-to-remove × sits at each connector’s midpoint.
Loading a video
Right-click → Video → Load video picks a local video file and drops it straight onto the board as a video bubble — handy for bringing an existing clip onto the canvas alongside everything else.
Videos in code cells
Video bubbles plug into code cells as data — the same way spreadsheets and images do — and any video a cell writes comes back onto the board as its own clip. (In-browser kernel only.)
- As input — the
VIDEOSdict. Every video bubble has its own orange +: click it for a small menu — Python spawns a code cell that reads the clip, HTML5 spawns an HTML5 bubble with the clip linked in — or drag the + onto an existing code cell or HTML5 bubble to link the video in there. In a code cell, each linked video — and any inherited from an ancestor cell — is written into the kernel filesystem and exposed through an auto-injectedVIDEOSdict (video1,video2, … → path), so you can e.g.cv2.VideoCapture(VIDEOS["video1"]); in an HTML5 bubble it’s injected into the iframe as aVIDEOSglobal of data URLs. The link is a green connector with the same hover-to-remove ×, and it’s re-materialized on every run. The magic wand is told the availableVIDEOSkeys too, so a generated snippet reads the real clips instead of inventing paths. - As output — a written file becomes its own bubble. When a run writes a
video file (
.mp4,.webm,.mov, …), Brainstorm surfaces it as its own video bubble to the right of the cell, joined by a Bézier connector — the video twin of how image outputs get their own image bubbles. A re-run that rewrites the file replaces the clip; detach the connector (hover-×) to keep one as a standalone clip the cell won’t overwrite. (Linked input videos aren’t mistaken for outputs — only files the cell actually writes are surfaced.)
VIDEOS, and a run's written video appearing as its own connected bubble.Playback tip. A clip plays in its bubble only if the browser can decode it — prefer H.264
.mp4or.webm. The AVI container isn’t supported by browsers, so an.avioutput is still captured and connected but won’t play in-app.
Persistence & sync
Clips persist and sync with the board and survive disk export/import. Each clip’s bytes are stored locally (in IndexedDB), and for Plus users they also sync to the cloud so a collaborator can play a clip they don’t have locally — a reloaded or shared board shows its clips without regenerating. Free, lapsed, and signed-out boards keep video local-only.
Settings & metering
Configure the video track — BYOK vs hosted, model / base URL / API key, or the hosted model picker — in the Models tab, alongside Chat and Image generation. Hosted video is metered per clip from your balance. See Accounts & billing.