Marrow
Network diagrams you make by talking to your coding agent. Describe the network, the agent writes and checks the topology, and Marrow turns it into an interactive diagram that works offline.
There is no drawing canvas. Works with Claude Code, Cursor, Cline, Windsurf, Antigravity or any agent that can run commands.
Paste it into your agent. It clones the repo, runs setup and the tests, then asks what you want to draw.
Example
tiered.yaml
marrow: 2
name: Branch Office
description: Every device declares a tier — layered top-down
theme: dark
hero: core-sw
devices:
- id: edge-rt
name: Edge Router
icon: affinity/tile/router
tier: edge
role: WAN edge
mgmt_ip: 192.0.2.1
- id: fw
name: Firewall
icon: affinity/tile/firewall
tier: edge
mgmt_ip: 192.0.2.2
- id: core-sw
name: Core Switch
icon: affinity/tile/switch-multilayer
tier: core
mgmt_ip: 10.0.0.1
interfaces:
- name: Te1/0/1
description: uplink to firewall
vlan: 10
- id: acc-sw-01
name: Access 1
icon: affinity/tile/switch
tier: access
- id: acc-sw-02
name: Access 2
icon: affinity/tile/switch
tier: access
- id: srv
name: File Server
icon: affinity/tile/server
tier: endpoint
status: degraded
note: Disk array rebuilding
- id: wks
name: Workstations
icon: affinity/tile/laptop
tier: endpoint
links:
- { from: edge-rt:Gi0/0, to: fw:eth1, kind: wan, speed: 1G }
- { from: fw:eth2, to: core-sw:Te1/0/1, kind: fiber, speed: 10G }
- { from: core-sw:Gi1/0/1, to: acc-sw-01:Gi0/48, kind: fiber, speed: 10G }
- { from: core-sw:Gi1/0/2, to: acc-sw-02:Gi0/48, kind: fiber, speed: 10G }
- { from: acc-sw-01:Gi0/1, to: srv:eno1, speed: 1G, status: degraded }
- { from: acc-sw-02:Gi0/1, to: wks:eth0, speed: 1G }Left is the kind of file your agent writes. Right is what Marrow builds from it. Click a device or a link to inspect it.
How a diagram gets made
The repo ships an AGENTS.md and a topology skill, so your agent already knows the rules when it opens the folder.
- 1
You describe the network
In plain words, or by pasting device configs, lab notes or discovery output. The agent asks only what it cannot work out.
- 2
The agent writes the YAML
It looks up real icon IDs instead of guessing, and declares each device’s tier, zone and HA partner. Marrow works out the layout, so there are no coordinates to get wrong.
- 3
Marrow checks it
validate reports every error with the line, a fix hint and did-you-mean suggestions. The agent fixes them and runs it again until it is clean.
- 4
The agent looks at the picture
It renders a snapshot and checks it by eye, then builds a single HTML file you can pan, zoom, search and open offline.
What you might ask it
Read our branch router config and create input/branch-office.yaml. Put the WAN router in an edge zone, connect it to an HA firewall pair, and link down to the access switches. Validate it and show me a snapshot.
More on this in the agent loop and why there is no GUI.
Without an agent
Everything the agent does is a plain command, so you can run it by hand. It is a local tool, not a hosted service, and needs Node.js 24 or newer.
git clone https://github.com/raiz-toff/Marrow.git
cd Marrow
npm run setup
# write input/network.yaml, then
npm run validate -- input/network.yaml
npm run build -- input/network.yaml --single -o network.htmlNext: your first diagram, the schema, or more examples.