Five apps on the free plan. Forks count, and so do sleeping and crashed apps: anything holding a URL and a data directory. Redeploying an app you already have is never blocked; only the sixth new one is. destroy frees a slot immediately, your current count is on the console's account screen, and Upgrade on that screen lifts the cap.
A paused account keeps its apps but serves none of them. When an account's payment stops, every app's URL answers 402 and every tool but list_apps and destroy is refused. Nothing is deleted: the apps come back as they were once the account resubscribes, or once it continues on the free plan with five apps or fewer — both from the console's account screen.
256 MB of memory and half a CPU per app; 128 processes.
50 MB per bundle from the MCP server, 64 MB at the API.
Bun, or any binary you compiled for linux/x86-64 yourself. Nothing is built here, so language runtimes beyond Bun are out of scope.
HTTP/1.1 and gRPC (over h2c) reach your app. No WebSockets, and no plain HTTP/2 for anything that is not gRPC: an app that needs either will not work.
screenshot captures the root path only.
An app's URL is its only access control. The suffix is 40 bits and unguessable, but there is no password and no login: anyone with the link has the app. Don't deploy anything sensitive, and don't describe a deployed app as private.
An API key is a bearer token with no scopes and no expiry. Whoever holds it can deploy to, read and destroy every app in the account, so mint one per agent and a revoke costs you one agent. Signing in to the console mints a separate 30-day session, which is why it never appears in that list.
Apps belong to one account. There is no sharing or collaborator model; sharing an app means sharing its URL.
destroy deletes the app, its container, its data and its URL, and is not reversible.