symflip
symflip vs Envoyer

A Laravel Envoyer alternative for multi-server teams

Both deploy one PHP project to many servers with zero downtime. symflip is open source, runs on your own infrastructure if you want, and builds the new release on every server before any of them goes live. Here's an honest side by side, including where Envoyer is the better pick.

Deploying to two or more servers needs Team (€29/mo, cancel anytime).

First, Envoyer isn't going anywhere

Envoyer is still sold and still maintained. Laravel says it will be maintained for the foreseeable future [1]. If it works for you, that's a fine reason to stay. This page is for teams who want something different from their deploy tool, not for teams who've been told to leave.

Why teams look at symflip instead

You can run it yourself.

symflip is Apache-2.0 and ships as one Go binary plus Postgres. Use the hosted version, or run it on your own box so your deploy keys and secrets stay on your network.

No server goes live until all have built.

Every server fetches and builds the new release first. If any of them fails, none go live and every server keeps serving what it had. Then each server switches with one atomic symlink rename, all in parallel. If a server fails to switch, or the release fails its health check with auto-rollback on, the servers that switched roll back so the fleet ends on one release. If a rollback itself fails, symflip says so loudly.

Health checks that act.

Give symflip a command, such as curl -fsS http://127.0.0.1/up, plus a retry count. Turn on auto-rollback and a release that never passes is rolled back on every server.

Migrations once, built in.

Pick a primary server. Migrations run there, once, before anything goes live. There's no per-server hook config to get right, and a failed migration means a safe abort.

Guardrails for agencies.

Require approval before a deploy goes live (Business). Schedule deploys for off-peak windows with cron (Team). See who shipped what in an audit log (Business). Give each teammate a role instead of a shared login (Team).

One .env for the whole fleet.

Secrets are sealed at rest, and every deploy rewrites the same shared/.env on every server.

Where your keys live

If you hold SSH access to client servers, this is the first thing to check.

  • One deploy key per server. symflip generates an Ed25519 key pair for each server you add. You only ever see the public line to put in authorized_keys.
  • Sealed at rest. Private keys and project secrets are encrypted before they're stored, and only decrypted to open an SSH session or write shared/.env.
  • Nothing installed on your servers. No agent, no daemon. Remove the key line from authorized_keys and symflip's access is gone.
  • Or keep it all in-house. Self-host symflip under Apache-2.0 and the keys never leave your network.

The details: How symflip handles your SSH keys and secrets.

Comparison

Deploy safety

symflip and Envoyer compared on deploy safety
Feature symflip Envoyer
Zero-downtime deploys Yes Yes [2]
One project, many servers Yes, from Team Yes [3]
Migrations once, on one server Yes, built in Yes, by limiting a hook to one server [5]
Health checks Yes, a command run on each server Yes, a URL that must return 2xx [4]
When the health check fails Optional automatic rollback Notifies your channels; no auto-rollback documented [4]
Rollback One click on single-server projects; automatic on a failed health check Yes [2]
Approvals before go-live Yes (Business) Not listed [2]
Scheduled deploys Yes (Team and up) Not listed [2]
Audit log Yes (Business) Not listed [2]

Plans and platform

symflip and Envoyer compared on plans and platform
Feature symflip Envoyer
Price per month Free, then €12 / €29 / €99 $10 / $20 / $50 [2]
Projects 1 / 5 / 20 / unlimited 10 / 20 / unlimited [2]
Team members 1 / 1 / 5 / 15 seats Unlimited on every plan [2]
Open source, self-hostable Yes, Apache-2.0 No, hosted service [2]
Push-to-deploy GitHub and GitLab webhooks GitHub, Bitbucket, GitLab including self-hosted [2]
Notifications Slack, Mattermost or any incoming webhook Slack, Microsoft Teams, Discord, email [7]
Heartbeats (cron monitoring) No Yes [2]
Public API No Yes [6]
Configurable linked folders No, shares .env and storage/ Yes [3]
Server OS Linux Linux and FreeBSD [3]

symflip plans in order: Hobby, Solo, Team, Business. Envoyer plans: Basic, Plus, Premium.

Envoyer details checked on . Sources:

  1. laravel.com/forge/pricing (FAQ: "What about Laravel Envoyer?")
  2. envoyer.io (features and pricing)
  3. docs.envoyer.io/projects/servers (servers, linked folders, FreeBSD)
  4. docs.envoyer.io/projects/management (health checks)
  5. docs.envoyer.io/projects/deployment-hooks
  6. envoyer.io/api-documentation
  7. docs.envoyer.io/projects/notifications

When Envoyer is still the better choice

We'd rather you pick the right tool than pick us. Stay with Envoyer if:

  • You need heartbeats. Envoyer monitors your cron jobs. symflip doesn't.
  • You trigger deploys from scripts. Envoyer has an API. symflip has no public API or CLI yet.
  • You link folders beyond storage. symflip shares .env and storage/ only. You can link more with a hook, but Envoyer does it properly.
  • You deploy to FreeBSD. symflip only targets Linux.
  • You have a big team on a small budget. Envoyer includes unlimited team members on every plan. symflip caps seats per plan: 5 on Team, 15 on Business. Need more? Talk to us.
  • Cost is the deciding factor. Envoyer Basic is $10 a month for 10 projects. symflip's multi-server plan starts at €29 for 20 projects. We're not the cheaper option here, and we won't pretend to be.

Moving over

There's no one-click importer. Moving a project means four things: copy your hooks into symflip's pipeline fields, paste your .env into secrets, add your servers, then repoint nginx, the scheduler and your workers at the new current path. You can run both tools side by side, and switch back by repointing nginx.

The cutover, on each server:

  1. Set the nginx root to the new current/public and reload nginx.
  2. Point the schedule:run cron entry at the new path.
  3. Point each queue worker, Horizon or daemon at the new path and restart it.
  4. Turn off Envoyer's push-to-deploy, then add symflip's webhook if you want it.

Step-by-step guide: Migrating a multi-server Envoyer project to symflip

Questions people ask

Is Envoyer being shut down?
No. Laravel says Envoyer will be maintained for the foreseeable future. You don't have to leave it; this page is for teams who want something different.
Is there an Envoyer importer?
No. Moving a project means copying your hooks into symflip's pipeline fields, pasting your .env into secrets, adding your servers, and repointing nginx, cron and workers. The migration guide walks through each step.
Can I run symflip and Envoyer side by side?
Yes. symflip deploys into its own directory, so Envoyer keeps serving traffic until you repoint nginx. Switching back is repointing nginx again.
Can I self-host symflip?
Yes. symflip is Apache-2.0 and runs as one Go binary plus Postgres. The open-source build needs no license key.
Is symflip cheaper than Envoyer?
No. Envoyer Basic is $10 a month; symflip's multi-server plan starts at EUR29 a month. Pick symflip for what it does, not for price.

Laravel, Laravel Forge and Laravel Envoyer are trademarks of their owner. Deployer is an independent open-source project. symflip is not affiliated with or endorsed by either. Competitor details are as published on the cited pages on and may have changed since.

Try it on one project first.

Deploy to a single server free, with no card. Add servers when you move to Team (€29/mo).