Auto-deploy on Push
With auto-deploy enabled, every push to your configured branch triggers a new deployment automatically — no manual steps needed.
Enabling auto-deploy
Auto-deploy is configured per app. Go to your app → Settings tab, find the Auto Deploy toggle, and turn it on. Save settings.
When enabled, Vessl listens for push events on the branch you selected during app creation. Each push kicks off a build and deploy cycle automatically.
Auto-deploy requires the Starter plan or above. On the Hobby plan, deploys are triggered manually from the dashboard.
How it works
- You push to the watched branch on GitHub.
- GitHub sends a webhook to Vessl.
- Vessl queues a new build immediately.
- The build runs, and if successful, the new version is deployed with a canary health check before going live.
If the new deployment fails the health check, the previous version continues serving traffic — your app doesn't go down.
Want a push to deploy only after its CI passes? Turn on Wait for CI — Vessl holds each deploy until GitHub reports the commit's checks green, so a failing commit never ships.
Triggering a manual deploy
Even with auto-deploy on, you can always trigger a deploy manually:
- Go to your app → Deployments tab.
- Click Deploy Now.
This deploys the latest commit on your configured branch, regardless of whether you've pushed recently.
Changing the watched branch
The branch is set when you create the app. To change it, go to Settings → Source and update the branch field, then save and redeploy.
If auto-deploy stops working
The most common reason auto-deploy stops triggering is that the GitHub integration was disconnected or revoked.
Check the connection:
- Go to Integrations in the sidebar.
- If your GitHub account shows as disconnected or suspended, click Connect GitHub to reconnect.
- Re-install the Vessl GitHub App on the account or organization that owns your repository.
- Vessl will automatically re-link the installation to your existing apps — no need to reconfigure each one.
Other things to check:
- Make sure you're pushing to the correct branch (the one configured in your app settings).
- If your repo was transferred to a different GitHub organization, you'll need to reconnect the integration on the new org.