rune lint

Validate Rune YAML — both server config (runefiles) and resource specs (castfiles) — before applying.

lint is your "pre-flight check." Run it in CI. Run it before cast. It catches schema errors, typos, and common mistakes early.

Both YAML and TOML are accepted — lint routes by extension, so rune lint /etc/rune/runefile.toml works the same as the YAML form.

Examples

# Single file (YAML or TOML)
rune lint myservice.yaml
rune lint /etc/rune/runefile.toml
 
# Recurse into a directory
rune lint ./manifests --recursive
 
# JSON for CI
rune lint examples/config/rune.yaml --format json
 
# Auto-fix simple issues
rune lint manifests/ --recursive --fix
 
# Bail on first failure
rune lint manifests/ --recursive --exit-on-fail

What it validates

  • Schema — every required field present, types correct, enums valid.
  • DNS-1123 names — services, secrets, configmaps, namespaces.
  • Resource referencessecretMounts.secretName points to something defined or already in the cluster.
  • Cron expressions (planned) on jobs.
  • CORS policies — at least one allowed origin if specified.
  • Dependency cycles — detected and rejected.
  • Runefile fields — for server configs, addresses are well-formed, paths exist, etc.

It tells the difference between a runefile and a service spec by content, not filename.

Flags

FlagDefaultNotes
-r, --recursivefalseRecurse into directories.
--format <fmt>texttext or json.
--context <n>1Lines of context shown around errors.
--expand-contextfalseEquivalent to --context=3.
--quietfalseErrors only — no progress or success messages.
--exit-on-failfalseStop at first failure.
--fixfalseAttempt safe auto-fixes (whitespace, defaults).
--strictfalseReserved for stricter rules.

In CI

rune lint manifests/ --recursive --format=json --exit-on-fail

Non-zero exit on any failure. Pipe to jq to extract structured errors for build annotations.

See also