Design on the canvas
Author a governed flow in the Process Cockpit — place nodes, decorate them with risk tiers and gates, validate the graph live, and save it as a versioned draft.
The Process Cockpit is where you author a governed flow as a canvas graph of steps. This guide covers the pieces you work with, how live validation keeps the graph governable, and how a draft is saved.
Nodes and edges
A canvas is nodes connected by edges. Each node is a step carrying an id, a
kind, and its governance fields:
Node kind | What it is |
|---|---|
agent | An automated step. Carries a risk tier and, for tools, a reversible flag. |
gate | A human sign-off point. The run parks here for a verdict. |
gateway | A branch/join. Routes the run down one edge (exclusive) or fans out (parallel). |
Edges connect node ids as { source, target } pairs, with an optional branch label on a
gateway's outgoing edges.
Start from a template or from text
You rarely start blank. Seed the canvas from the closest existing vertical, or from a free-text description:
curl -s -X POST "$API/process-templates/draft-from-text" \
-H "Content-Type: application/json" \
-d '{
"text": "Screen a member for a knee replacement prior-auth, then get a nurse sign-off.",
"generate": false
}'With generate: false, the closest matching vertical's canvas graph comes back as a
starting point; when nothing matches (or generate: true), a novel graph is constructed.
Validate live — gate-removal reachability
As you edit, validate the graph against the governance invariants. This is the check that keeps a flow governable: it flags an irreversible step that no human gate protects, a gate missing its human/gate-id, and a bad blast radius:
curl -s -X POST "$API/process-templates/validate" \
-H "Content-Type: application/json" \
-d '{
"nodes": [
{ "id": "screen", "kind": "agent", "tier": "medium" },
{ "id": "signoff", "kind": "gate" }
],
"edges": [{ "source": "screen", "target": "signoff" }]
}'The response is the linearized steps plus a violations list. The key property: if you
remove a gate that sat in front of an irreversible step, validation reports that the
irreversible step is now reachable without a human — so you can't accidentally ship an
ungoverned flow.
Save a draft
When the graph is clean, persist it as a versioned draft scoped to your company. Each
save bumps the version for (company, slug), so history is kept:
curl -s -X POST "$API/process-templates/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "prior-auth",
"name": "Prior Authorization",
"nodes": [
{ "id": "screen", "kind": "agent", "tier": "medium" },
{ "id": "signoff", "kind": "gate" }
],
"edges": [{ "source": "screen", "target": "signoff" }]
}'Saving re-runs the same validation, stores the violations alongside the graph, and
returns the saved draft. List the latest version of each authored process:
curl -s "$API/process-templates/drafts" -H "Authorization: Bearer $TOKEN"Saving a draft does not make it runnable in production on its own — it's a versioned, company-scoped authoring artefact. Runs execute the seated vertical templates; see Run a governed process.
See the Process templates reference for the full canvas, validation, and draft schemas.