Runtime & limits

Your app runs around the clock on dedicated compute. No cold starts, no request timeouts.

Apps run as long-lived processes, not serverless functions. Your process can run indefinitely, hold connections open, and do background work. There are no cold starts and no request timeouts.

Always on

On every plan, your app runs 24/7. It doesn't sleep between requests, and it restarts itself if it crashes. This is true on the free plan too.

App size: CPU and memory

You buy compute and split it across as many apps as you want. Each app gets a size you choose, and CPU rides with memory, so there's one knob, not two. Every account starts with a free 256 MB of compute. Buy more for $5 a month per 512 MB and the choices look like this:

App sizeCPUGood for
256 MB (free)0.25 vCPUA test or preview app. Start here.
512 MB0.5 vCPUA Python cron job or a small script.
1 GB1 vCPUA Node API with light traffic.
2 GB2 vCPUA small Go service.
4 GB4 vCPUA heavier app, or more traffic.

See pricing for the full breakdown. There's no limit on the number of apps, only on how much compute you've bought, so you can run many small apps or a few large ones from the same pool. If an app is bumping against its memory or CPU, the dashboard shows it live (see Logs & monitoring) and you can resize it in one click from its Size tab.

Network access

Every app has full outbound internet on every plan: LLM APIs, third-party services, package registries, anything reachable over HTTPS. Apps are isolated from each other and can't reach other tenants' apps. That isolation is enforced at the network layer, not left to your config.

Variables Dockhold injects

These are set for you in every app. Read them; don't define them.

PORT          # the port your app must listen on, on 0.0.0.0
DATABASE_URL  # set when the managed database add-on is on

On top of those, you get any plain variables you set in the dashboard and any secrets you bound from the Vault. See Environment variables & secrets.