FAQ
How do I resize a node?
Hover it: a small ⌟ grip fades in at the node's bottom-right corner (the same mark a text box has, applied to the whole node). Drag it to set width and height together; it lights up while you drag and fades out when you leave. Every resizable node uses this one gesture, boards, Preview, the text nodes, stickies and stamps alike, and the size is saved with the graph. Nothing to select first, and no frame around the node.
How do I send one output to several nodes?
Either drag a second wire from the same output port (an output can feed any number of inputs), or split an existing wire where you are: Alt-click the wire and a small dot drops on it. Drag a new wire off the dot to another node, or onto empty canvas to pick one from the add menu, already wired. The dot is only a branch point: nothing re-runs or re-pays because of it, and deleting it heals the wire. Details in Nodes & graphs.
How do I move all the wires from one pin to another?
Alt-click the pin whose wires you want to move (every pin starts pulsing), then click the destination pin. Output to output (or input to input) moves every wire across and keeps their other ends; an input then an output makes that output feed the input instead. Esc cancels, Ctrl+Z undoes. Details in Nodes & graphs.
How do I turn the home screen off?
Untick Show this screen at launch at the bottom of the home screen. Brut then opens straight on the canvas; the house icon on the left rail (above Settings) and File ▾ → Home still open it whenever you want it. The choice is per machine.
Why does a graph card show results I don't see on the canvas?
The card shows what the graph's saved file (or its live canvas, when it has unsaved changes) holds: the most recent results of its most downstream nodes, up to five. Hover the cover to flip through them. If a node's result was never saved with the graph (a run that finished after the last Ctrl+S), the card shows the canvas' own results and marks the name with a •.
Are there ready-made workflows?
Yes. Brut ships a bank of pre-wired workflows for the recurring jobs: Clay → Photoreal, Clay to Client Set, Time of Day, Weather & Sky, Populate, Populate → Clip, Scene Dressing, Editorial Sheet, Look Transfer, Hero Still → Clip, the Character Lab, Stills → Film, Reel Script and Finish in 4K, plus the Correction Loop template. They sit on the Workflows row of the home screen and on the From Brut shelf of the library (the book icon on the rail). Everything adds to your canvas: a composite as one card with knobs, a template as a group of live nodes. The full list, with the models each one uses and what it takes in, is on the Workflows page.
Why does Marcel say there is nothing to recap?
Because nothing happened. At Narrator level Marcel recaps a project by himself the moment it opens, and the recap lands in his panel (the badge on the rail's Marcel button counts what you haven't read). Marcel only writes a new recap when something has happened since his last one. Run something, then open the panel again.
Is Brut free?
During the beta, yes. At launch, Brut itself will be a paid tool: we sell the orchestration (the canvas, the caching that never re-bills unchanged work, the ledgers, the catalog kept current as providers churn, Marcel), never the tokens. Expect tiers with different feature sets, probably a limited free tier to see how it looks and a short trial; the exact terms are announced before launch. What never changes: generation is paid to the providers directly, on your own keys, at their price. Brut takes no cut, ever.
Where do my API keys go?
Into your OS keychain (Windows Credential Manager). They're used only for direct calls from your machine to each provider, are never written into a graph, never sent to us, and never appear in a .brutpack.
Can I cap what a project spends?
Yes — File ▾ → Project budget… sets a per-project ceiling compared against the ledger. The toolbar readout shows $spent / $budget and changes color as you approach it; paid confirmations warn past the cap (or refuse, if you tick hard cap). It works from estimates; the ledger records what was actually billed.
Can I turn a key off without deleting it?
Yes — every configured provider in ⚙ Settings has an on/off switch. Off = the saved key (or your Kling sign-in) is ignored everywhere: the provider reads as unconfigured, and models with aggregator routes fall back to them — so you can test an OpenRouter-only setup, or bench a native key, without re-pasting anything. One tick brings it back.
Does Brut see my prompts, images or renders?
No. Everything you make stays on your disk (or your NAS). Brut has no server in the generation path. The only thing that ever leaves your machine is a tiny sign-in heartbeat — version/OS/install-id, no content.
Why do I have to sign in?
Today, to count seats during the beta. At launch, your account is also how you'll activate your plan on a machine. It's required, but it never bricks you: once you've signed in, a 30-day offline grace keeps you working through flights and outages, and if the sign-in server is unreachable a "continue for now" option appears.
One exception, by design: a seat revoked for a breach of the beta license (a shared installer, a resold seat) signs out on that machine and paid generations stop until an active seat signs in. Nothing on disk is touched — your projects, outputs and keys stay yours.
Windows says "Windows protected your PC" when I run the installer.
Expected during the beta: the installer isn't code-signed yet (a paid certificate we'll buy when the beta proves out), so SmartScreen flags it as unrecognized. Click More info → Run anyway. The installer runs per-user, without admin rights.
Where is my work on disk?
Everything Brut makes — projects, outputs, library, account state — lives in %LOCALAPPDATA%\Brut as plain files (keys are the exception: OS keychain). Brut's technical log is at %LOCALAPPDATA%\Brut\logs\engine.log. Uninstalling never touches this folder — your work survives uninstall and reinstall.
Right-click → Reveal in Explorer on a result is the reliable way to locate it, because outputs are written to whichever project was active when the generation ran. File ▾ → Save project as… later moves the files the canvas uses into the new project (with their history rows), so the new folder is complete; a file another graph in the old project also uses stays there as a copy, and anything you generated there that the canvas no longer references stays where it was.
How do I copy text?
Text is ordinary text everywhere: select it and Ctrl+C copies it, in Marcel's messages, a node's result, a prompt. When nodes are selected on the canvas, Ctrl+C copies those nodes instead, unless you have text selected, in which case the text wins. Right-clicking selected text or a field offers the usual Copy, Cut, Paste and Select all.
What do the file names mean?
Every file Brut writes is named <project>_<graph>_<node>_<provider>_<model>_<date>_<job> — for example tournesol_facade-study_t2i-12_openai_GI25F_260923_a3f91c2e.png: the project, the graph, Text → Image node 12, made by OpenAI's GPT Image 2.5 Flare, on 23 Sept 2026, ledger job a3f91c2e…. The model codes (NB2, NBP, GI2, K30, SD25 …) are listed on the Projects page. Per-tile files say which tile (ms-4-s07, film-3-c02), files you drop in keep your own filename, and the free local tools name themselves (conform, layers, sketch, sequence). The last segment is the key: right-click → Find in ledger turns any file back into the run that made it. Files from before keep their old random names: renaming them would disconnect them from your saved graphs. The full key, and how to set your own pattern per project, is on the Projects & the ledger page.
How do I update Brut?
Grab the latest installer from getbrut.app/download (log in with your beta email — the page always serves the newest build) and run it over the old install — no uninstall needed. Projects, keys and sign-in all carry over (see Where is my work on disk? above). There's no auto-update during the beta.
You won't miss one, though: at every launch Brut compares the version you run with the latest installer (it uses the small daily check-in described in Privacy). If yours is behind, one line under the toolbar says Brut x.y.z is available with a Download button to that page; Later hides it for that version. Same version, no line at all. Offline, no line either.
To check which version you're on: File ▾ → About Brut, at the bottom of the menu.
The download page says the sign-in link "is invalid or has expired".
Something opened the link before you did. Company mail systems (Microsoft 365's Safe Links, Mimecast and the like) fetch every link in an incoming email to scan it, and a sign-in link works once, so the scan used it up and your click came second. The timing gives it away: the link is valid for an hour, yet the message appears right after the email arrives.
The emailed link now lands on the download page and signs you in only when you press Continue there, so a scanner cannot spend it. The same email also carries an 8-digit code: type it on the download page instead, from any browser, if a link ever misbehaves. Links and codes work once and expire after an hour, so request a fresh email if yours is older than that.
The desktop app's own sign-in screen takes the same code (Brut 1.1.5 and later): after Email me a link, type the 8 digits from the email into the field that appears, no link needed.
The taskbar shows a blank document icon for Brut.
A bug in builds 1.0.95 to 1.1.2. Install the current build over it; if Brut was pinned to the taskbar, unpin it and pin it again.
My first generation returned a 429. Why?
Almost always billing isn't enabled on that provider's key — free tiers have zero generation quota, so the first call fails. Enable billing in the provider's console. A first-call 429 is billing, not throttling.
An image edit came back blank / refused.
Gemini sometimes returns no image without saying why (the error mentions OTHER). It is a content refusal, usually triggered by an input image (a real person's name in facade lettering, a face, a logo), not the prompt. Remove or crop the offending image. Brut never retries it for you: retrying won't help, the same input is refused the same way.
Do I ever pay twice for the same thing?
No. Every node remembers what it was given: if nothing changed, the last result is reused for $0. See Never pay twice.
What does ▶ Run do exactly? Does it generate everything?
No. ▶ Run is reveal-then-ask. First it replays every cached, pinned and free step for $0 and marks the nodes whose inputs changed (or that never ran) with a needs a run badge, together with what they would bill. If nothing needs a run, that's it. Otherwise one dialog lists them with the estimate: Generate runs the graph (cached steps still replay free; Film Shots, Upscale Video and the Storyboard keyframes still show their own itemized confirm first), Keep cached only leaves the badges on so you can see which nodes are outdated. The ▶ on a node runs that node and its upstream directly.
I reopened a graph and some results are missing.
Every generation node shows its last result the moment the graph opens; the badge says whether it is current. If a node face is empty, it never produced a result in this graph. Hit ▶ Run: it replays what is already made, for free, and shows what, if anything, would need generating.
I changed the prompt and lost a result I liked. Is it gone?
No — nothing generated is ever discarded. Every paid node has a small 🕘 in its title bar, next to ▶: it opens that node's full history from the project ledger, every result it ever produced. Pin any of them and it becomes the node's output again, free, protected from later re-runs until you unpin (the button turns 📌). Multi-Shot tiles, Storyboard keyframes and Film Shots clips have the same 🕘 per tile. See Projects & the ledger.
How do I take an image out of a node to work on it separately?
Drag it. Grab the image on any 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: a ready-filled Image In appears there, pointing at the same file (no re-upload). Drop it on an existing Image In to append instead. The detached copy is a frozen base: re-rolling or re-planning the source never touches it.
A shot failed with "Network error — connection dropped mid-request".
Your connection to the provider dropped while a request was in flight (Wi-Fi blip, VPN hop, a provider hiccup). Re-roll the failed items: the ones that already finished won't re-pay. One caveat, written in the message itself: if the connection dropped while the result was coming back, the provider may still have generated (and billed) it; check the provider's console if it matters.
What's the Marcel panel?
The Marcel button opens your project's studio timeline — a chronological record of runs, results, plans and errors, saved with the project so it survives restarts and travels with a NAS share — and the chat with Marcel, Brut's built-in companion. He knows the whole model catalog (with real prices), every node, and these docs; he answers on your own text-model key and every call lands in your spend ledger. An Assist slider sets how present he is on his own — from Off (silent) through failure diagnosis and run commentary up to Partner-level 💡 suggestions. A header toggle switches between Raw events (everything) and Chat only. It all stays on your machine (see Marcel, the companion and Privacy).
What if Brut closes while a video renders?
Brut picks the job back up at the next launch and records it once, at its real price.
Will I lose my canvas if I close the app?
No — the canvas autosaves into the project folder moments after every change, along with which named graph it is. Relaunch (on this machine, or any machine sharing the project on a NAS) and you're back exactly where you were. A • next to the graph name means changes not yet saved to the named graph (Ctrl+S), and opening another graph over unsaved work asks first.
Which video provider should I use?
For steady Kling use, the subscription is ~3× cheaper than API packs. Veo and Gemini Omni ride your Gemini key; Omni is the fast lane (a 10-second clip with sound in under a minute, flat ≈$1 per clip whatever the length — so ask for 10 s). Seedance 2.5 does native audio and single takes up to 30 seconds. All quote the cost before you spend.
How do I pay BytePlus for Seedance and Seedream?
One ModelArk key covers both, and billing is pay-as-you-go: top up Credits by card in the console (minimum USD 5, they never expire, USD 30 unlocks the Seedance family), or run Automatic billing on a bound card. Resource packs are optional (one model, 90 days, list price), and activating a model is a one-time switch on the console's Model activation page, needed before the first call. PayPal-only accounts need a card or a pack. Details on the Seedance page; Seedream 5.0 Lite comes with 50 free images.
What does "⇄ runs via …" on a node mean?
You picked a model whose native provider has no key on this machine, but you hold a credential for an aggregator that resells the same model — so Brut routes the run there, on your account. Your direct key always wins when present (it's usually cheaper); routing only fills the gap, it's always shown on the node and in the run confirm, and the ledger records it. Adding the native key switches the model back to direct billing immediately. Details: model routes.
How do I see my Kling plan credits?
Pick the Kling (subscription) provider on an Image → Video or Film Shots node — the node shows your live plan balance ("🎟 Plan balance: 5,040 credits · Pro") read from your Kling account, and Film Shots repeats it in the paid-run confirmation.
How do I report a bug or ask for a feature?
The green speech-bubble button on the left rail — see Install & first run. Diagnostics are opt-in, and you see exactly what is sent first.
Why does Brut ask about my session when I quit?
It's the beta asking for your experience while it's fresh: after a session that actually ran something (a Run click, a generation, or an error), the desktop app shows "Before you go" with a one-line summary and the feedback form. Nothing is sent unless you press Send & quit; Quit without sending closes the app at once. An empty session (open, look, close) never asks.
Does the website track me?
No. getbrut.app and these docs load nothing from third parties — self-hosted fonts, no analytics, no trackers.