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
plyMax independent nodes executing at once (default 4) — see Ply
spend tripwire (USD)Abort the run when tracked spend reaches this ceiling — see Tripwire

If a param is declared but never referenced, Loose ends 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.