Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt

Use this file to discover all available pages before exploring further.

Variables are the plaintext counterpart of secrets. Same two-scope model, same ${var.*} substitution syntax, but values are visible to anyone with viewer role or above. Use variables for:
  • Feature flags (FEATURE_NEW_ONBOARDING=on)
  • Log levels (LOG_LEVEL=debug)
  • Non-sensitive endpoints (REGISTRY_HOST=ghcr.io)
  • Build identifiers passed into build.args for reproducibility
Use secrets for anything you wouldn’t print in a deploy log.

Two scopes

  • Repository variables/{slug}/repos/{id}/variables. Scoped to one repo.
  • Organization variables/{slug}/settings/variables. Shared across every repo in the org.
The same name can exist in both stores. Bare ${var.NAME} prefers the repo store with org fallback; explicit ${var.repo.NAME} / ${var.org.NAME} are strict.

Substitution

services:
  web:
    build:
      args:
        BUILD_REV: ${var.BUILD_REV}
    env:
      LOG_LEVEL: ${var.LOG_LEVEL}
      REGISTRY:  ${var.org.REGISTRY}
Names match ^[A-Z][A-Z0-9_]*$. Missing variables fail the deploy before any tenant pod starts.

What slipway logs about variables

Every deploy emits a vars_resolved event with the resolved set: [{name, scope, source, value}, ...]. Values are included because variables aren’t secret — the event log is a useful audit trail for “what value was actually used.” If you find yourself wanting to keep a variable’s value out of the event log, you want a secret instead.

Permissions

RoleRead namesRead valuesCreate / update / delete
Vieweryesyesno
Developeryesyesyes
Adminyesyesyes
Owneryesyesyes