A workflow is a directed graph of typed nodes wired by edges, authored in
the visual builder and serialized to YAML. The canonical shape is a single
JSON Schema generated from the same
zod source the web app validates against (web/src/lib/api-schemas-workflow.ts),
so the document, the editor, and the runtime never disagree.
Every workflow exported from the builder begins with a modeline that points your
editor’s yaml-language-server
at the schema, giving inline validation and node-kind autocompletion:
Branch on a predicate to different output handles.
human
Pause for a human decision or input.
end
Terminal node.
code
Run a Bash/Python/TypeScript/Go/Rust/C# snippet (defaults to Bash). Unbound: hermetic container, no network/DB. A Python/TypeScript node may declare resource_bindings to run on the credentialed sandbox with vetted egress + a host-mediated guarded DB call (ADR 0058).
db_query
Read from a bound PostgreSQL resource.
db_execute
Write to a bound PostgreSQL resource.
http_request
Make an outbound HTTP call (SSRF-guarded, IP-pinned).
transform
Reshape data flowing between nodes.
notify_telegram
Send a Telegram message.
notify_email
Send an email.
notify_webhook
POST to a webhook.
notify_discord
Send a Discord message.
loop
Iterate over a collection.
wait_event
Pause until an external event arrives.
llm_classify
Classify input with an LLM.
imap_ack
Acknowledge an IMAP message.
app
Invoke a deployed App.
connector
Run a marketplace connector node.
Upstream node results flow to a node via SC_NODE_INPUTS; a trigger payload via
SC_TRIGGER_CONTEXT. See the build-your-first-workflow tutorial
to author one in the visual builder.