Zero-downtime deploys
Releases are extracted to a timestamped directory and activated with an atomic symlink swap, so requests never hit a half-deployed release.
Conveyor is a self-hosted deployment tool that gives you Envoyer-style, zero-downtime deploys without a monthly SaaS bill or a third party holding your SSH keys and GitHub tokens. You run it yourself, next to (or near) the servers it deploys to.
It’s built for teams and solo developers who self-host Laravel or other PHP applications on plain servers (VPS, bare metal, whatever) and want a reliable, repeatable way to ship code (clone a release, install dependencies, run migrations, swap a symlink) with live output, rollbacks, and a full audit trail.

Conveyor is a single Go binary with an embedded SQLite database: no external dependencies, no message queue, no Redis. It talks to your target servers exclusively over SSH: there’s no agent to install, no daemon running on the deployed hosts. When you trigger a deployment, Conveyor downloads a release archive from GitHub, uploads it to each server via SCP, runs your configured deploy steps over an SSH connection, and atomically swaps a current symlink to activate the new release. The UI itself is server-rendered HTML with HTMX for interactivity, and deployment output streams to your browser over a WebSocket.
Zero-downtime deploys
Releases are extracted to a timestamped directory and activated with an atomic symlink swap, so requests never hit a half-deployed release.
Multi-server support
Deploy the same project to any number of servers over SSH, with per-step control over which servers a step runs on.
Webhook & API triggers
Auto-deploy on push from GitHub, Gitea, Forgejo, or GitLab, or trigger a deploy from CI with a plain authenticated POST request.
Health-check gate
Poll a URL after activation and automatically roll back to the previous release if it fails.
No-deploy windows
Block manual, webhook, and API deploys during recurring weekly maintenance windows, in a per-project timezone.
Encrypted secrets
SSH keys, GitHub tokens, and managed .env files are encrypted at rest with AES-256-GCM.
Customizable pipeline
Reorder and add deploy steps per project, starting from the builtin clone/activate/purge flow plus a library of predefined Laravel steps.
Project console & notifications
Run ad-hoc commands against the live release with a persisted audit trail, and get Discord/Slack alerts on deploy events.