BRUT DOCS getbrut.app ↗

.brutpack & portability

Brut is local-first, so "collaboration" means moving work between machines — not syncing it through a cloud. Two mechanisms cover it: .brutpack files and NAS-rooted projects.

.brutpack — a project in one file

File ▾ → Export project as pack… writes a single .brutpack file containing everything: outputs, graphs, the generation ledger, and the portability marker — with warm caches included, so the person who opens it can re-run the graph for free.

A .brutpack never contains keys — those stay in each machine's keychain.

NAS-rooted projects — shared live work

Instead of passing files around, point a project at a shared folder on your NAS (File ▾ → New project…, then choose the NAS path as its root). The project's data lives there; the local folder is just the registration.

A project.json marker inside the root lets a second seat adopt the same projectFile ▾ → Open project… on that folder, and both machines work against the same outputs, graphs and ledger.

This is how a studio collaborates: one project on the NAS, every seat opening it.

How paths stay portable

Anything inside a project's outputs directory is stored on disk as a portable scheme (brut-out://<rel>) and resolved back to a local absolute path on load. This is what makes a project machine-independent — the same graph opens correctly whether the outputs live on your C: drive or a NAS share, on your machine or a colleague's. Paths outside the project root intentionally stay absolute (cross-project references can't be relativized).

The same discipline is what .brutpack reuses — it's why a packed project's warm caches still resolve after you import it on a different computer.

Export vs pack

Both ask whether to include the Marcel studio journal (conversations + narration): on by default for a folder export (it's a backup), off by default for a pack (packs leave the studio). A checkbox lets you override either way.