Input nodes
The nodes that feed everything else: text and images going into the graph.
Prompt
A freeform text node. Type a prompt; its output flows down text wires to any node that takes a prompt — Text→Image, Image→Image, the cinema agents, and so on. Prompts are the most-reused currency in a graph.
- Prompt presets — the select under the text box loads a saved prompt from the global library (all projects), 💾 saves the current text as one, and ✕ deletes the loaded preset. A brief you refined once — a Multi-Shot scenario, a house style clause, a recurring negative — becomes one click on any future graph. Hand-editing the text detaches the preset name; the text on the node is always the truth. All saved presets are also listed (and deletable) in File ▾ → Browse library….
- The node is resizable — hover it and drag the ⌟ grip in its bottom-right corner (the text-box gesture, applied to the whole node): the text box fills the node, so a long brief gets a wide, tall box, and the size is saved with the graph.
Refine (Prompt Helper)
An AI prompt-rewriter. Wire a Prompt (or any text) into Refine, choose a preset, and it rewrites the text through a text model — sharpening a vague idea into a precise, photorealistic prompt without changing your intent. Several text wires into its prompt inlet are all read, in wire order (one per line), so six short Prompt nodes can compose one brief; the same holds for Text → Text. Generation nodes keep taking the first text wire only.
Eighteen presets ship with Brut, including:
- Enhance prompt — the general-purpose sharpener.
- Screenshot → photoreal, Cinematic relight, Camera language, Scene dressing, and more.
- Character turnaround sheet and Character expressions — wire a character image in and get an image-editing prompt for a 4-view orthographic turnaround, or a grid of facial expressions, both keeping the character exactly as the image shows them. (The same recipes come pre-wired in the Character Lab library composite.)
- Scenario maker — writes a brief for a Multi-Shot Custom scenario (chain Prompt → Refine → Multi-Shot notes).
- Kling video prompt, Seedance 2.5 video prompt, Gemini Omni video prompt, Veo video prompt — the video-prompt writers, one per model, each writing in the form that model follows best. All four stay faithful to what you wrote: nothing is added that you didn't ask for (no invented gestures, props, dialogue or music), and the camera energy you state (dynamic, fast, slow) wins over the house's steady-camera default. Give them the facts you care about — the swap, the move with its direction and end framing, the action, the duration — and tell them in the notes which pipeline stage you're at.
- Seedance 2.0 video prompt — the same, written for Seedance 2.0.
- Refine shot — plan-aware: feed a shot plan in and it edits one shot.
- Seedance 2.5 shot plan / Seedance 2.0 shot plan — plan-aware: feed the Script Supervisor's whole plan in and every clip prompt is rewritten for that Seedance generation with ambient sound to match the scene, while the shots, their stills, keyframe prompts and frames stay untouched. Splice it between the Supervisor and a Storyboard to run the same film on Seedance — a second Storyboard fed this way keeps its keyframes, so a Kling-vs-Seedance A/B never re-bills the frames. Use the notes to direct the soundscape ("birdsong on the terrace, fireplace crackle at dusk").
Some presets are multimodal — wire an image in and the model sees it. Refine's output is editable text: hand-tweak it and your edits flow downstream; change an input or roll again and it regenerates over them. Like Prompt, the node is resizable — drag the ⌟ grip in its bottom-right corner; the result box (the notes box, before a result exists) fills the node, and the size is saved with the graph.
Text → Text
A free-form LLM call — a ChatGPT/Claude turn as a graph node. Pick any text model from your providers (Gemini, GPT or Claude — your keys, like everywhere in Brut), optionally give it a role in the System field ("you are a harsh photography critic"), type a message, run.
- Wired text is prepended to your message — chain Prompt → Text→Text, or feed one node's answer into the next. A chain of Text→Text nodes is a conversation materialized on the canvas: every turn editable, kept, and re-runnable.
- Wired images are seen — connect renders or photos and ask "what's wrong with this composition?", "describe this scene for a video prompt", "compare these two options". Images are downscaled for the model's request cap; nothing is uploaded anywhere but to your chosen provider.
- The answer is editable text — hand-tweak it and your edits flow downstream on the next run; 🎲 Re-ask requests a fresh answer.
- On models with a reasoning dial — GPT-5.6 Sol / Terra / Luna and GPT-6 Sol / Luna (none → xhigh, details) and Claude Sonnet 5.5 / Sonnet 5 / Opus 4.8 / Opus 5 / Opus 5.5 (low → max, details) — a Reasoning select appears: how deeply the model reasons before answering. Changing it is a new answer, like any input change.
- The node is resizable at two levels: the System and Message blocks each have their own grip (drag it to give one block more lines; the heights are saved with the graph and never shrink below three and four lines), and the ⌟ corner grip resizes the whole node, which can never crush the blocks below their minimums; extra height goes to the answer box.
Unlike Refine (which rewrites prompts through fixed presets), Text→Text is open-ended: analysis, critique, translation, naming, alt-text, brainstorming — anything a chat assistant does, with the result flowing down a text wire. One-shot by design: for an ongoing conversation with memory, talk to Marcel. Calls are token-priced (typically well under a cent) and land in the ledger like every paid call.
Text Board
The Shot Board for text: wire one long text in — a Text → Text answer, an agent plan, any pasted script — and it splits into numbered, editable blocks, each with its own output plug (#3 routes straight into a Text→Image while #4 feeds an Image→Video). Free and local: no AI call, nothing billed.
The killer combo: a scripted Text → Text (your reel/script prompt in its System field, renders wired to its images inlet) → Text Board → per-shot prompts fanned out to your image and video nodes. One click from "one long ChatGPT answer" to a wired production board. (For the specific case of cinematic reels, the cinema crew's Cinematic Reel (flourish) brief now folds this whole flow into one node chain — the Text → Text front-end stays the flexible, roll-your-own route.)
Image In
Loads images into the graph. Add them by file picker, drag & drop, or paste — all append, so one Image In can hold several images. The footer line at the bottom left gives the first image's resolution (4000 × 2250, · ×3 when the node holds several). Each thumbnail's 🔍 (top right, where every node keeps it) opens the lightbox at screen resolution — ←/→ pages through the node's images, wheel-zoom loads the original pixels only when you actually zoom; ✕ at the top left removes that image from the node. Dropping image files anywhere on the canvas creates a ready-filled Image In node right where they land — and so does pressing Ctrl+V over the canvas with an image on the clipboard (copy from Photoshop, a render buffer, or any browser image; a new Image In appears at your cursor). To append a pasted image to an existing Image In instead, click that node first and then paste, or use its Paste button.
On disk, a file you bring in lands in the project's outputs/inputs/ under a name that keeps yours recognizable — <project>_<graph>_<your-filename>_in_<date>_<code>.<ext>, paste for a clipboard image (see what a filename tells you).
Results can be detached the same way: drag any image off a node — a generation preview, a Multi-Shot or Shot Board tile, a Reference Board still, a Storyboard card frame — and drop it on empty canvas to get a ready-filled Image In right there (drop it on an existing Image In to append instead). No re-upload, no copy: the new node points at the same project file, now frozen as a base for further exploration even if the source node later re-rolls or is deleted from the plan.
Image In is the entry point for image-to-image work, composition, inpainting, and the stills that ground the cinema crew. For the crew, your stills are the project's identity anchors, not a shot list — the film can hold more shots than you have stills: invented compositions generate their start frames from these anchors, so every frame stays your building.
Next
→ Image generation — turn these into pictures.