This walkthrough creates a convoy with a frontend repo and an API repo, trackingDocumentation Index
Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
Use this file to discover all available pages before exploring further.
main on each. We’ll leave the primary instance off so the convoy only deploys when a PR opens — the typical preview workflow.
Prerequisites
- The slipway GitHub App installed on your org.
- Two repos visible through the installation. Each has its own
slipway.yaml. Neither needs to beslipway_enabled— that flag controls single-repo deploys; convoys work independently.
1. Open the composer
In the sidebar: Convoys → New convoy (/<your-slug>/environments/new).
2. Pick vessels
Click + Add vessel. In the searchable popover, pickfrontend. Repeat for api. Each vessel defaults to tracking branch:main with the component slug derived from the repo name.
3. Name + URL pattern
| Field | Example |
|---|---|
| Name | Staging |
| Slug | staging (DNS-safe, immutable once created) |
staging-frontend-web.… AND per-PR instances.)
4. Set supplies (optional)
Under Variables + secrets, add anything that should override repo/org scopes for this convoy. Secrets are encrypted at rest and never returned after creation.5. Weigh anchor
Hit Weigh anchor. The composer redirects you to the convoy detail page. With the primary instance off, the Active PR instances rail shows “No active PR instances” — that’s expected. The convoy is now armed.6. Open a PR and watch the magic
Open a PR againstmain on the frontend repo (the PR base branch matters — it has to match a tracked ref). Slipway:
- Webhook fires.
- Slipway finds your convoy with a component tracking
(frontend, branch:main). - Spawns a child instance
staging-frontend-pr<n>cloning the convoy’s components, vars, and secrets. Thefrontendcomponent is rewritten to the PR’s HEAD branch;apistays frozen at the SHA ofmainat spawn time. - The new instance deploys. Its public URLs go live at
https://staging-frontend-pr<n>-<component>-<port>.apps.slipway.sh.
7. Push to the PR
Pushing new commits to your PR branch triggers apull_request synchronize webhook. Slipway re-deploys only the frontend component in the existing instance; siblings stay where they were.
8. Close the PR
Merging or closing the PR tears the instance down. The namespace and pods disappear; the instance row stays in history.What about pushes to main?
Two cases:
- Primary instance off (what we set up): pushes to
mainonfrontendredeploy nothing. The convoy is a definition; main pushes don’t trigger anything until they enter a PR. - Primary instance on: pushes to
mainredeploy the matching component in the primary instance only. PR instances are unaffected (spawn-time frozen).
api’s main has moved on, the operator can hit Refresh siblings on the instance detail page — slipway re-resolves every non-triggering component to the parent convoy’s tracked-ref HEAD and redeploys them.