NetWeave v1 schema
The native schema is intentionally small: metadata, devices with interfaces and optional protocol config, and links that reference devices by hostname and interfaces by name.
Top-level document
apiVersion: netweave.io/v1 # required
kind: Topology # required
metadata: { ... } # required, see below
devices: [ ... ] # required, at least one device recommended
links: [ ... ] # optional, defaults to []
metadata
metadata:
name: "campus-core" # required
description: "Short summary." # optional
requester: # optional — used in export metadata
name: "Jane Doe"
email: "jane@corp.net"
devices[]
type must be one of: l2-switch, l3-switch, router, firewall, load-balancer, server, ap, wlc.
- hostname: core-01 # required, unique within the doc
type: l3-switch # required
role: "spine" # optional — free-form label (shown on the node)
site: "dc-east" # optional
interfaces: [ ... ] # see below
protocols: { ... } # optional — ospf / isis / bgp
devices[].interfaces[]
kind must be one of: l2, l3, lacp, trunk, access, svi, loopback, subif.
interfaces:
- name: Lo0
kind: loopback
ipv4: 10.0.0.1/32
- name: Vlan10
kind: svi
ipv4: 10.10.0.1/24
vlan: 10
- name: Po1
kind: lacp
members: [Eth1/1, Eth1/2]
- name: Eth1/3
kind: l3
ipv4: 192.0.2.1/30
ipv6: 2001:db8::1/64
description: "to core-02"
devices[].protocols
protocols:
ospf:
process: 1
router_id: 10.0.0.1
areas:
- { id: 0, interfaces: [Lo0, Eth1/3] }
isis:
net: 49.0001.0100.0000.0001.00
level: 2
bgp:
asn: 65001
router_id: 10.0.0.1
neighbors:
- { peer: 192.0.2.2, remote_as: 65002 }
links[]
Each link references devices by hostname and interfaces by name. type defaults to l3.
links:
- a: { device: core-01, interface: Eth1/3 }
b: { device: edge-01, interface: Eth1/1 }
type: l3
description: "north-south"
Validation
Every field is validated on each keystroke (debounced). Errors surface in a panel under the editor and the canvas shows the last good render until the YAML becomes valid again.