Describe the work. Get a workflow that actually runs.
Apex is a compiler for automations. It turns one sentence into a typed execution graph over thousands of real integration actions, checks every step before anything is saved, and runs it so a crash resumes at the exact node.
No model can read 6,758 schemas. So the compiler narrows them.
Each stage is cheap enough to cast wide and strict enough that the expensive model only sees what matters.
- 6,758actions and triggersfrom 707 integrations
- 100+integrationskept by embedding search
- ≤ 16integrationspicked by the router
- ≤ 48action schemasgiven to the graph author
- 1validated graphor a clear failure
The hard part is not trusting the model
It can only use what exists
Every node type comes from a closed catalog. A model that invents an action doesn't get a broken step, it gets a validation error naming the type.
Data wiring is type-checked
A reference like {{outputs.fetch.items}} is checked against the outputs that upstream node declares. A field that doesn't exist never reaches a run.
Mistakes go back to the model
Validator errors are returned verbatim for up to two repair rounds. Large graphs are written section by section, so an error in section 5 doesn't rewrite sections 1 to 4.
It never fakes success
There's no fallback graph and no mock output. If a stage can't produce something valid, the compile fails and says why.
Kill the worker. The run keeps its place.
Every node is its own Temporal activity, and independent branches run in parallel. When a worker dies, completed nodes are read from workflow history instead of being called again, so a restart doesn't re-send the email or re-charge the card.
| fetch_charges | Completed | read from history |
| summarize | Completed | read from history |
| post_to_slack | Worker killed | retried on restart |
| add_sheet_row | Waiting | runs next |
Try to break it.
The compiler is live. No account needed: describe something messy and watch every stage work.
Open the playground