slipway.yaml describes the services your project runs and the databases they need.
Where the spec comes from
slipway resolves one spec per repository, in this order:
A committed
slipway.yaml wins unless you pin a Compose file, and a stored spec applies
only when no committed file resolves at the spec path.
Your repository stays the source of truth. slipway never writes a spec back to it and reads
the file fresh on every push. The only thing you manage in the console is the secret and
variable values your spec references.
For a monorepo, set a per-service spec path such as
services/api/slipway.yaml and slipway
resolves the spec from there. See Monorepos.A minimal spec
slipway.yaml
Dockerfile at the repository root, served on port 3000 at its
own hostname, live once /healthz returns 2xx.
A fuller one
slipway.yaml
Top-level fields
Everything else lives inside a service block. See Services.
autoDeploy
slipway.yaml
previews
slipway.yaml
automatic spawns a preview for every qualifying PR, manual waits for the
slipway-preview label or a [slipway preview] title tag, and off is the default.
Like autoDeploy, the file wins over the console setting whenever it says something.
Previews are a plan capability, so on a plan without them the setting is skipped rather than
failing your push. See PR previews.
Validation
slipway checks your spec in two places. At parse time, on every push and whenever you add a repo to a project. This catches missing required fields, invalid service names, a service with bothimage and build
fields or neither, two services claiming the same public hostname, and unknown keys. A typo
such as enviroment: fails immediately with its line number, and nothing is built.
At deploy time, once a deploy starts. Unverified custom domains, bad ${service.*}
references, a managed database whose password secret is missing, and build, image-pull or
health-check failures mark the deployment failed with the reason in the event log.
Other missing ${secret.*} / ${var.*} references warn in the deploy log and leave the
referencing key unset instead of failing — see
Secrets and variables.
See Troubleshooting for the errors you
are most likely to hit.
Moving from the older shape
Earlier specs keyed services by name and nested build fields underbuild:. That shape no
longer parses.
volumes: and predeploy: are gone as well. A service gets its own
disk, and the migrations hook is
preDeploy on the service that owns it.
The parser names the replacement for each retired spelling, so a stale file reports what to
write instead.
What slipway leaves out
Stability
The spec isversion: 1. New fields are additive and optional, so a working slipway.yaml
keeps working. A breaking change would land as version: 2.
Services
Every field of a service block.
Databases
Postgres, Redis, MySQL and ClickHouse in four lines.
Secrets and variables
Substitution syntax and where the values live.
Field index
Every field, one row each.