Skip to content
Sponsor

Knobs and promotion

A node’s settings sit on its body as knobs: a model picker, a slider for temperature, a text box for a URL, a dropdown for an operation. Each kind of knob looks and behaves the same on every node, the ones from custom nodes included, because a node only declares its knobs and the editor draws them.

An HTTP Request node fired by a Manual trigger, with its knobs on its body: Method set to GET, the URL https://wttr.in/Paris?format=3, empty Headers, Query and Body boxes, and Response set to auto
  1. A choice knob: the HTTP method.
  2. A text knob: the URL to call, here the weather in Paris in one line (format=3) from wttr.in, a public service that needs no key.
  3. Another choice: how to read the response.

Right-click a knob and pick Convert to input. The knob turns into a typed input port, a data input, so a wire there never fires the node: it sets the knob each time the node runs: a temperature from a Float, a URL built by a Template, a Strip toggle from a Boolean. A trigger starts turns instead of running in one, so it reads its wired knobs when the graph turns On and again each time it checks its clock or takes a call: an Interval reads seconds before each wait, a Schedule reads cron and timezone at each check, an Agenda reads poll and table at each poll, and a Webhook reads path, method and secret on every call. When the node a wire comes from fails, the knob keeps its own value and the trigger shows a node error. Right-click the port and pick Revert to widget to turn it back into a knob.

The same HTTP Request node with the menu of its URL knob open beside it: Convert to input and Reset to default
  1. Convert to input, on the knob’s right-click menu.
The HTTP Request node with its URL as an input port: a Text node named City holding Paris fills the city tag of a Template named URL, https://wttr.in/{city}?format=3, which wires into the url port, and the URL box is gone from the node's body
  1. The url knob is now an input port, and its box is gone from the body.
  2. A Template named URL builds the address, https://wttr.in/{city}?format=3, from the city in the City node, and wires into it. The Template’s trigger runs on to the HTTP Request, so the address is ready when the request fires. Change the city and the same graph asks for another city’s weather.

If you convert a knob and leave the new port unwired, the node uses the knob’s own value.

Reset to default on the same menu puts a knob back to the value its node declares.

A few knobs always stay knobs, such as a model picker (the model reshapes its node, see below) and the text of a Template. A node’s page marks them stays a knob.

Some knobs change which other knobs and ports a node shows:

  • The operation of a DB, KV or Vectors node: an insert shows fields, a find shows where, a query shows sql, and the outputs follow (row_id, rows, affected).
  • The model of an LLM, TTS or Rerank node: the selected model’s settings appear as knobs (temperature, top_p, voice, speed, a rerank endpoint), and a model that reads images grows an image input. Each setting can become an input, typed by the setting: a decimal number takes a float, a whole number an int, an on/off a bool, and text or a choice takes text. The port exists only while the picked model declares that setting; switching to a model without it removes the port and its wire. STT and Embed models declare no settings, so they have nothing to convert. See Models.
  • The fields of Tool Args and the keys of Split JSON: one output per name you type.

A knob’s value is saved in the graph file with the node. A key typed into a knob is saved there too, in plain text, which is why keys belong in secrets: Tags and secrets shows how.

For custom node authors, Custom nodes shows how to declare knobs.