Utility nodes
Small, local, free — the glue between generation steps.
Conform
Brings stills to one aspect ratio before generation, so a set of mixed-ratio renders becomes a clean, consistent batch (video models in particular want a single ratio).
- Choose a target aspect ratio and a method:
- crop trims each still to the ratio. The edges outside the frame are lost; what stays keeps its full resolution. Free.
- extend takes the still to the new ratio by having a painter paint what the frame adds. A render that must grow from 4:3 to 16:9 without losing the building is the case. The frame is free and applies itself; the paint is the paid step, one call per still: ✦ Paint this still in the ✂ editor paints that one, ✦ Paint N stills on the node paints every pending one, and Run prices them first. Each tile says to paint until it is, then ✦ painted. Per tile, ↻ paints that still again (a fresh take), 🕘 opens every paint of that still from the ledger and 📌 pins a past take, which flows until unpinned or until the frame changes. What flows out of the node is the painted set, never a still that is not painted yet.
- pad keeps the whole still on blurred, darkened bars of itself, the letterbox look. Free.
- The node's height follows its tiles: each still shows at its conformed aspect and the node grows or shrinks with them (a 9:16 set makes a tall node, a 21:9 set a flat one); the
n / rowselector and the width grip are the size controls, there is no inner scrollbar. - Per-image ✂ crop editor: drag an aspect-locked rectangle to choose which part of each still survives the conform (the default is a center cut — architecture rarely sits dead-center). The crop is stored per image; Brut crops the original at full resolution. A hand crop always wins over the method for its still. An edge close to the picture's edge snaps to it, a frame close to centered snaps to centered, and Shift while dragging locks the move to one direction.
- On extend and pad, the same editor places the frame: the stage grows room around the picture and the frame may reach into it. Drag it across the picture to choose which side grows (all of the extension on the right, for instance, or a little above and below as well), the corner scales it, the readout says how many pixels are added. A frame that reaches outside the picture belongs to those two methods: switch back to crop and that still takes the automatic cut again, with the frame kept for the next switch.
- On extend, the editor also holds the painter: provider, model, output size and, for GPT Image, quality. It starts on FLUX Outpaint when you hold a Black Forest Labs key, on GPT Image 2.5 Flare at xhigh otherwise. The line beside it is the price of painting this one still at this frame. The picks are the node's (every still is painted the same way) and apply at once; the frame and the optional note for the still (what should appear in the added part: more lawn, no new buildings) go with Save frame or ✦ Paint this still. Reset frame puts the frame back on its automatic placement.
- Two kinds of painter, and they do not behave the same.
- An outpainting tool holds your picture. FLUX Outpaint (Black Forest Labs) takes the picture and the frame and generates only what the frame adds: the picture stays where you put it. It answers at the frame's size up to 4 megapixels (or up to 2 or 1, your pick: its price follows the size, about $0.10 per megapixel in High; a Fast mode paints in seconds for about $0.05, rougher in the added part); a larger frame is painted smaller (the line under the picture says at what size) and delivered at that size, never scaled back up. Use Upscale Image after it when you need more pixels. It needs no prompt; your note travels as a hint.
- An image model redraws the frame. GPT Image, Nano Banana, FLUX 3 and Seedream have no fill mode: they paint a new picture of your still at the frame's ratio. The result is one coherent image, but it is the model's version of your still: details inside it are re-rendered, and the model may shift or re-proportion the scene. Same as the picture asks for the frame's own size; pick a tier to render the frame's ratio at that size instead.
- You get the painter's picture, as it is. Brut does not paste your original back over a redraw (a model that moved the scene would leave doubled edges at the seam). When the original must stay pixel for pixel, the outpainting tool is the painter to pick.
- The prompt is written for each still automatically when the painter is an image model: one cheap text call per still, cents, listed in the ledger.
- Free ratio: pick free at the bottom of the Aspect menu when the stills don't need one shared ratio. Each still's ✂ editor then crops freely: drag any corner or edge to any shape, the size in pixels shows under the image. Stills you don't crop pass through as they are, and the Method menu greys out (there is nothing to pick). Crops remember the ratio they were drawn for, so switching back to 16:9 uses your 16:9 crops, never the free ones.
- No ▶ to press: Conform applies itself. Save a crop, change the ratio, the method or the fill, wire a new still in, and the tiles update on their own. Only the stills that changed are re-cut: the others keep their files, so nothing downstream of them runs again.
- The stills sit on a resizable board: pick 1 to 5 per row from the
n / rowselector (never more columns than stills, so a single still fills the node) and drag the node's width to size the tiles. - Each image gets its own output plug, so you can route conformed stills individually.
- Each row's 🔍 opens the lightbox on the conformed result — ←/→ pages the whole set, so you can flip through the batch and check every cut.
Preview
Inspect any output at screen size. Wire an image or video into a Preview node and it shows inline on a resizable frame, live: whatever is plugged in appears the moment it exists — when you open a saved graph, when an upstream node finishes, when you pin a past take — with nothing to press. There is no ▶ on the node (nothing to run; it is a viewing surface, like Compare). The image inlet displays video too. Hover a tile and its 🔍 opens the lightbox — wheel-zoom, and ←/→ pages through everything on the node. When several images are shown, the ‹ › buttons on each tile reorder them. Preview is the "show me the result" node you'll drop at the end of most branches; the full-resolution files live in the project's output folder.
Compare
Two images, one verdict. Wire any two takes into the A and B inlets — a Gemini attempt against a GPT attempt, an original against an Annotate correction, yesterday's keeper against today's re-roll — and the node shows them side by side, live, without running anything. Hover it and the 🔍 opens the real thing: the before/after wipe slider, both layers sharing one zoom and pan, so you can drag the divider across a facade while zoomed into the brickwork. The slider labels pick up the source nodes' names, so it reads "Image → Image vs Annotate & Correct", not "before vs after".
Compare is a viewing surface, not a processor — free, local, no output port and no ▶ (there is nothing to run; the tiles follow the wires live — route the winner onward from its source node). It's the generalization of the Upscale node's built-in input-vs-result compare: same slider, any two wires you choose.
History
Every take a node ever made, on the canvas. Projects grow hundreds of generations and the good one from Tuesday is somewhere in the outputs folder. Wire any generation node's output into the History board (the image inlet takes video nodes too) and the board fills with every take that node ever produced, newest first, straight from the project's generation ledger. Wire several nodes in and the board shows one group per node, in wire order, each headed by the node's name and id, its take count and what it has cost so far. That is the point of the board: it reads as "what is inside this branch", not as a flat pile.
- Tiles carry the model, the date, the cost and, where it applies, the shot number of a Multi-Shot take, the card of a Storyboard keyframe or the Director's proof sheet. The prompt sits under the caption and in the tooltip. Every tile shows the take at its own aspect: a 9:16 take is a tall tile, a 16:9 take a wide one, never a crop, so a node that changed format mid-way reads truthfully. A tile's 🔍 opens the Magnifier, and ←/→ page through that node's whole history. Video takes play in place: a still poster at rest, click ▶ to play (one tile at a time, so a board of forty clips stays light).
- 📌 pins on the source node. The pin is exactly the 🕘 re-pin: the take becomes the source node's active output on every run, free, until you unpin it there or here. A pinned tile wears the amber ring. Multi-Shot tiles pin their own shot, Storyboard tiles their own keyframe. The board itself has no output and never runs anything: pins act on the source, so keep the downstream wires on the source node and use the board to choose.
- Drag an image tile onto the canvas to detach it as a ready-filled Image Input, the same gesture as dragging any preview out of a node. Right-click a tile for Reveal in Explorer, Copy, Export.
- Filter by model when a node has run on several, pick the tiles per row, ↻ re-reads the ledger (it also refreshes on its own whenever a tracked node finishes a run).
- Wires through a composite card or a reroute dot resolve to the node that actually generated: the board always shows the generator's own history.
Note
A sticky note for the canvas — annotate your graph the way you'd annotate a whiteboard: intent for future-you, instructions for a teammate opening the project later, review remarks next to the branch they're about.
Notes aren't nodes — they're placement tools, living in the rail's Organize section (with Stamp, Group and Composite). Click the rail's sticky-note icon and the note rides your cursor: click the canvas to place it at the default size, or click-and-drag to draw its size (Shift places several, Esc or right-click cancels). While you're placing, the nodes underneath freeze — you can drop a note on top of anything.
- Double-click to write, click elsewhere to finish. Notes support a light markdown:
# heading,- bullet,**bold**,*italic*,`code`. - Select a note for the toolbar: five sticky colors, four fonts (Sans / Display / Hand / Mono), text sizes from 11 to 256px, bold and italic, left / center / right alignment, plus resize handles.
- Display order is fixed so annotations always show: stamps over notes over nodes (selecting anything still brings it to the front).
- Notes have no ports and never execute — free, local, never sent to any provider as part of a run.
- Notes travel: they're saved in graphs, templates and composites, so a library template can ship its own usage notes. Tidy moves them with the graph — each note keeps its position relative to the node it sits next to.
- Marcel reads them. A note sitting next to a node is exactly the kind of intent he should see — ask him about the graph and the notes are part of his picture. He can write them too.
A frameless emoji mark — the quickest possible annotation. Click the rail's stamp icon, pick your emoji from the flyout, and it rides your cursor; click to drop it — on empty canvas or right on a node (Shift-click for a trail of them). Drop a ⭐ on the keeper, a 🚧 on the branch under construction, a 💩 on what it deserves. Select a stamp to swap the emoji, resize it by the grip in its corner (like a sticky), or delete it. Free, local, no ports.
Pen
Draw on the canvas — made for Wacom people (mouse works too). The rail's Pen icon (or the ring's Pen slice) enters draw mode: sketch freely, pen pressure sets the stroke weight, pick a color (theme ink + the five sticky colors) and a width, Alt-click erases a stroke, and Esc or ✓ finishes — the whole session lands as one frameless drawing you can move, resize (it scales as a unit) and delete like any annotation. Free, local, never sent anywhere.
A clean label — for those who prefer tidy organization over stickies: it works like a note, with the paper removed. No fill, no shadow, just typed words on the canvas — perfect for titling regions of a big graph. The label sizes to its content by default; select it and drag the knob on its left or right edge to set the width (the height always follows the text, so a title never clips; double-click a knob to fit the text again), and the font size is its scale control, up to a poster-sized 256px. It gets the full note toolbar (four fonts, sizes, bold, italic, alignment), and the colors apply to the text itself, with a theme-ink default.
The ring menu
Right-click any empty spot on the canvas and a radial menu opens under your hand — every organize tool one flick away. The center names the ring you're on and clicking it cycles three states: Organize (note · stamp · pen · text · group · composite · add node · tidy) → your most-used nodes (learned from your own placements) → your recent stamps. Nodes land where you right-clicked; the annotation tools (note, stamp, text) hop onto your cursor so you place — or click-drag-size — them exactly like from the rail. Power move: press the right button, drag onto a slice, release — picked, no clicking. The rail keeps every tool too; the ring is just the fast hand.
That's the whole palette. Back to Nodes & graphs for how they run together, or on to the Providers.