Skip to main content
Every value is stored and exported as a string. The type governs the control, the validation, and — for booleans — the resolved value.

text

The default. Single-line values are trimmed of surrounding whitespace on save.

multiline

A textarea, four rows tall, rendered in a monospace face. Whitespace and newlines are preserved exactly, which makes it the right type for PEM keys, JSON credentials, and configuration snippets. A secret multiline field is masked while typing and shows a saved indicator like a single-line secret.

number

The input accepts any decimal (step="any"). Values must parse as a number; min and max are inclusive bounds. The value is exported as the string that was typed, so "2" stays 2 and "2.50" stays 2.50.

email

Must parse as a mail address and have the shape local@domain.tld. Display names and bare local parts are rejected.

url

Must parse with a scheme and a host: https://example.com passes, example.com does not.

boolean

A dropdown with true and false. On resolution an unset boolean — no value, no default — becomes false, so steps can test "$FLAG" = true without worrying about an empty string. Booleans cannot be secret and take no pattern.

select

options is required, and each value must be non-empty and unique. The dropdown’s blank entry reads — default: X — when a default exists. Selects cannot be secret and take no pattern. A when condition comparing a select with eq or in must use values from its options.

Exposure rules

How a variable becomes an environment variable, in order:
  1. Inactive variables (a when that does not hold) are not exported.
  2. A saved value wins; otherwise the default.
  3. A boolean with neither becomes false.
  4. An optional variable with neither is not exported.
  5. A required variable with neither never reaches a run — validation blocks the deploy.
See the run environment reference for what else the container receives.