Skip to content

Pods

A pod is a small Linux machine of your own, running on MicroApps. It has its own filesystem, its own processes, its own users, and its own network identity. You get shell access, you install what you want, and you run what you want. If you've rented a cheap Linux box before, a pod fills the same slot - just faster to create and cheaper to keep.

Workloads

You don't pick a "type" when you create a pod. You pick a Workload, and that decides everything else:

WorkloadVersionsPod kindLogin userGood for
Ubuntu22.04, 24.04instanceubuntuAnything. Web apps, scripts, bots, dev boxes. Gets the browser Shell and SSH.
MySQL5.7, 8.0databaserootA managed MySQL database. Gets reset password.

Under the hood these become instance and database pods respectively - you'll see that as the type field in the API. The practical differences: instance pods have the in-browser Shell and let you add SSH keys; database pods have a resettable password and hand you a generated one at creation.

Compute

Every size is a single fast vCPU. You're choosing how much RAM you want.

ComputevCPURAM
Tiny10.5 GB
Small11 GB
Medium12 GB

Storage

StorageDisk
Tiny5 GB
Small10 GB
Medium20 GB
Large40 GB

What does it cost?

Billing is hourly and prepaid from your account credit - you're charged for the compute size and the storage size for as long as the pod exists (even while it's Off, storage keeps counting). For the current per-size rates, see the pricing page. More on the model in Billing.

You can change compute or storage later with a Resize. Storage only grows.

Regions

A pod runs in one Region, which you choose at creation (the API field is serverId). The list of available Regions comes from GET /open/config-options. A pod's private network has to live in the same Region as the pod.

Statuses

StatusMeaning
RunningUp and serving traffic.
StoppedStopped on purpose (the console shows this as "Off"). Storage still counts; compute doesn't run.
InitializingBeing created.
ResizingA compute, storage, or network change is being applied (the pod briefly restarts).
RestoringA snapshot or backup is being restored onto it.
CloningBeing copied into a new pod.
DeletingBeing torn down.
FailedAn operation didn't complete (a failed resize shows as ResizeFailed). Retry, or reach out to support.

The middle rows are transient - the pod passes through them and settles back on Running or Stopped. While a pod is in one of them, a second operation on it returns 409.

Connecting

A pod can be reached three ways:

  • Public host + external port. From the internet, the pod answers at its public host (the domainName field). Pods in the same Region share that host - the assigned external port is the part that's yours. SSH listens on 22 internally but you connect on the external port (say 3001); MySQL is 3306 internally on its own external port. Both are shown on the pod's Connection Strings tab.
  • Private host + internal port. Pods that share a private network reach each other by private hostname on the real internal port - no mapping. From one pod, ssh ubuntu@other-pod and mysql -h db-pod -P 3306 just work.
  • Custom domain. Map a domain to a pod and a port, and our proxy terminates HTTPS on the public side and forwards to your app. This is how you put a web app on 80/443.

What you can do inside

It's a real Linux system. Install packages, run services, write systemd units, mount your own volumes, cron whatever you like. We don't police what runs inside your pod.

What you can't do

  • Load custom kernel modules or swap the kernel.
  • Hog shared host resources to the point of hurting your neighbours.
  • Anything illegal or against the terms of service.

See also

Built for the long tail.