Marrow

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.

Marrow is used from a clone, not installed from npm. The repository is the workspace: your topologies live in input/, your branding in marrow.config.yaml, and any private icon packs in icon-packs/.

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
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
With cloud icons
npm install
npm run compile
npm run icons -- fetch --yes       # aws + azure + gcp

npm run icons search "virtual network"
npm run validate fixtures/valid/small-office.yaml
npm run build fixtures/valid/small-office.yaml

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.

If validate reports "icon pack is not installed — run marrow icons fetch <pack>", that's a fresh clone that hasn't downloaded the vendor packs yet. Run npm run marrow -- icons fetch --yes.

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.