What is Orbit?
Orbit is zero-downtime deployment automation for Magento 2. Atomic Capistrano-style releases, instant symlink swaps, health-check auto-rollback. Maintenance mode only flips when a database migration actually requires it — code-only deploys stay 200 the whole way through.
How it's wired
Two pieces:
- A tiny Rust agent (
orbit-agent, ~10 MB single binary) runs on your Magento host. It polls the Orbit control plane for tasks and executesgit clone,composer install,bin/magento ..., and the symlink swap locally. - The cloud control plane at
orbit.byte8.iostores environments, schedules deploys, holds the deployment history, and shows you what's happening in real time.
The agent only ever makes outbound HTTPS calls — no inbound ports to expose, no webhooks to configure, no public agent endpoint.
What you get over a hand-rolled deploy script
- Atomic releases. New releases land in
releases/{TIMESTAMP}/next to the live one. The swap is a singleln -sfn. Customers never see a half-built site. - Conditional maintenance mode.
bin/magento setup:db:statusruns first. No migrations → no503. Migrations present → mode flips for the upgrade only, not the whole build. - Automatic rollback. After the swap, the agent hits your health-check URL. Non-2xx → symlink reverts, cache flushes, maintenance disables. The site is back up before the on-call gets paged.
- Traffic hold (opt-in, v0.10.0). During a migration window, checkout/cart requests are parked in RAM and replayed against the new release; everyone else sees a live waiting page with a countdown — instead of the maintenance 503. Bounded (default 25s budget) and fail-open by construction. (traffic hold)
- Migration Intelligence (v0.10.0). Before
setup:upgraderuns, Orbit diffs your declarative schema, classifies each change against MySQL 8's online-DDL behaviour, sizes it with your real table row counts, and predicts how long the migration will block — in the deploy log, before the window opens. (migration intelligence) - Release safety steps (v0.11.0). Service preflight TCP-probes DB/Redis/RabbitMQ from the release's
env.phpbefore anything disruptive; an optionalmysqldumpruns before migration windows; configured URLs are warmed after the health check passes. (release safety) - Module-drift detection. Bumped a module's
setup_versionwithout adb_schema.xmlchange? Orbit still notices and runssetup:upgradeso registration state matches the deployed code. (drift detection) - Maintenance allowlist. Whitelist your office IP so you can validate the new release before flipping traffic back. (allowlist IPs)
- Centrally upgraded.
orbit-agent self-upgradepulls the latest stable build from GitHub. No SSH-and-sudo apt upgradeper host.
Where to start
| You want to... | Go to |
|---|---|
| Get an environment live in under 30 min | Quick start |
| Install the agent on a server you already own | Install the agent |
| Understand the deployment shape | Zero-downtime overview |
| Keep checkout alive through DB migrations | Traffic hold |
| Wire CI/CD against the GraphQL API | Personal Access Tokens |
| Migrate an existing single-directory install | orbit-agent init |
| Diagnose a stuck deploy | Troubleshooting |
Where Orbit isn't a fit (yet)
- Long, blocking migrations still need planning. Traffic hold makes short migration windows invisible to snippet-wired traffic, and Migration Intelligence tells you the duration in advance — but a genuinely multi-minute
COPY-class migration exceeds any honest hold budget and deserves a scheduled window (or an expand/contract restructure). Orbit tells you which case you're in before the window opens; it doesn't pretend the slow case away. - One host per deploy. A single deploy targets one host. Running several environments on one host is supported (
--name— see Multiple environments); what's not shipped is multi-host fan-out — one deploy updating N agents across N hosts in parallel (a horizontally-scaled app tier). That's on the roadmap. - Magento 2 only. Magento 1 is not a target. Other PHP stacks (Symfony, Laravel) might work with the agent but aren't tested.
Pricing
See byte8.io/products/orbit. One agent token works on one environment; multi-environment plans cover multiple hosts under one dashboard.