BRUT DOCS getbrut.app ↗

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.

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.

Pick a preset, run, and edit the result in place; hand edits flow downstream
The **Model** select picks the writer: the default is Gemini 3.8 Flash (the newest Flash, a fraction of a cent per refine; it thinks for a couple of seconds first), and any planning model in your catalog is one click away — Gemini 3.5 Flash-Lite if you want the fastest, GPT-5.6 and Claude models too, with a **Reasoning** dial when the model has one; a "⇄" marks a model reached through another service such as OpenRouter. Changing the model re-runs the refine.

Eighteen presets ship with Brut, including:

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.

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.

One script becomes numbered tiles, each with its own plug
- **Split modes**: *Auto-detect* tries blocks headed SHOT 1, SHOT 2… (the script format many studios use), then lists in code format, numbered lists, and finally blank-line paragraphs; or pick a mode explicitly, including a custom separator. - Blocks are **editable in place** — tweaks flow out the plugs immediately on the next run. Changing the wired text or the split mode **re-splits** (edits belong to the old content and reset with it). - **✕ hides** a block from the combined bottom output (its number and plug stay stable); ↺ restores it. - The board **grows to fit its blocks** — every tile (and its plug) stays visible, so wires always attach where you see them. Shrink it by hand if you prefer; it only re-grows when the content changes.

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.

Drop files from Explorer onto the canvas, or drag a result off any node: a ready-filled Image In either way
> **File vs. paste, for big renders:** adding a *file* (picker or drag & drop) keeps its **original bytes** — a 12 MB JPEG stays a 12 MB JPEG. *Pasting* can't: the clipboard carries decoded pixels, not your file, so Brut stores them **losslessly as PNG** (never a silent re-compression) — a 20-megapixel render lands around 38 MB that way. Same pixels, bigger container. Paste is perfect for screenshots and quick grabs; for production renders, prefer the file — smaller payloads and the exact encoding you delivered.

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.