Skip to content

Params

A param is a named, typed input to a whole workflow. Params turn a graph that does one thing into a graph that does a class of things.

Define them in ≔ params in the canvas topbar.


FieldMeaning
nameIdentifier. Letters, digits, _, -
typetext, int, float, bool, or json
defaultPre-filled value (optional)
descriptionShown in the run form (optional)

Reference a param anywhere in prompt text or a converter template:

Review the following change and list three risks.
Area: {{param:area}}
Diff:
{{input}}

Substitution happens at run time, before the node executes. Unknown placeholders are left visible rather than silently blanked. So a typo shows up in the output instead of vanishing.


Canvas. Press ▶ Run and threadle shows a form for every declared param, pre-filled with defaults and validated against each type before the run starts.

CLI. Pass them as flags:

Terminal window
threadle run <graphId> \
--param area="authentication" \
--param strict=true \
--approve-all

Values are validated the same way in both paths. A bad int stops the run before any agent is called:

param "retries" not an int: "three"

The ≔ panel also holds two run-wide settings that are not params:

SettingEffect
parallelismMax independent nodes executing at once (default 4). See Parallelism
spend ceiling (USD)Abort the run when tracked spend reaches this ceiling. See Circuit breakers

If a param is declared but never referenced, Graph lint says so:

parameter never referenced as {{param:area}}

Usually that means a renamed placeholder, not a spare param.


One param, one spine. The bundled Starter workflow takes a single task param and threads it through plan, implement, and review stages. One input, three agents.

Params as switches. A bool param inside a converter template lets one graph produce a terse or verbose prompt without rewiring.

Params as data. A json param is validated as JSON before the run. Handy for feeding a structured list into an iterator.