BRUT DOCS getbrut.app ↗

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 on your machine, 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 → Director (plan + proof sheet)
        → Storyboard (keyframes) → Film Shots
        → Clip Board → Sequence → Preview

Every arrow is a wire. The Director passes a plan document along; the boards are where you review and curate.

Don't build this by hand the first time: the whole chain ships as the Stills → Film card (the library's From Brut shelf, or the home's Workflows row): one composite whose knobs are the Director's dials (brief, style, shots, runtime, people, audio), the film aspect and the clips' Quality (720p, 1080p or 4k). The card comes set up with models that work well together: GPT 5.6 Terra plans, GPT Image 2.5 Flare renders the proof sheet and the keyframes (xhigh, 2K), Kling 3.0 on your kling.ai plan shoots the clips with audio; open (⤢) the card to change any of them. Wire your stills in, set the knobs, run: the Director plans, its proof sheet renders right after and opens for your call (take it, a new take, or ✗ frames and reinvent them; stop, and nothing downstream runs), then the keyframe batch and the Film Shots table still ask before any spend. The card's 📖 Plan opens the Director's document to read, edit and annotate, its 🎬 Proof sheet reopens the sheet any time; open the card to judge the keyframes and the clips on their boards. Finish in 4K is the next card it offers. Let's walk what it does.

The Stills → Film card: the whole chain from stills to the cut, one composite with its dials on the face
## 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 plan refers to the stills by these numbers.

2 · The Director plans the film

One Director node. It writes the concept, the look and the shot plan together, and the film comes out varied: an arc across the shots, lenses and framing changing shot to shot, no still used twice in a row. Pick a Brief and a Style, set shots and runtime, choose how much human presence you want, and wire it straight into the Storyboard. Every clip also gets a one-line ambient sound note for video models that produce audio.

Before anything spends on keyframes, the Director's 🎬 proof sheet renders right after the plan, in the same run: one cheap image of the whole film as a numbered contact sheet, all frames in one grade. The run then stops on it and asks for your call. Select the frames that don't inspire you and ✎ Reinvent rewrites only those clips (the others stay exactly as they were) and re-renders the sheet for cents; ↻ New take re-rolls the same plan; Take this sheet lets the run go on (a later run with the same sheet never asks again); Stop runs nothing downstream. 📌 pin the sheet you validate to keep it through plan edits. The sheet you take guides every keyframe: what you approved is what gets produced.

Run the Director: concept, look and the executable shot plan land in one call; the proof sheet renders the whole film for cents
Pick the Director's LLM — **Gemini, GPT or Claude** — on your own key. The plan is **editable text**: tweak a line and it flows downstream. Don't read the raw plan text — the node's **📖 Review** opens the plan as an actual document: edit it in place for free, or leave **💬 margin notes** and let **Revise** apply them ([details](/docs/nodes/cinema-crew.html)).

The four-agent crew (Scenarist / Artistic Director / DoP / Script Supervisor) is legacy since 1.1.1: the Director plans better films, so the crew nodes are hidden from the node browser. Graphs that already use them keep loading and running exactly as before — details.

Invented shots — the flourish

Your stills define the project's identity, not the shot list. The Director invents most compositions — 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 already styled to the film's look.

The rule never loosens, it moves one level: one clip = one keyframe. An invented shot's start frame is generated from its anchor stills, guided by the proof sheet you took, at 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 Director'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 shots, and ✕ mutes a card (greyed, kept, ↺ to bring it back) rather than deleting it. Change a line here and only that shot re-renders. It passes the actual frames along with the plan, so Film Shots needs only one wire.

The plan you see always matches the board's tiles. An anchor that points at a still the board doesn't have stops with a clear message on its card, never silently, and 📖 Review on the Director lets you rewrite a shot's anchors by hand.

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). A keyframe is kept as long as its prompt and anchor stills don't change (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? Pick one in its start selector; 🎨 generate in the same selector brings its keyframe back. That 🎨 entry is on every card: a grounded shot, or a shot you added yourself (+ in the board's header), switches to a generated keyframe too. Write its keyframe prompt (✏ on the card, the 🎨 line), check the anchor stills beside it (the still the card was on, by default; empty = every still on the board), 🎨. Until the prompt is written the card says so and the clip stays blocked downstream, never sent as text-to-video.

Swap a start frame, generate a keyframe for an invented shot, drag a frame out to keep it
**The film's aspect is your call.** The board's aspect dropdown (default: the plan's format) 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

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 (a still, a keyframe or a wired image), at 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 drafted for you, and the draft also picks the reference stills that show what the move reveals (at most three), so the destination comes from your real project, not from invention. It uses the planning model of the node feeding the plan wire: one text call, cents, in the ledger like the plan'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 the writer's still picks as toggleable thumbnails (tick more, untick any) — 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 frame needs a new end frame, 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. Every prompt a card owns has a plug, too, in a labeled plug bar at the card's bottom: prompt in / prompt out, 🎨 keyframe prompt on invented shots, ⇥ end prompt on armed cards — so any of them can feed a Refine or a Text Board, and you can read which is which.

▶ 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, prompt out in the labeled plug bar at the card's bottom (the final clip prompt, overrides and wired prompts applied), so a line of the plan'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 first adapts every clip prompt to the video model you picked (a cheap text call per clip, cents, in the ledger); the table marks those rows ✦. It then 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. A tick box per row chooses what gets sent (untick = kept in the table, greyed, not sent — render a few, judge, then the rest). Clips already made (unchanged) and pinned clips cost $0. Then it shoots several clips at a time, with per-clip re-roll / ✓✗ / pin.

Every clip priced in the table, one itemized confirmation, nothing spends before your OK
## 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 on your machine — cuts or crossfades, clip audio kept, vertical reels stay vertical, free. Drop a Preview on the end.

Two clips cut together with a crossfade and played in Preview: local ffmpeg on your machine, no cost
Want it in 4K? Route a hero clip (or the assembled film) through **[Upscale Video](/docs/nodes/upscale.html)** — Topaz Proteus or Gaia CG, audio kept, itemized confirm before any spend. The shipped **Finish in 4K** card is this stage on its own (one Upscale Video, target and upscaler on the face, provider unset: the money choice stays yours); it is the next card the Stills → Film card and the clip workflows offer once they hold a result.

Make it reusable

The Stills → Film card is the reusable starting point, and any tuned chain of yours (a Director with your house style and dials, a Storyboard with your keyframe model) can be selected and collapsed into a composite or saved as your own template: one library item, every film starts warm.

Why it holds together: every clip starts from a frame you have seen (a still of yours, or a keyframe generated from your stills), a shot without its frame never rolls, and every clip asks for a steady camera. The plan you approve is the film you get.