The Cinema Sessions
Brut's most ambitious workflow: turn a handful of stills into a finished, cut sequence — planned by a crew of AI agents, shot on the video provider of your choice, and assembled locally with ffmpeg, for exactly the bill it showed you.
Stills → a crew that plans the film → a storyboard you edit → clips shot behind a confirm gate → a sequence cut on your machine. You stay in control at every step.
The pipeline
Conform → Reference Board → Scenarist → Artistic Director → DoP
→ Script Supervisor → Storyboard → Film Shots
→ Clip Board → Sequence → Preview
Every arrow is a wire. The agents pass a plan document (JSON on text wires); the boards are where you review and curate.
Don't build this by hand the first time: the whole chain ships as the Cinema Crew template — File ▾ → Browse library… → Cinema Crew. It arrives pre-wired with sensible defaults (invented-first reel brief, cheap planning models, keyframes on Nano Banana); you add stills, pick your video provider, and run. Let's walk what it does.
1 · Prepare the stills
Start from your renders — an Image In node (or a Multi-Shot contact sheet you've curated). Run them through Conform to a single aspect ratio (video wants consistency), cropping each to keep the right part of the frame.
Wire the conformed stills into a Reference Board. This makes the pool visible and numbered — and the tile number is the still number the crew will refer to. Reorder to taste; the numbers are the contract.
2 · The crew plans the film
Chain the four agents, each grounded on the stills:
- Scenarist writes the treatment (one shot = one still — or an invented shot, below).
- Artistic Director sets the look — palette, light, mood.
- DoP turns it into an executable shot plan: camera, motion, duration, and which still grounds each clip.
- Script Supervisor harmonizes speed, light and palette across the whole thing.
Pick the LLM for each — Gemini, GPT or Claude — on your own key. Each plan is editable text: tweak a line and it flows downstream; the analysis shows in the Activity panel. Don't read the raw JSON — each node's 📖 Review opens the plan as an actual document: edit it in place for free, or leave 💬 margin notes and let Revise have the agent apply them (details).
Invented shots — the flourish
Your stills define the project's identity, not the shot list. With a brief like Cinematic Reel (flourish), the Scenarist may also invent compositions no still contains — a detail close-up, a reveal, subtle human presence, the pull-back ending — each anchored on the stills that carry its materials, with a written keyframe prompt. The Artistic Director styles those prompts along with everything else.
The rule never loosens, it moves one level: one clip = one keyframe. An invented shot's start frame is generated (image-to-image on its anchor stills, with the identity clause appended, conformed to the film's aspect) before any video runs. An invented shot is never quietly sent as text-to-video — without an approved keyframe it simply refuses to roll.
Want the full reel behavior? The Scenarist's "Invent every shot" switch makes the stills references only — no shot animates one directly, every start frame is generated. Off, the brief decides shot by shot.
3 · The storyboard — your edit bay
The Storyboard turns the plan into shot cards: per-clip start/end frame swaps with thumbnails, editable and lockable prompts, add/reorder/remove shots. Change a line here and only that shot re-renders. It emits concrete image paths, so the next node just needs the plan wire.
Invented shots arrive frameless. Each shows its keyframe prompt and a 🎨 Generate keyframe button — pick the image model, resolution and (on GPT Image) quality once at the top of the board (the pending count and per-frame price sit next to it and follow your picks; keyframes are cents, clips are dollars). Generated keyframes cache on their prompt + anchors (an unchanged card never re-pays), ↻ re-rolls a fresh take, 📌 pins one against later prompt edits, 🕘 opens the card's history — every take it ever generated, from the project ledger — so a re-roll never loses anything: pin any past keyframe back as the start frame, free. Wiring any image into the card's socket overrides everything. Prefer to ground an invented shot on a real still after all? Just pick one in its start selector.
The film's aspect is your call. The board's aspect dropdown (default: whatever the DoP wrote) conforms every keyframe to the format you choose and stamps it into the emitted plan. Switching aspect later doesn't re-bill: the raw render is kept and simply re-cropped, free.
Batch it. ▶ on the Storyboard (or the 🎨 Generate N button) renders every pending keyframe behind one itemized confirmation — shot list, per-frame price, total. The per-card 🎨 stays for surgical re-work. Declining isn't an error: the plan flows on and Film Shots simply blocks the frameless clips.
End frames, on demand
A clip's end frame used to come only from your stills. Now every card's end selector offers three states: none, a still of the board, or 🎨 generate. Pick 🎨 and the card grows a second frame block to the right of the start frame — same image box, same in-socket and out-plug, same tools — for a generated end frame that continues the start frame: it is rendered image-to-image from that start frame alone (a still, a keyframe or a wired image; never from the reference stills), with a continuity clause and the identity clause appended, conformed to the film's aspect. Where the camera arrives is now yours to direct, for grounded and invented shots alike.
The prompt for that destination is written by the crew: an end-frame writer embedded in the Storyboard sees the actual start frame image, the clip's shot plan (the move, the subject motion, the atmosphere) and where that start frame came from, and drafts the frozen final frame of that one move. It borrows the LLM (and reasoning dial) of the crew node feeding the plan wire — the DoP's or Script Supervisor's brain — one planning call, cents, ledgered like the crew's. Nothing renders from a prompt you haven't seen: ✎ or 🎨 on the end block opens a review — the start frame beside the drafted prompt, editable in place, ✎ re-drafts — and Generate renders. Cancel keeps the text and renders nothing. ↻ re-rolls a rendered end frame, 📌 pins it (it then survives prompt edits and a re-rolled start frame — otherwise a new start honestly orphans its end, since the end continues it), 🕘 opens the card's end-frame history. Wiring any image into the end block's socket overrides everything, and the block's out-plug carries the resolved end frame wherever you want it.
▶ on the board covers end frames too: after the start keyframes, one review lists every armed card at once — drafts filled in, each editable — and one Generate renders them all. An armed end frame that isn't rendered yet blocks that clip in Film Shots, exactly like a missing start keyframe: it is never sent without it. And when the video model has no end-frame input (only some do — Kling 2.5+/3.0, Veo 3.1, Seedance 2.0 among them), the clip still runs from its start frame, but the Film Shots table says so on that row — never silently. Budget-wise, an end frame is a second keyframe on that card (cents) plus one text call.
Look at your frames. Click any card's image to magnify it full-screen, then browse the whole board like a gallery with ← / → (arrows or the on-screen ‹ ›); Esc closes. And every card has an output plug on its right edge carrying that clip's resolved start frame — the generated keyframe, the wired image, or the grounded still — so you can route a frame anywhere: into an Upscale Image for a delivery-res still, a Compose, a Preview. A card whose keyframe is still pending delivers nothing (never a wrong frame). The card's prompt has its own plug too, on the bottom-right — the final clip prompt, overrides and wired prompts applied — so a line of the DoP's wording can be reused or refined anywhere (a Refine, a Text Board, another card's prompt socket). And any card image can simply be dragged onto the canvas: it lands as a ready-filled Image In — detach a keyframe as the frozen base of a new exploration, safe from later re-plans.
4 · Shoot — behind the confirm gate
Wire the Storyboard into Film Shots. It prices every clip — model, duration, resolution, cost — and shows an itemized confirmation. Nothing generates until you approve the total; cancel a line and it updates. Cached and pinned clips cost $0. Then it fans out, staggered to respect rate limits, with per-clip re-roll / ✓✗ / pin.
5 · Review & cut
The Clip Board plays every clip — keep the good, ✗ the misses, ↻ re-roll one. Route the keepers into a Sequence node, which assembles them into one mp4 with local ffmpeg — cuts or crossfades, free. Drop a Preview on the end.
Want it in 4K? Route a hero clip (or the assembled film) through Upscale Video — Topaz Proteus or Gaia CG, audio kept, itemized confirm before any spend. The shipped Cinema Crew template already ends with this finish-in-4K tail (provider unset — the money choice stays yours).
Make it reusable
Select the four agents and collapse them into a "Cinema Team" composite — one droppable node with the stills as its inlets and the plan as its outlet. Save it to the library and start every film from it.
Why it holds together: grounding is enforced in code, not prose — one clip to one keyframe (a still of yours, or a frame generated from your stills), the DoP's still indices reconciled automatically, invented shots blocked until their keyframe exists, an anti-shake stability clause on every clip. The plan you approve is the film you get.