Skip to content

rune lint

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.

Terminal window
# 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
  • 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.

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.
Terminal window
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.