Free
$0forever
Your first project, with every feature. No card needed.
- 1 project
- Its staging copy and branch previews don't count
ox is a deployment platform: you connect a GitHub repo and ox deploys it to your own Ubuntu server with systemd and Caddy, no Docker. Your app gets a web address with HTTPS, a database if it needs one and daily backups, and every push goes live.
In beta, and our own apps run on it. Free for your first project.
Works with the code you already have
Hosting sites bill by seat, by service or by usage, so a few small projects can add up. One cheap server runs them all. The hard part was always the setup, and ox does the setup.
3 small apps with ox
Each month$15–34
Rough prices for small apps. Yours will be different. With one app, ox is free.
ox handles builds, HTTPS, databases, restarts and daily backups for every project.
See all featuresNew version live in 41 seconds
Visitors served1,204
Visitors dropped0
Database backupsOn your server, and in your S3 bucket if you add one
my-appBranches
Own databaseOwn web addressDeleted on merge
my-appVersions
Back on version 13 in 4 seconds
Get this app ready for ox.
Reading package.json, prisma/schema.prisma, .env.example
# ox.toml
domains = ["myapp.com"]
[services]
postgres = {}
[cron]
emails = { schedule = "@daily", run = "npm run emails" }
Done. Before you deploy, add STRIPE_KEY in ox.
After that, you just push.
Your first sign-in creates your account. There's no password to remember.
Rent a fresh Ubuntu server, from about $5 a month. The command ox gives you locks it down and sets it up, so you won't need to log in to it again.
curl -fsSL https://deploywithox.com/install/… \
| sudo bash
ox reads your code and shows what it will run before anything starts. From then on, every push goes live.
A simple app needs no setup. A bigger one, with background workers,
scheduled jobs, saved files or a build ox can't guess, needs a short
ox.toml. Copy our guide into your coding AI. It reads
your code and writes that file. ox checks it before every
deploy, so a mistake stops the update before your live site is touched.
Works with Claude Code, Cursor, Codex, Copilot, Windsurf and any AI that can read your files.
# a Django app with a worker and a nightly job
domains = ["myapp.com"]
[app]
health = "/healthz"
[workers]
worker = "celery -A app worker"
[cron]
digest = { schedule = "@daily", run = "python manage.py digest" }
[services]
postgres = {}
redis = {}
# once: approve it in your browser
$ ox login
# deploy and wait for the result
$ ox deploy myapp --wait --json
Things you'd normally wire up yourself, or pay extra for.
You get the ease of a hosting site like Heroku, Vercel or Render and pay for a plain server, plus $10 a month for ox Pro once you run more than one project.
| Question | A server on your own | ox on your server |
|---|---|---|
| 3 small apps, each month | $5–24 | $15–34 |
| Time to put an app online | A weekend, if it goes well | Minutes |
| Site stays up while it updates | Only if you build it | Yes |
| Daily database backups | You write the script | Included |
| Test copy for each branch | Hard to set up | Included |
| You own the server and data | Yes | Yes |
We rent brand-new servers, deploy an app in every supported stack, and put apps through updates, failed builds, backups and reboots. Here is our latest full run.
We moved our own apps, databases and all, onto ox using only its dashboard. Nobody had to log in to the server.
Saurav Sharma, builds ox. Lazy Planner runs on ox.36 of 36stacks went live
Run 20261014-084728-1506, commit 09daaef1
ox deployed each app from a pinned commit on a fresh server, then redeployed it and rebooted the server. A separate test agent, one that did not write the config, then used the app.
85 apps, each with the ox.toml that passed
Every feature is in both plans. The only difference is how many projects you run. Your server is billed by your cloud company, as it would be anyway.
$0forever
Your first project, with every feature. No card needed.
$10a month, or $80 a year
Every project you have, on every server you connect.
Upgrade from Settings when you need a second project.
None of these are ready yet.
ox runs JavaScript and TypeScript (Node.js, Bun, Deno), Python (Django, FastAPI, Flask), Go, Rust, PHP (Laravel, Symfony), Ruby on Rails, Java (Spring Boot, Quarkus), .NET, Elixir (Phoenix) and static sites. It reads your project files to pick the versions and shows you the plan before anything runs. The stack guides show each one deployed on a real server.
Free for one project, with every feature and no card. ox Pro is $10 a month, or $80 a year (4 months free), for every project, on every server you connect. A project's staging copy and previews don't count. You pay your cloud company for the server, as you would anyway, and there are no seats, build minutes or bandwidth fees. ox emails you 4 days before each renewal. Cancel any time and keep ox Pro to the end of the month or year you paid for. If you leave ox Pro, your apps keep running, and ox keeps deploying, backing up and watching only your free project.
A fresh server running the latest Ubuntu LTS that you can reach as root, rented from a company like Hetzner, DigitalOcean, Vultr or Linode. ox accepts any size from 1 GB of memory and 10 GB of free disk, and if an app needs more memory than the server has, ox tells you that is why it stopped. Your server runs only the small ox agent, Caddy and what your apps ask for, as how ox self-hosts your apps shows.
No. You paste one command on your server once, and everything after that happens in the dashboard. ox doesn't use Docker, and you won't need to log in to the server. If you can push code to GitHub, you can use ox.
Here are the main pieces; sudo ox doctor --inventory on the server lists everything ox could own there.
/usr/local/bin/ox, run by ox-agent.service, with its settings in /etc/ox./usr/local/bin/ox-caddy, for HTTPS. Its config is one JSON file, /etc/caddy/ox.json, not a Caddyfile, and it reads the address each app listens on from a one-line file in /etc/ox/upstreams./etc/systemd/system whose names start with ox-<app>. Its cron jobs are systemd timers./srv/ox. Backups and run logs in /var/lib/ox, which only root can open./var/lib/ox, which systemd hands to the app when it starts. ox keeps no copy.ox_user account with sudo for you to log in as, SSH with keys only, the ufw firewall, fail2ban, and Ubuntu's automatic security updates./etc/ox/isolation.nft that let only Caddy and the app's own project reach its ports, loaded at boot by ox-isolation.service.Of ox's own pieces, only the agent and Caddy run all the time; mise, git and pg_dump run only while a job needs them.
Ubuntu installs security updates every day, and ox checks daily that they ran. A kernel fix needs a restart: the server's page says when one is needed, and you choose when to restart, because ox never restarts a server on its own. Security lists every setting.
ox locks it down when you add it: SSH with keys only, where you log in as ox_user with your same keys instead of root, a firewall where ox opens only SSH, 80 and 443, fail2ban, and daily security updates. The ox agent dials out to ox, so it needs no open port, ox holds no SSH key, and the agent refuses any command ox did not sign. Each app runs as its own user in a sandbox. Security lists every setting and how to check it.
Your live app keeps running. ox checks everything it can before it changes anything, and if a step still fails, it tells you which step, why, and how to fix it. You can also go back to an earlier release in seconds, with no rebuild, and your database stays as it is. If ox itself goes down, your apps, workers and cron jobs keep running on your server. Deploys, backups and alerts stop while ox is down, as When ox is down explains.
Your apps are plain systemd services behind Caddy, with their variables in env files, so they keep running without ox. If you only cancel ox Pro, every app stays up, and ox keeps deploying, backing up and watching your free project.
When you delete your account, the ox agent removes itself from each server, or, for a server that is offline or runs an old agent, the page gives you the one command to run there. Your apps, their data and their config stay as they are, and the agent leaves a note at /etc/ox/LEFT.txt that says where each app's code, variables, backups and passwords are. If ox itself shuts down, sudo ox leave on the server does the same with no help from ox's servers.
After that, the units, /etc/caddy/ox.json and the timers are plain files you can edit by hand. While ox manages the server, it rewrites them on each deploy, so change them through ox.toml.
Deploys, alerts and the daily backups stop with ox. The free test address stops too, because its name lives in ox's DNS: give each app your own domain before you leave. The backups run from ox's side, not from a cron on your server, so set up your own; the ones ox already made stay on the server, and PostgreSQL's are standard pg_dump files. Nothing updates ox's build of Caddy after you leave, while Ubuntu's security updates keep installing. How to leave lists what to copy.
ox keeps only what it needs to run your account. Your app and its data stay on your server.
ox keeps:
ox login, with the IP address that asked.Stays on your server:
The privacy policy has every detail, and the security docs say it in short.
Only to do what you ask. Logs you open, rows you browse in Explore, and backups you download pass through ox to your screen. Your variables pass through ox when you view or save them, and when ox copies them to a new staging copy or preview. A page that only lists them asks your server for the names, never the values, and your server keeps its own record of each time it hands them over. ox does not save them.
Your server also sends ox its health, its usage numbers and the output of each run while it runs. Your code goes from GitHub straight to your server, with a short-lived, read-only token for that one repo (a repo with private submodules also gets one for just those repos). Alert emails go out through Resend. You choose which: a failed run or backup, a deploy held by its tests, a crashing process, a site or server that stops answering, high memory or CPU, a nearly full disk, a server that drifts from its security setup, or a finished deploy. Each says what happened, and for a failed run the start of its error.
ox itself adds no analytics, ads or tracking scripts. Cloudflare, which sits in front of the site, adds a small security check script, as the privacy policy explains. ox never reads your app's data for its own use.
ox Cloud, at deploywithox.com, is a deployment platform: you connect a GitHub repo and ox deploys it to your own Ubuntu server with systemd and Caddy, no Docker. It is not Open-Xchange's OX App Suite or OX Security, which are unrelated products.
ox looks after the server
while you build the app.
Free for your first project. $10 a month for all of them.