features

What ox does for you.

Everything ox takes care of on a server you own, so you can keep writing the app.

A drawing of a keyboard with a big git push key, wired to your VPS: push once, live on your own server.

Push to deploy, no downtime.

Every push to your default branch goes live. Traffic moves only after the health check passes.

A drawing of a dial on a navy base, turned back from the newest release to the one before.

Undo a bad deploy.

ox keeps your last 3 releases. Roll back to one and traffic moves once it passes its health check, with no rebuild.

A drawing of two trays, staging and production, each with its own database. Promote moves the code across, not the data.

Try it on staging first.

Staging has its own database and address. When it looks right, promote the code to production.

A drawing of a clock at 03:00 beside a database and a server: daily backups, kept on your own server.

Daily backups on your server.

ox backs up your databases and uploaded files every day, on your server. Add an S3 bucket so a copy survives even if the server doesn't.

A drawing of a lock, a field holding shop.example.com and an add button: point your domain and Caddy adds HTTPS.

Add a domain, get HTTPS.

Point one A record at your server. The HTTPS certificate is set up and renewed for you.

A drawing of your VPS with four navy keys on top, for HTTPS, a database, settings and a clock: HTTPS, Postgres and cron on your VPS.

Databases, set up for you.

Postgres, MySQL and Redis installed on your server. Your app gets DATABASE_URL and REDIS_URL.

A drawing of your server and an ox box joined by a cable. The agent on your server dials out; ox can't dial in.

No open port for ox.

The agent calls out to ox. ox holds no SSH key to your server.

A drawing of a walled tray holding your app and a Postgres drum. Postgres stays off the internet.

Databases stay off the internet.

Postgres, MySQL and Redis listen only inside your server, on 127.0.0.1, and each needs its own password.

A drawing of a long tray split into three rooms, shop, blog and api, each with its own user. Each app runs as its own Linux user.

One Linux user per app.

Apps never run as root or read each other's files.

A drawing of a block tower of Caddy, your app and Postgres, with the ox block pulled out. The tower stays up.

Leave whenever you like.

Delete your account and ox removes its agent. Your apps keep running on your own domains as plain systemd services.

also in the box

The everyday parts. Logs, alerts, cron and more.

  • Any stack, detected

    Node, Python, Go, Rust, PHP, Ruby, Java, .NET, Elixir or static.

  • A CLI your AI agent can use

    Every command can answer in JSON, so Claude Code or Cursor can deploy and read logs.

  • Workers and cron

    Celery, BullMQ and scheduled jobs run beside your app, each as its own service.

  • Live logs

    Watch them in the browser, or run ox logs.

  • Alerts

    An email when a deploy fails, the app crashes or the site goes down.

  • Data explorer

    See your tables in the browser, read-only by default.

  • Variables with undo

    Paste a .env and see the diff. Any of the last 20 versions comes back.

  • PRs tested like a user

    Turn it on and an AI tester uses each preview in a browser and writes checks.