You push.
We do the rest.
Point Omniplane at a Dockerfile or an image. It builds, deploys, hands you a URL, puts idle services to sleep and bills by the second. You go back to writing code, which was the only part you liked anyway.
Early accessPre-launch. Be gentle.
An example deploy in four steps. Push: git push to main. Build: the Dockerfile builds into an image. Deploy: a new revision passes its checks and takes over traffic from the previous one. Live: the app answers at its URL, and the first request wakes a sleeping api service, which reads from a private PostgreSQL database.
Most platforms are cheap right up until you succeed.
Free credits and a sleek dashboard while you’re small. Then a 10x compute markup, a surprise egress invoice and a walled garden you can’t leave without a rewrite. The industry calls it graduating. We call it a tax, and we don’t charge it.
Months 1 to 6
“Look at this slick git push UI!”
$0 in free credits
Months 7 to 12
“Wait, why is our bill $4,200?”
$4,200 a month(a cost Omniplane takes away)Month 13 and on
“Hire a DevOps person for $180k a year.”
$180,000 a year(a cost Omniplane takes away)Then, Omniplane
You move the work, not the platform.
You choose where everything runs.
Production, databases, previews and builds each get a place: our cloud, billed by the second, or your own servers at $5 a month each. Start on ours, move what gets expensive, keep what’s convenient. The dashboard never changes: same deploys, same logs, same settings. Only where things run does.
Early accessYour servers dial out to us. No open ports.
Everything on our cloud. No servers to think about, billed by the second.
Where you worknever changes
- Deploys
- Logs
- Variables
- Previews
- Productionweb and api, always on
- Postgres2 GB, 20 GB volume
- Previews3 pull requests, asleep when idle
- Builds40 a month, 4 minutes each
Everything after git push is now our problem.
You were going to get to all of this eventually. Right after the next feature. And the one after that. We just went ahead and did it.
- Writing Kubernetes YAML
- Provisioning a server
- Building images by hand
- Keeping a staging box alive
- Cleaning up old preview environments
- Wiring a private network for Postgres
- Paying for containers that do nothing
- Rounding up to the hour
- Rolling out a revision without dropping traffic
- Remembering which branch is on which box
- Mounting a volume so the data survives
- Reading a 900 line Helm chart
A preview for every branch. Even that one.
Push a branch and it gets its own environment with its own URL. Delete the branch and the environment leaves with it. No tickets, no cleanup Fridays, no forgotten staging box quietly billing you since spring.
- mainproductionweb-3f9a.omniplane.example
- feat-checkoutpreviewpr-7c21.web-3f9a…
- fix-final-FINAL-2previewpr-0b8e.web-3f9a…
- tmp-do-not-mergesleepingpr-51d4.web-3f9a…
- old-experimentdeleted with branchDeleted: pr-9a02.web-3f9a…
Its own URL
Every branch you push gets an environment and an address nobody else is using.
Leaves with the branch
Delete the branch and its environment goes too. Nothing to remember.
Your branch names stay private
They never end up in a URL. We've seen your branch names.
Private Postgres. Like, actually private.
Each database lives inside one environment. Your other projects can't reach it. They don't even know it exists. Persistent volumes mean your data survives the restart you swore you wouldn't do on a Friday.
One database, one environment
Production data stays in production. Previews get their own.
Denied by default
Traffic between projects and environments is blocked on IPv4 and IPv6. Both, not just the one you remembered.
Volumes that stay put
Your data lives on a persistent volume, not in a container that forgets.
Idle services go to sleep. Like you should.
No traffic, no running containers. The next request wakes the service and gets its answer. Your app stops burning seconds staring at the ceiling.
Scales to zero
Nobody calling? Nothing running. Nothing on the meter.
Wakes on request
The next request starts it back up and still gets its answer.
Honesty corner
The first request after a nap takes a moment longer. Nobody wakes up instantly. Not even software.
Calculate how badly you’re getting fleeced.
Dial in what your app actually uses. The rates are illustrative, the arithmetic is real, and the answer is usually rude.
Omniplane here means 1 rented bare-metal server with 64 GB each and 20 TB of traffic included, connected as your own machine.
- Managed PaaS
$1,420 - Omniplane, your own server$110
You overpay every month
$1,310
That's $1,310 a month for the privilege of not learning Linux.
Switch and keep your moneyThe math, so you can check it: a managed PaaS at $30 a month plus $20 per GB of memory and $0.15 per GB of bandwidth; a big cloud at $12 per GB of memory and $0.09 per GB; Omniplane as $105 of server rent plus $5 per target for each 64 GB server, with traffic past the included 20 TB at $1.20 per TB. Round numbers, not quotes. Every way to pay is on the pricing page.
The fine print. We made it big.
- Is it Kubernetes under the hood?
- Yes. Don't tell anyone. You won't have to write a single manifest.
- What can I deploy?
- HTTP apps, from a prebuilt image or a GitHub repo with a Dockerfile. GitHub only for now. Background workers and cron jobs aren’t on board yet.
- Can I run it on my own server?
- Yes. Any Linux server you rent or own, for $5 a month each. One command, no open ports, same dashboard. Windows workstations are on the roadmap.
- Which regions?
- One. It's a good one.
- Will it page me at 3am?
- Idle services sleep through the night. Ideally so do you. We can't promise your code behaves, only that it misbehaves in its own environment.
- How much does it cost?
- Three ways: pay as you go from $9 per GB of memory a month while awake, Dedicated at 20% off when you reserve for a month, or $5 a month per server you bring. Early access, billing isn't live yet. The details are on the pricing page.