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 MarrowRun setup
npm run setupThe 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 endStep 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 test244 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:
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.htmlnpm 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.yamlKeeping it current
git pull
npm run setup # or: npm install && npm run compileIf 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 siteNext: build your first diagram.