Flows chain multiple apps together.
Why flows?
Some tasks need multiple steps:
1Generate image → Upscale → Remove background → ResizeInstead of running each manually, create a flow that does all four.
How flows work
1Input → App A → App B → App C → OutputEach app's output becomes the next app's input. The runtime runs steps in order; when a step fails, the flow stops and the run is marked failed.
Flow runs and tasks
Every flow run creates a parent task that tracks the full execution — inputs, per-step progress, final output, and status.
| Trigger | What you see in Tasks |
|---|---|
| Run from the workspace | One task for the flow; step status in the task detail view |
| Agent calls a flow as a tool | One task for that flow invocation |
POST /run on a deployed flow app | One task; optional webhook fires when the parent task completes |
Individual app steps execute inside the flow run. You do not manage each step as a separate top-level task from the API.
→ Tasks — status, cancellation, cost, and completion webhooks
→ Flows API — create, edit, duplicate, and deploy flow definitions
→ Flow Runs API — POST /flowruns, list, cancel, and SSE streams
Creating flows
Use the visual editor:
- Drag apps onto the canvas
- Connect outputs to inputs
- Run the whole thing
→ Creating a Flow — editor walkthrough
→ Connecting Nodes — mapping data between steps
Flows as tools
Once created, a flow can be:
- Run directly from the workspace
- Added as an agent tool (the agent sees one tool; the runtime runs every step)
- Deployed as a standalone app with its own
POST /runendpoint
When an agent invokes a flow, the parent agent turn waits for the flow task to finish (same join behavior as app tools and sub-agents in a parallel turn).
→ Flows guide — agent tools, deploy-as-app, execution UI