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.

Spec validation runs in two places.

Parse-time

Runs when slipway loads the file — on every push, on every PR, and when you click Enable for a repo. Catches:
  • Missing required fields (version, services, services.*.resources.cpu, .memory, etc.).
  • Invalid service names (don’t match ^[a-z][a-z0-9-]{0,30}$).
  • Both build and image set on the same service, or neither.
  • Duplicate public-port prefixes across services.
  • Unknown YAML keys (strict decoding — a typo like enviroment: fails immediately).
Parse-time errors block the deploy before any infrastructure is touched.

Deploy-time

Runs once a deploy actually starts. Catches:
  • Missing ${secret.*} or ${var.*} references (no matching value in the configured stores).
  • References to a custom domain: that the org hasn’t claimed and verified.
  • Image-pull failures, build failures, healthcheck failures.
Deploy-time errors mark the deployment failed with the reason in failure_reason and surface in the event log.

What’s not supported

Some things are intentionally absent because slipway is a preview tool, not a production platform.
Not supportedWhy
replicas / autoscalingPreviews always run 1 replica. Load-test elsewhere.
lifecycle / terminationGracePeriodSecondsKubernetes defaults are fine for ephemeral envs.
Init containersFor pre-start work, run it from your container’s startup command.
release: block (one-shot Job before deploy)Run migrations from your container’s entrypoint, or shell-exec into a healthy pod from the UI.
Sidecars (same-pod second container)Define another service. You get independent pods, logs, resources, and inspection.
kind: cron / kind: jobCron rarely fires during a preview’s lifetime. Trigger on demand from the UI.
extends: / spec compositionDeferred until users actually ask.
gVisor opt-outApplication code stays sandboxed. Not a user-facing knob.
Persistent volumes (PVCs)Previews shouldn’t claim arbitrary cluster storage. Connect to external managed databases via ${secret.DATABASE_URL} instead.
CLIEverything is the UI.
If something on this list is a real blocker for you, that’s signal — let us know.