▸ Browse docs — Reference
▸ SECTION D · Reference
DSL reference
Last updated: 2026-08-16
The graph DSL is a YAML definition language. It is the code-parity surface of the visual canvas: the same definition, either surface, zero drift.
Top-level schema
graph: <name> # required, unique per workspace
version: <semver> # immutable once published
description: <string> # optional
nodes: { <name>: <node-config> }
edges: [ <from> -> <to> ] # or conditional: <from> -> <to> when <condition>
Node config by type
Each type’s purpose is described in Nodes; this table is the config schema.
| Type | Config keys |
|---|---|
agent | model, system_prompt, temperature, tools, max_steps |
tool | mcp_server, tool, args |
transform | code (pure function) or template |
router | field, cases: {value: target} |
trigger | `type: inbound_email |
terminate | output |
gate.hitl | quorum, roles, sla, escalate |
gate.policy | pack, version |
gate.eval | suite, threshold |
human_task | assignee_roles, instructions |
map | over, subgraph |
subgraph | graph, version, inputs |
wait | `until: duration |
memory.read | key, scope |
memory.write | key, value, scope |
rag.retrieve | store, query, top_k |
Example
graph: refund-approval
version: v1.3
nodes:
trigger: { type: trigger, input: inbound_email }
triage:
type: agent
model: anthropic/claude-sonnet-4
tools: [search, classify]
gate:
type: gate.policy
pack: baseline-security
approve:
type: gate.hitl
quorum: 2
roles: [ops_lead, compliance]
sla: 4h
escalate: vp_ops
pay:
type: tool
mcp_server: payments
tool: issue_refund
edges:
- trigger -> triage
- triage -> gate
- gate -> approve
- approve -> pay
Versioning
- Drafts are mutable; published versions are immutable.
- Activation pins a version; every run records the pin in the ledger.
- Editing a published graph creates a draft, never a mutation.
Was this helpful?