Docs · Orchestration
Hybrid orchestration
BPM-class process and LangGraph-class agent teams on one JSON-LD workflow graph. A full agent orchestration is one node inside a governed run.
Architecture: SPIKE-HYBRID-ORCHESTRATION.md (repo) · Demo script: hybrid claims (wf-hybrid-claims).
Gateway (parallel fork / join)
{
"id": "fork_checks",
"kind": "gateway",
"label": "Parallel checks",
"meta": { "gateway": "parallel", "join": "join_checks" }
}Join side: "meta": { "gateway": "parallel", "joinOf": "fork_checks" }. Inclusive and event gateways use the same shape with "gateway": "inclusive" | "event".
Wait + boundaries
{
"id": "await_docs",
"kind": "wait",
"meta": {
"wait": { "kind": "message", "channel": "docs.received", "timeoutMs": 259200000 }
},
"boundaries": [
{ "on": "timeout", "interrupting": true, "to": "escalate_missing_docs" }
]
}Boundaries attach to agent, integration, subprocess, wait, or human nodes (timeout | error | signal | escalation).
Foreach (multi-instance)
{
"kind": "integration",
"meta": {
"adapterId": "claims.coverage",
"foreach": {
"itemsKey": "lineItems",
"mode": "parallel",
"maxConcurrency": 5,
"resultKey": "coverageResults",
"reducer": "append"
}
}
}Compensation
{
"id": "reserve_inventory",
"kind": "integration",
"meta": { "adapterId": "erp.reserve" },
"compensateWith": "release_inventory"
}On cancel / transaction failure the engine walks completed nodes in reverse and runs each compensateWith target.
Orchestration node (agent team as one step)
{
"id": "research_team",
"kind": "agent",
"meta": {
"orchestration": {
"pattern": "supervisor",
"executorId": "hosted",
"agents": [
{ "id": "lead", "role": "supervisor", "goal": "Coordinate research", "maxTurns": 12 },
{ "id": "web", "goal": "Web research", "allowedTools": ["research.web"] }
],
"handoffs": [{ "from": "lead", "to": ["web"] }, { "from": "web", "to": ["lead"] }],
"interrupts": [{ "when": "confidence < 60", "to": "human", "resume": true }],
"checkpoint": "turn",
"budget": { "maxTurns": 40 }
}
}
}Patterns: single | pipeline | supervisor | swarm. Executors: hosted (native ReAct + handoffs), langgraph (IR compile closure.langgraph.v1 + same audit shape; webhook for external StateGraph), bedrock / foundry (IR export; muscle via webhook until adapters land).
What a developer needs
- Author the graph from your IDE (Platform MCP) or as JSON-LD; review in the Closure console's gateway / wait / orchestration editors.
- Run via PlatformRuntime — sequential graphs unchanged; token set activates on parallel forks.
- Swap
executorIdwithout rewriting the process.
See also: Workflows pillar · Build · Workflows API.