Installation

Clone Marrow, run the setup wizard, and verify the toolchain compiles and builds.

Marrow requires Node.js 24 or newer. It has no other system dependencies — no Graphviz, no headless browser for normal builds, no database.

The one command

Clone the repository

git clone https://github.com/raiz-toff/Marrow.git
cd Marrow

Run setup

npm run setup

The wizard walks six steps and is safe to re-run after every git pull — every step is idempotent and nothing you've edited gets overwritten:

[1] Checking your environment      Node ≥ 24, and that this is a Marrow clone
[2] Installing dependencies        npm install
[3] Compiling the toolchain        npm run compile — TypeScript + runtime bundle
[4] Setting up icon packs          confirms bundled packs; offers aws/azure/gcp
[5] Make it yours                  org name, footer note, theme, accent, logo
[6] Verification                   builds a sample diagram end to end

Step 4 asks before downloading anything. The aws, azure, and gcp packs come from the vendors' own servers because Marrow is not allowed to redistribute them — see ADR-0005.

Step 5 writes marrow.config.yaml and can generate a branded starter topology for you.

Confirm it works

npm test

244 tests across 22 files. If they pass, the compiler is sound.

Non-interactive setup

For CI or a container image:

npm run setup -- --yes            # accept defaults, skip the branding wizard
npm run setup -- --skip-icons     # don't fetch vendor packs
npm run setup -- --skip-verify    # don't build the sample diagram

--yes implies --skip-brand.

Doing it by hand

If you'd rather not run the wizard:

Minimal
With cloud icons
npm install
npm run compile

npm run validate fixtures/valid/small-office.yaml
npm run build fixtures/valid/small-office.yaml
open output/small-office.html

Keeping it current

git pull
npm run setup          # or: npm install && npm run compile

If validate or build starts behaving strangely after a pull, dist/ is almost certainly stale. npm run compile fixes it.

What the repo looks like

input/            your topology YAML — the source of truth, edit these
output/           generated HTML (gitignored, never hand-edited)
marrow.config.yaml  branding applied to every diagram
fixtures/         example topologies; good authoring references
icon-packs/       icon packs — drop your own in here
packages/         the compiler (TypeScript monorepo)
docs/             this site

Next: build your first diagram.