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 }
Loading diagram…

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. 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. 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. 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. 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.html

Next: your first diagram, the schema, or more examples.