Schemas / Node graph
rig.node.graph
v0.31.0 · draft 3 fields 3 required
Fields
| Field | Type | Meaning | |
|---|---|---|---|
nodes |
array<rig.node.node> | required | Graph nodes - see rig.node.node |
links |
array<rig.node.link> | required | Directed pin links - see rig.node.link |
nextId |
uint | required | Next id allocator for nodes / links / pins |
Portable node graph on one entity. Format when present.
Also used inline as nested on a rig.node.node for nestable groups.
Contract vs host
| Layer | Owned by | Examples |
|---|---|---|
| Portable PODs | Rig | graph / node / pin / link / param / publish fields |
Value type ids |
Rig properties | float, vec2, vec4, ... |
Catalog typeIds |
Host / pack | float.add, mod.lfo, color.value, group |
| Evaluation | Host / pack | Graph walk, group recursion, coercion, outputs |
Nestable groups
A node with nested is a group: it appears as one node on the parent canvas; its interior is another graph. Published pins (rig.node.publish) expose selected interior pins as the group's outer interface. Recursion is allowed.
Editor mirrors (nodeCount, ...) and dive UI state are host-only - do not serialize.
Fulfillment
RigKit's node editor over the same PODs - two value nodes into an add node, one link per pin pair. Canvas positions, live pin readouts, and selection are host state; only the fields above travel.

JSON Schema
Resolves at https://rig.works/schemas/rig.node.graph.schema.json —
raw file.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://rig.works/schemas/rig.node.graph.schema.json",
"title": "rig.node.graph",
"type": "object",
"additionalProperties": false,
"required": [
"nodes",
"links",
"nextId"
],
"properties": {
"nodes": {
"type": "array",
"items": {
"$ref": "./rig.node.node.schema.json"
}
},
"links": {
"type": "array",
"items": {
"$ref": "./rig.node.link.schema.json"
}
},
"nextId": {
"$ref": "./_defs.schema.json#/$defs/uint"
}
}
}