Never pay twice
The cache is a feature with a euro sign on it. Every node hashes its inputs; unchanged inputs mean the cached output is reused and nothing is billed. This is what makes iterating on a graph affordable.
How it works
When a node runs, Brut computes a stable hash of everything that affects its output — the prompt, the model, the parameters, the input images, the mask. If that hash matches the last successful run and the node still holds that output, the node is skipped: status cached, cost $0.
Change any input and the hash changes, so that node — and only that node — re-pays. A revision round that touches three shots costs you three shots, not the whole graph.
Re-run a finished graph and everything shows
cached. That's the point: your outputs are already on disk, and replaying them is free.
What counts as an input
Everything that would change the result:
- the prompt text and any negative prompt,
- the provider and model,
- the parameters (aspect ratio, resolution, audio, duration…),
- the incoming images (by content), and for Inpaint, the mask (repaint = cache miss).
What doesn't count: cosmetic things like node position or size. Moving a node never re-pays.
Pins — freezing a result
Sometimes you want a specific past result to stay, even as you tinker upstream. Click the 🕘 history button on a generation node to open its ledger history — every result that node ever produced — and 📌 pin one. A pinned node emits that exact output on every run, free, until you unpin. Pins beat both the cache and a fresh generation. Hover a row's thumbnail for a quick preview; click it for the lightbox, where ←/→ walks the node's whole history at screen size.
Multi-Shot tiles pin individually, so you can lock the three keepers from a contact sheet and keep re-rolling the rest.
Local operations are always free
Some nodes never touch a provider at all — Conform (aspect-ratio crop/pad, local PIL) and Sequence (video assembly, local ffmpeg) run entirely on your machine. They cost nothing and aren't metered.
Seeing the spend
The toolbar shows a running spend estimate; hover it for a per-provider breakdown. Every terminal generation is appended to the project's ledger, with full context (node, model, cost) — so you can always answer "what did this cost, and who received the money?"