One Graph. One System.
Compose a system visually, configure its module operations and publish it. Each publication gets an immutable system ID, a dedicated execution URL, and a key scoped strictly to that graph.
Design → Configure → Publish
Choose a supported runtime operation in each node’s settings. Add fixed JSON input, or bind inputs from connected predecessor nodes. Publish from the builder or API access, then test your published system with test run inputs. The server validates node uniqueness, supported operations, input sources, and acyclic dependency order before saving the snapshot and issuing its key.
Local Save keeps an editable draft in this browser. Publish creates an immutable snapshot on the server. Later draft edits never mutate that published system. Republish to create a new version and rotate credentials when retiring older snapshots.
Call a Published System
POST /api/v1/graphs/{systemId}/run
Authorization: Bearer $GRAPH_API_KEY
Content-Type: application/json
{
"inputs": {
"policy": {
"authenticity": "PASS",
"identity": "MATCH",
"action": "balance",
"budget": 100,
"stickyFail": false,
"shortAudio": false
}
}
}Input Mapping & Component Field Bindings
Per-run inputs are keyed by node ID. Fixed node configuration overrides per-run fields. When inputFrom is selected, that predecessor’s output overrides both. For individual fields, configure field bindings such as:
{
"authenticity": {
"node": "voiceprint",
"path": [
"status"
]
}
}Each binding source must be a connected predecessor. Bound fields override runtime inputs. Missing output paths halt execution safely. There is no arbitrary code execution or expression eval in the runner.
Execution, Branching & Outcomes
Without explicit routing, the runner executes every node in topological dependency order. Each response contains execution duration, status (completed, failed, or skipped), and outputs.
Explicit Routing: Entries, Conditions & Joins
Enable explicit routing in System API → Entry points, conditions and outputs:
- flow.entries: List all entry node IDs. Requests specify which entry points to activate.
- Edge conditions: Configure
when: { path: ["decision"], equals: "ALLOW" }to branch conditionally based on exact output values. - Joins: Set
runtime.join: "all"(default: all predecessors must run) orruntime.join: "any"(runs once any predecessor completes). - Named outputs: Map terminal node outputs into a clean JSON dictionary using
flow.outputs: { result: { node: "policy", path: ["decision"] } }.
{
"entries": [
"batch-a"
],
"inputs": {
"batch-a": {
"samples": [
75
]
}
}
}Durable Agent Tasks (Relay & Bridge)
Relay delegates to another published component owned by the same workspace. Bridge executes sandbox bank transfers with parameter-bound permits and interactive signed-in customer confirmation:
POST /api/v1/graphs/{systemId}/tasks
Authorization: Bearer $GRAPH_API_KEY
Idempotency-Key: your-stable-request-id
Content-Type: application/json
{"inputs":{"delegate":{"accountId":"source-id","payeeId":"destination-id","amount":1000,"currency":"INR"}}}
GET /api/v1/tasks/{taskId}
POST /api/v1/tasks/{taskId}/resume
POST /api/v1/tasks/{taskId}/cancel