Skip to content

Node types

This page describes the data shape of each node type. The required and optional field lists are exhaustive. Anything that is not listed is rejected by the canvas at load time. Every example on this page parses through the DSL parser.

This is a tool-based node. It invokes a registered adapter to drive an external tool such as the shell, the filesystem, or a CLI tool. The adapter is selected by data.adapter, and its dispatch arm is selected by data.actionId. All other fields are adapter-specific. See the adapter references.

Required fields

NameTypeDescription
adapterstringAdapter name; must match a registered adapter
actionIdstringDispatch arm within the adapter
deps[action: "Install"] {
adapter: "shell"
actionId: "pnpm"
args: "install"
}

This is a generative model node. It invokes a model from a chosen provider. The default provider is local, which runs an LLM on the managed server with zero egress. A cloud provider invokes a frontier model instead, and it is gated by the cloud-AI setting and a provider API key. The selected model’s capabilities drive both execution and the inspector. Those capabilities are reasoning, vision, in-node tool use over bound adapters, and embeddings. A non-empty labels array turns the node into a classifier that emits a branchable label.

Required fields

NameTypeDescription
modelIdstringId of a model loaded from the Model Hub
inputstringPrompt text. {{input}} feeds the upstream node’s output; {{nodeId.field}} reads a named node’s output field

Optional fields

NameTypeDescription
providerstringlocal (default) or a cloud provider
systemstringSystem prompt setting the model’s role
maxTokensnumberMaximum output tokens (default 1024)
temperaturenumberSampling temperature (default 0.7)
topPnumberNucleus-sampling probability mass (default 1.0)
topKnumberTop-k sampling cutoff (default 0, disabled)
explain[ai: "Explain failure"] {
modelId: "local-llm"
system: "You are a build engineer. Explain the failure in one paragraph."
input: "{{input}}"
}

This is a design-time generator node. From a natural-language request, it proposes a whole flow for you to review and apply. It is not a runtime node. Run hands it to the review flow rather than executing it.

Required fields

NameTypeDescription
modelIdstringId of the model used to generate the flow
inputstringNatural-language description of the flow to generate

Optional fields

NameTypeDescription
providerstringlocal (default) or a cloud provider
workspacestringWorkspace folder the generated flow operates within
plan[agentic: "Generate a deploy flow"] {
modelId: "local-llm"
input: "Build, test, and deploy the service"
workspace: "."
}

These are built-in primitives that need no external adapter. They cover timed delays (sleep), logging (log), session memory (set-variable), downloads (download), fan-in (merge), and schedule markers (cron).

Required fields

NameTypeDescription
actionIdstringOne of sleep, log, set-variable, download, merge, cron. Unknown ids fail cleanly at run time
wait[utility: "Cool down"] {
actionId: "sleep"
durationMs: 5000
}

This is an API-based integration node. It connects to an external service through that service’s API. The concrete service, its endpoints, and its operations are supplied as catalog data in the entry’s serviceIntegration descriptor, so the node stays vendor-neutral in the DSL. Credentials resolve from the service connection.

Required fields

NameTypeDescription
operationstringId of the operation to invoke, from the installed service’s catalog descriptor

Optional fields

NameTypeDescription
connectionstringConnection id selecting which stored credential to use
call[service: "Create a record"] {
operation: "create-record"
title: "Release review"
}