Platform/A2A composition

Workflows call workflows. Like functions.

Every published workflow exposes a typed input and output. Drop one as a node inside another. The graph composes — sales calls onboarding calls provisioning, three teams, three graphs, one chain.

The shape

Three workflows. One execution.

When a parent workflow runs, the sub-workflow nodes inline their child graphs at runtime. Each child runs in its own execution context — its own retries, its own audit trail, its own version pin — but the parent waits for it like a single step.

Sales
lead-router · v4
Webhook
Enrich
→ onboarding
↓ calls as a node
Operations
customer-onboarding · v9
Risk score
Approval
→ provisioning
↓ calls as a node
Platform
account-provisioning · v12
Stripe
Workspace
Slack
Typed interface

Every workflow is a function with a schema.

Press publish and Nexus snapshots the workflow's input schema and output schema. Other workflows see those schemas, just like the form designer sees an MCP tool's schemas. Your IDE will autocomplete fields. Type errors are caught before runtime.

# published interface — customer-onboarding v9
input:
  lead_id: string
  source:  enum(web, partner, referral)
  priority: enum(standard, expedited)

output:
  account_id: string
  workspace_url: url
  approver:  user | null
  duration_ms: number

# calls/min: 142 · p95: 4.2s · v9 deployed Apr 18, 2026
Properties of A2A

Recursion guards, version pins, isolation by default.

01

Recursion guards

The runtime tracks the call chain per execution. A loop — workflow A calling B calling A — fails fast at edit time, not at 3am.

02

Version pinning

The parent pins to a specific version of the child. A new publish doesn't break callers automatically — they upgrade explicitly.

03

Tenant isolation

Sub-workflow runs inherit the parent's tenant context. Cross-tenant invocation is impossible by construction, not by policy.

04

Per-call retries

Sub-workflow calls have their own retry policy. Transient failure inside the child doesn't bubble up unless you want it to.

05

Audit lineage

Every parent run records the child run IDs it triggered. Replay walks the whole tree. No orphan executions.

06

Same primitive as MCP

A sub-workflow node and an MCP tool node are both "call something with a typed contract." The form designer doesn't care which.

Compose your graph

Bring two workflows. We'll wire them together live.

30 minutes. We sketch a parent graph that calls a child, configure the typed wires, and run the whole chain end-to-end on the spot.