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.
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.
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.
The runtime tracks the call chain per execution. A loop — workflow A calling B calling A — fails fast at edit time, not at 3am.
The parent pins to a specific version of the child. A new publish doesn't break callers automatically — they upgrade explicitly.
Sub-workflow runs inherit the parent's tenant context. Cross-tenant invocation is impossible by construction, not by policy.
Sub-workflow calls have their own retry policy. Transient failure inside the child doesn't bubble up unless you want it to.
Every parent run records the child run IDs it triggered. Replay walks the whole tree. No orphan executions.
A sub-workflow node and an MCP tool node are both "call something with a typed contract." The form designer doesn't care which.
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.