config.yaml is the settings form. canvas renders it, someone fills it in, and your
calls read the saved values as {{ config.<field> }}.
It is the file you touch most. Every new option a node grows lands here and nowhere else.
config.yaml
configSchema is a JSON Schema, so any keyword you already know works. The ui: keys are
the platformβs, and they decide how a field is drawn.
Writing the labels
Three fields decide whether the form makes sense to the person filling it in.
Say what the setting does, not what it is called. βMaximum number of tokens to generateβ
tells a reader nothing they could not get from the label. βThe model stops when it hits this,
mid-sentence and without an errorβ tells them why they might change it.
Keep it to a line or two. Detail belongs in your nodeβs own documentation, not under a form
field.
Field types
Text
A choice
enum is the values, enumNames is what a person sees. They are positional, so they must be
the same length.
A number
minimum and maximum are enforced, so a bad value is caught in the form rather than by the
service.
A switch
Structured data
Making a field wirable
ui:field: template is what lets a field take data from an upstream node instead of a
typed value. Without it, the field is whatever someone typed.
type, on every node: a string takes a {{ }} Handlebars string,
while an object or array takes a return expression.
workflow.variables
resolve here, before the node runs, which is why they belong in a config field rather than
in a call.
Showing a field only when it matters
ui:dependencies hides a field until another field has the right value. A scalar means it
must match exactly, an array means it must be one of several, and multiple keys are all
required at once.
Two fields you never write
authRequired and authRole are reserved. The builderβs two access controls are platform
chrome, injected into every runnable nodeβs form, and declaring either yourself is a lint
error. Who can run it covers how your floor and the builderβs
controls resolve together.
Other keys you will meet
The reference lists every
ui: key.
When it goes wrong
Next steps
Handlebars and expressions
The grammar a wirable field resolves, and every root it can reach.
config.yaml
Every field the settings form takes, generated from the schema.

