slipway resolvesDocumentation Index
Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
Use this file to discover all available pages before exploring further.
${...} references inside services.*.env and services.*.build.args values at deploy time. Missing references fail the deploy with a clear error before any container starts.
Secrets vs variables
slipway has two stores:- Secrets — encrypted at rest with AES-256-GCM. Values are never returned by the API or visible in the UI after creation. Resolved into a per-deployment Kubernetes
Secret(sl-env-<dep-id>-<service>) consumed viaenvFrom: secretRef, so values never appear in the pod spec or in etcd. - Variables — plaintext key/value. Readable by anyone with viewer role or above. Useful for non-sensitive config like feature flags, log levels, or registry hosts.
Substitution syntax
| Form | Means |
|---|---|
${secret.NAME} | secret, repo store first, org store as fallback |
${secret.repo.NAME} | secret, repo store only — fails if missing |
${secret.org.NAME} | secret, org store only — fails if missing |
${var.NAME} | variable, repo store first, org store as fallback |
${var.repo.NAME} | variable, repo store only — fails if missing |
${var.org.NAME} | variable, org store only — fails if missing |
${NAME} | deprecated alias for ${secret.NAME}. Emits a warning at deploy time. |
^[A-Z][A-Z0-9_]*$.
Where values land
For each service, slipway materializes:envvalues → a KubernetesSecret(sl-env-<dep-id>-<service>) mounted asenvFrom: secretRef. Values never appear in theDeploymentobject, the pod spec, or etcd.build.argsvalues → a separateSecret(sl-buildargs-<dep-id>-<service>) in the build namespace. The buildctl invocation uses shell expansion (--opt=build-arg:K="$K") so values never appear in the build pod’sargs.
Resolution behavior
- Both
envandbuild.argsresolve through the same syntax. - Names referenced but not present in either store fail the deploy at the secrets-resolved phase, before any tenant pod starts.
- The deploy event log records every resolution.
secrets_resolvedevents list{name, scope, source}per reference — never values.vars_resolvedevents do includevaluebecause variables aren’t secret.
Managing the stores
Both stores are managed through the UI, not the spec:- Repo secrets and variables —
/{slug}/repos/{id}/secrets,.../variables. - Org secrets and variables —
/{slug}/settings/secrets,.../variables.