Secrets are encrypted-at-rest key/value pairs that resolve into yourDocumentation Index
Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
Use this file to discover all available pages before exploring further.
services.*.env and services.*.build.args values at deploy time. Use them for anything you wouldn’t paste into a public Slack channel: API tokens, database URLs, signing keys.
For non-sensitive config like log levels or feature flags, use Variables instead — they’re cheaper to manage and visible in the UI.
Two scopes
- Repository secrets —
/{slug}/repos/{id}/secrets. Scoped to one repo. - Organization secrets —
/{slug}/settings/secrets. Shared across every repo in the org.
${secret.NAME} references prefer the repo store with org fallback; explicit ${secret.repo.NAME} / ${secret.org.NAME} are strict.
Creating a secret
Both UIs work the same way:- Click Add secret.
- Enter the name (
^[A-Z][A-Z0-9_]*$). - Paste the value.
- Save.
How secrets reach your container
When a deploy starts:- slipway parses the spec and collects every
${secret.*}reference. - For each reference, it looks up the row in the configured scope and decrypts the value.
- Resolved values are written to a per-deployment Kubernetes
Secret(sl-env-<dep-id>-<service>) in the tenant namespace. - The pod spec consumes that secret via
envFrom: secretRef. Values never appear in theDeploymentobject, the pod spec JSON, or etcd’s plaintext.
build.args, the same flow lands in sl-buildargs-<dep-id>-<service> in the build namespace. The buildctl invocation expands them via the shell, never via container args.
What slipway logs about secrets
Every deploy emits asecrets_resolved event with the resolved set: [{name, scope, source}, ...]. Never values. The event log shows you that DATABASE_URL was resolved from the repo store, which is useful for debugging precedence issues without leaking the value.
If a referenced secret doesn’t exist, the deploy fails at this phase with a clear error, before any tenant pod starts.
Permissions
| Role | Read names | Read values | Create / update / delete |
|---|---|---|---|
| Viewer | yes | no | no |
| Developer | yes | no | yes |
| Admin | yes | no | yes |
| Owner | yes | no | yes |