Nodes & graphs
Brut is a node canvas. You build a graph — nodes connected by wires — and run it. Nodes are shots and decisions, not low-level settings: a node is "generate an image," "animate this clip," "plan the film," not a low-level knob.
The canvas
- Add a node — the + on the left rail opens the node browser: every node by category (in workflow order), with a hover card showing what it does, what flows in and out, and whether it costs money. Click places it at the canvas center; drag drops it where you let go. Or press
Tabover the canvas for the quick palette at your cursor — type to filter,↑/↓+Enterto place. With nothing typed the list is alphabetical (so is the list a dragged wire offers); typing ranks the matches. - Pan — middle-drag. Box-select — left-drag: anything the rectangle touches is selected, nodes and wires (a box drawn over a bundle of wires alone picks them up, wires light up as the box sweeps over them and when you hover them; Delete then removes everything selected). Zoom — scroll wheel, anywhere on the canvas, including over a board or contact sheet whose tiles all fit. Only a grid that actually overflows takes the wheel for itself, to scroll its tiles; text areas do the same.
- Pull a wire off — an input pin holding one wire: press it and drag, and you pick that wire up instead of starting a new one. Drop it on another pin to move it there, on empty canvas to remove it (
Ctrl+Zputs it back), on a pin that refuses it and it snaps back. A click without a drag changes nothing. Inlets holding several wires (a board's stills) keep the usual new-wire drag, andAlton a pin is still the bulk rewire. - Wire menu — right-click a wire: Color (Auto follows the node the wire leaves, None keeps it plain, or one of the six hues — applied to every selected wire when the clicked one is part of a selection), Add reroute here (the
Alt-click split), Insert node… (the double-click splice), Delete wire. - Node menu — right-click a node: Color, Run, Duplicate, Group, Collapse to composite, Delete. With several nodes selected, Duplicate and Delete act on all of them, and Group / Collapse light up. Text fields and image previews keep their own menus.
- Node color — pick one of six hues (the same ones group frames use) from the node menu. The whole node takes the color (body, outline and title — readable zoomed far out), and so does every wire leaving it — the fastest way to read a dense graph. Right-click one node of a selection and the color lands on all of them. Reroute dots pass the color along; a wire can also be given its own color from the wire menu; a hovered or selected wire still shows the accent.
- Run — ▶ Run executes the whole graph; the ▶ on a node runs just that node and everything it depends on.
- Copy, paste, duplicate —
Ctrl+Ccopies the selected nodes,Ctrl+Vpastes fresh copies,Ctrl+Dduplicates in one step. Copies keep their incoming wires: a duplicated node arrives already fed by the same upstream nodes as the original (outgoing wires are not duplicated — that would double-feed whatever the original feeds).Ctrl+Vpastes at your cursor — point where you want the copies and paste; a multi-node selection keeps its arrangement, and a copy pasted inside a group frame's area joins that group (exactly like dropping it there).Ctrl+Dstill lands the duplicate just beside the original. - Paste an image —
Ctrl+Vwith an image on the OS clipboard (PhotoshopCtrl+A+Ctrl+C, a render buffer's Copy button, a browser image) drops a ready-filled Image In node at your cursor. If you copied both, whichever you copied last wins the shortcut. - Tidy — the grid button on the left rail auto-arranges the graph as a table that follows the wiring: columns are the pipeline stages, and a Prompt, the Multi-Shot it feeds and that Multi-Shot's Shot Board share one row with their tops aligned. Independent chains stack top-down in the order they were and never interleave. A set of inputs feeding the same node (say, eight Image Inputs feeding one board) wraps into a compact grid, a 3×3 contact sheet rather than a tower. With two or more nodes selected, only those are tidied, in place: the block keeps the selection's top-left corner and nothing outside it moves (select a group frame to tidy its inside). It's one undo step —
Ctrl+Zputs everything back. - Node ids — every node's title bar shows its id in small type (
multi_shot-21). That's the name Marcel and the ledger use when they refer to a node — click the id to copy it.
Ports and wires
Every node exposes typed ports. Wires carry one of three things: images, text (prompts and plans), or video. Ports are labeled by role — a Compose node has scene and reference image inlets. Brut only lets you connect compatible types, and picks the right inlet automatically when you drag-to-connect.
Some nodes expose per-tile output plugs — a Shot Board tile has its own handle so you can route one chosen shot downstream, a Clip Board tile has one per clip.
Splice a node into a wire
Double-click a wire (or right-click it → Insert node…): the add menu opens, filtered to the nodes that fit between the two ends. Pick one and it lands on the wire, wired in and out — an Upscale between a generator and its Preview, a Conform in front of a board, without redrawing anything.
Alt-click a wire and a small dot drops on it at that point: the wire now runs through the dot, and the dot is a branch point.
- Send the same output to more nodes — drag a new wire off the dot to any compatible input. Drop it on empty canvas and the add menu opens, filtered to what the wire carries; the node you pick arrives already wired. One output feeds as many nodes as you like, and you branch from where you are instead of going back to the source node.
- Route the wire around things — drag the dot (Substance style). Add more dots for more bends.
Right-click a wire → Add reroute here does the same. A dot has one inlet and as many outlets as you drag off it, and it carries the color of its wire along. It's purely cosmetic: it changes nothing about how the graph runs or what it costs, so nothing downstream re-runs or re-pays, and Marcel doesn't see it. Delete a dot and the wire heals: its input reconnects to every wire that left it, nothing is left dangling.
To re-plumb a graph without redrawing it, Alt-click a pin. Every pin on the canvas starts pulsing: a rewire is armed on that pin (the Activity panel says so). Then click the destination pin (Alt no longer needed):
- Same kind (an output, then another output; or an input, then another input): every wire on the first pin moves to the second, and their other ends stay where they are. Five nodes fed by one Prompt? Alt-click its output, click the output of a new Prompt, and all five are fed by the new one.
- An input, then an output: whatever fed that input now comes from that output — "feed this from there instead".
- An output, then an input: the wires leaving that output are pulled onto that single input.
Click the armed pin again, press Esc or click empty canvas to cancel. Two wires that would end up on the same two pins merge into one. The Activity panel logs what moved, and Ctrl+Z undoes it like any other edit.
- Run starts each node as soon as its inputs are ready, so independent branches run at the same time.
- A node whose inputs haven't changed answers from its last result, for free. See Never pay twice.
- Two runs can happen at once, and nothing is ever paid twice.
| Family | Nodes |
|---|---|
| Inputs | Prompt, Image In |
| Text | Refine, Text → Text, Text Board |
| Images | Text → Image, Image → Image, Inpaint, Annotate & Correct, Layers, Sketchpad, Compose, Upscale Image |
| Exploration | Multi-Shot, Shot Board |
| Cinema team | Reference Board, Director (plan + proof sheet), Scenarist, Artistic Director, DoP, Script Supervisor, Storyboard, Film Shots |
| Video | Image → Video, Clip Board, Upscale Video, Sequence |
| Utilities | Conform, Preview, Compare, History |
Each family has its own page under Nodes in the sidebar. Sticky notes, emoji stamps, the pen and text labels aren't nodes — they're annotation tools in the rail's Organize section, also one right-click away via the ring menu (all documented on the utility page).
Saving & undo
Brut saves your canvas into the project a moment after every change, and it remembers which named graph it is: relaunch the app, or reopen the project from another machine on a NAS share, and you land exactly where you left off, name in the selector and all. Named saves are still explicit (File ▾ → Save, Ctrl+S); a • next to the graph name means the canvas has changes not yet saved to it, and opening another graph over unsaved work asks first instead of silently replacing it. Undo/redo (Ctrl+Z / Ctrl+Shift+Z) covers structure and parameters — never generation results, which are the ledger's job, so undoing a parameter edit keeps your past results.