BRUT DOCS getbrut.app ↗

Projects & the ledger

Projects

A project is a first-class container: it owns its outputs, its saved graphs, and its ledger. Everything you make lives inside the active project on disk. Switch projects from the toolbar's project selector; the whole workspace swaps.

Started building in the wrong project? File ▾ → Save project as… takes the current canvas into a brand-new project of its own — name it, pick its folder, and everything moves with it:

The old project is left with a fresh canvas. History that belongs to another saved graph stays in the old project. The log line under the action says how many files and rows moved and how many stayed as shared copies. Wait for a running generation to finish first — the action refuses while something is generating. To find any result on disk, right-click its preview → Reveal in Explorer.

File holds the actions; the two switchers beside it only switch, project and graph
Projects can be **exported** whole (outputs + graphs + ledger) to an empty folder — the copy is itself openable — or packed into a single **[.brutpack](/docs/concepts/brutpack.html)** file.

The generation ledger

Every generation (finished, failed or cancelled) is recorded in the project's ledger with its node, model, prompt, files and cost.

Text and planning calls are recorded and priced too (Text → Text, Refine, the Multi-Shot planner, the Director and the cinema crew). Marcel's own calls are counted separately. No spend is invisible.

The ledger powers three things:

Click the spend readout: the ledger panel, per provider and per node, with the budget cap on top
If Brut closes while a video is still rendering at the provider, it picks the job back up on the next launch and records it once, at the right price. Paid work is never lost.

Where things live

<project>/
  outputs/        your images and clips
  graphs/         your saved graphs
  ledger/         history and spend
  project.json    lets another computer open the project

Keys are never here — they live in your OS keychain.

What a filename tells you

Every file Brut writes into outputs/ is named so the folder reads on its own, without opening anything:

<project>_<graph>_<node>_<provider>_<model>_<date>_<job>.<ext>

tournesol_facade-study_t2i-12_openai_GI25F_260923_a3f91c2e.png
tournesol_facade-study_film-3-c02_kling_K30_260923_0c77e4b1.mp4
tournesol_facade-study_sb-2-kf-s3_gemini_NB2_260923_5d10aa07.png
Code Model Code Model
NBP Nano Banana Pro K30 K30O K30T Kling 3.0 · 3.0 Omni · 3.0 Turbo
NB21 NB2 Nano Banana 2.1 · Nano Banana 2 K26 K25T KO1 Kling 2.6 · 2.5 Turbo · o1
NB2L Nano Banana 2 Lite K21 K21M K20M K16 K15 K10 the older Kling tiers
NB Nano Banana (original) V31 V31F V31L Veo 3.1 · Fast · Lite
GI2 GPT Image 2 OMNI Gemini Omni Flash
GI25F GPT Image 2.5 Flare SD25 SD20 Seedance 2.5 · 2.0
GI25SB GPT Image 2.5 Sunburst SD20F SD20M Seedance 2.0 Fast · Mini
SR5P SR5F SR5L Seedream 5.0 Pro · Flash · Lite MGC MGP2 Magnific Creative · Precision V2
TS2 THF2 TCGI TLR2 Gigapixel Standard 2 · High Fidelity 2 · Art & CGI · Low Resolution 2 TVP4 TVR TVG Topaz video Proteus 4 · Rhea · Gaia CG (cloud and local alike)
TRD TSMX TRC3 Topaz Redefine · Standard MAX · Recover 3 FX3 FXO FLUX 3 Image · FLUX Outpaint

Files you bring in (outputs/inputs/) keep your own filename: tournesol_facade-study_facade-photo_in_260923_ab12cd34.jpg (paste for a clipboard image; the same picture dropped twice on the same day is kept once). Exports keep their readable stems in outputs/exports/.

Files made before this convention keep their old names for good: renaming them would break the graphs that use them.

Path length. A full name is 55 to 75 characters. Windows caps a whole path at 260 characters unless long paths are enabled, so a project rooted very deep on a server has less room for the name than for the folders. Brut never fails on that: when the full path would not fit, the name drops the project and graph segments, then the node, and keeps the traceable tail (date_job), which is shorter than the old random names ever were. A shallow project root on the server stays the comfortable choice.

Your own pattern. File ▾ → Output file names… sets a per-project pattern from the tokens {project} {graph} {node} {provider} {model} {model_id} {date} {time} {job} ({model} is the short code above, {model_id} the full model id; {job} is required; the default is {project}_{graph}_{node}_{provider}_{model}_{date}_{job}). The dialog shows what a file would be called; an invalid pattern is refused with the reason. It is set on each computer: on a shared NAS project each machine names its own files.