Skip to main content

Limits and rough edges

  • 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.