Ample vs Cloudflare Workers: which should host an app with a backend? | Ample

The short version

Cloudflare Workers is the better choice for JavaScript or TypeScript code that should run in 348 cities with no cold starts. Ample is the better choice for an ordinary server app (Django, Rails, Laravel, Express, FastAPI) with Postgres, MySQL, Redis or MongoDB, a disk and a hard spending cap, deployed by a coding agent.

WHO THIS IS FOR

Before you choose

Workers run code in V8 isolates on Cloudflare's network, with their own runtime APIs; containers run behind a Worker. Ample runs your app as a normal process in its own VM. The choice is mostly about whether your code is written for the Workers runtime.

Ample and Cloudflare Workers side by side

Ample Cloudflare Workers
Free plan $0 with no card. 2 apps running at once, 2 vCPU, 2 GB memory, 3 GB volumes, 1 GB bucket storage, 2 buckets. 100,000 requests a day with 10 ms of CPU per request; free allowances for KV, D1, Durable Objects and R2. Containers need the paid plan.
Paid plans Custom plans priced on volume (number of apps, limits, spending caps). No public list price; see pricing. Workers Paid from $5 a month, including 10M requests and 30M CPU-ms; containers billed per second on top.
Spending limit Free has a hard budget ($5 a month, $2 a day). At the cap, apps stop serving until the account is back under budget; nothing is deleted and nothing is billed. None. Budget alerts are informational only; per-Worker CPU limits guard against runaway bills.
How apps run Each app runs as a normal long-running process in its own microVM with its own kernel. V8 isolates; Containers run in Firecracker microVMs controlled from a Worker.
Long-running servers and workers Yes. Web services and background workers (--kind worker) run as ordinary processes. Workers have no wall-clock limit for HTTP but 128 MB memory; containers stop after an idle timeout; WebSockets through Durable Objects.
Languages Node, Python, Go, Ruby, PHP, Java, .NET, Elixir, Rust and static sites, detected from the repository. JavaScript, TypeScript, Python Workers and Rust; any language in a container.
Docker images No. Ample builds from source; Dockerfile build steps are not run. Containers from a Dockerfile (paid plan), behind a Worker.
Databases Managed Postgres, MySQL, Redis and MongoDB, each in its own microVM, created automatically when the code needs one. D1 (SQLite), Durable Objects and KV; Postgres and MySQL through PlanetScale billed by Cloudflare.
Object storage S3-compatible buckets, optionally published through Ample's CDN. R2, S3-compatible, with free egress.
Persistent disk Persistent volumes attached to the app. None; container disk is ephemeral.
Custom domains and TLS Custom domains with automatic TLS. Custom domains need the domain's DNS on Cloudflare.
Regions No region choice. Runs across Cloudflare's network (348 cities).
Scheduled jobs Scheduled jobs: a command or HTTP request on a cron schedule (any time zone) or interval, with retries and run history (ample job create). Cron Triggers.
Agent access CLI, remote MCP server (OAuth), A2A endpoint and agent skills. Deploys are synchronous and return JSON with an exit code: 0 live, 1 failed, 2 needs input. Remote MCP servers covering the whole Cloudflare API, a Claude Code plugin and agent skills.
Agent signup without a person Yes. ample auth signup creates an account with no browser, card or CAPTCHA; a person claims it by email within 48 hours. Partly. wrangler deploy --temporary deploys a Worker for 60 minutes with no account, then a person claims it; containers and R2 are not included.

Competitor facts come from that company's own pricing pages and documentation, checked on the date shown in the sources. Plans change; follow the source links for current numbers.

Which one fits

Choose Ample when

Choose Cloudflare Workers when

Move a Worker to Ample

  1. Wrap the fetch handler in a server
    Run the same code in a Node server (Hono and similar frameworks have Node adapters).

  2. Replace bindings
    D1 becomes Postgres or SQLite on a volume, KV becomes Redis or a table, Durable Objects become a database plus in-process state; R2 can stay, accessed with its S3 API.

  3. Plan and deploy
    Cron Triggers become Ample jobs declared under [jobs.<name>] in ample.toml.

    ample plan --write && ample up
    
  4. Point your domain
    Add the domain to the app, update DNS to the target Ample prints, and keep the old app running until the new one answers on the domain.

    ample domain add <app-name> www.example.com
    

Frequently asked questions

Can an agent deploy to Cloudflare without an account?

Yes, for 60 minutes: wrangler deploy --temporary creates a temporary account and returns a claim link. Ample's ample auth signup creates a real Free account an agent can keep using for 48 hours before a person claims it.

Does Cloudflare have a spending cap?

No. Its budget alerts do not pause usage; per-Worker CPU limits are the protection it offers. Ample's Free plan stops at a hard budget.

Where these facts come from