Skip to content

What is Conveyor?

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.

The Conveyor dashboard showing projects and their latest deployments

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.