Competitive positioning: Fly.io versus the alternatives
This page compares Fly.io with the platforms a customer is most likely to name: Render, Railway, Heroku, Vercel, Cloudflare, AWS, Google Cloud Run, DigitalOcean App Platform, and the agent-sandbox vendors E2B, Modal, Daytona, Vercel Sandbox and Cloudflare Sandbox. Competitor facts come only from that vendor’s own public page, fetched 2026-11-04 and linked in the same sentence. Numbers that could not be read from a page are marked
[verify]. Nothing here is a claim about anyone’s reliability.
This page is drawn from https://fly.io/docs/about/pricing/, https://fly.io/pricing, https://fly.io/sprites, https://fly.io/docs/sprites/concepts/lifecycle/, https://fly.io/docs/reference/architecture/, https://fly.io/blog/kurt-scott-money-sprites/ and the competitor pages linked below. This guide is unofficial.
The Fly.io angle in one breath
Real VMs that start fast, stop cheaply, and run near users; plus Sprites, persistent Linux computers for agents.
- Firecracker microVMs, not containers on a shared kernel. App code runs in Firecracker microVMs on dedicated servers (https://fly.io/docs/reference/architecture/). Fly’s CEO says the hypervisor engine is the same as Lambda’s (https://fly.io/blog/fuckin-robots/).
- Billed by the second, and stopped Machines cost almost nothing. Started Machines are billed by the second, a stopped Machine bills only its rootfs at $0.15/GB/month, and the smallest always-on Machine (shared-cpu-1x, 256MB) is $2.19 per 30 days (https://fly.io/docs/about/pricing/). There is no free tier for new organizations, only a $1 trial that lasts 7 days or until used up (https://fly.io/docs/about/pricing/).
- Scale to zero with Fly Proxy. With
auto_stop_machinesandauto_start_machines, Fly Proxy stops idle Machines and starts one when a request arrives. A cold start takes about 2 seconds or more for common apps, and suspend resumes in a few hundred milliseconds (https://fly.io/docs/launch/autostop-autostart/). - Many regions, one Anycast address. Every app gets a shared IPv4 and Anycast IPv6 at no charge (https://fly.io/docs/about/pricing/), across 17 region codes (https://fly.io/docs/reference/regions/).
- Sprites for agents. “Sprites are persistent, hardware-isolated Linux VMs on Fly.io for AI agents, dev environments and untrusted code, billed by the second and free when idle” (https://fly.io/docs/sprites/).
Be honest about the trade. Fly gives you rawer building blocks than a Heroku-style PaaS: Machines are provisioned up front and started or stopped, not created per request, and autoscaling is metrics-driven automation you own (https://fly.io/docs/reference/aws-to-fly-guide/). Lead with speed, regions and cost shape, not with the line that it is just like Heroku.
Price reference: what each vendor publishes
Entry-level compute only, copied from each vendor’s own page. Sizes differ, so this is a map of billing models, not a ranking.
| Vendor and product | Billing model as published | Entry figure | Source |
|---|---|---|---|
| Fly.io Machines | Per second while running, no platform fee | shared-cpu-1x 256MB $2.19/month; performance-1x 2GB $33.00/month | https://fly.io/pricing |
| Render web service | Workspace fee plus fixed monthly instance | Hobby $0 + compute; Pro $25/month + compute; instance with 512 MB RAM and 0.5 CPU at $7/month | https://render.com/pricing |
| Railway | Usage by the second, minimum plan usage | Hobby $5 minimum usage; Pro $20 minimum usage; memory $0.00000386 per GB/sec, CPU $0.00000772 per vCPU/sec | https://railway.com/pricing |
| Heroku Cedar dynos | Fixed monthly per dyno | Eco $5 (0.5 GB); Basic $7; Standard-1X $25; Performance-M $250 | https://www.heroku.com/pricing |
| Vercel Functions (Fluid) | Active CPU plus provisioned memory plus invocations | Pro $20/month; Active CPU from $0.128 per hour; Provisioned Memory from $0.0106 per GB-hr | https://vercel.com/pricing |
| Cloudflare Workers | Requests plus CPU time | Paid plan $5/month minimum; 10 million requests included then $0.30 per additional million | https://developers.cloudflare.com/workers/platform/pricing/ |
| AWS App Runner | Provisioned memory when idle, active vCPU and memory when serving | $0.007 per GB-hour provisioned; $0.064 per vCPU-hour active (US East N. Virginia, Ohio, US West Oregon, Europe Ireland) | https://aws.amazon.com/apprunner/pricing/ |
| AWS Fargate, AWS Lambda | Per vCPU and per GB, or per request and duration | Rates are rendered by script on the page and could not be read: [verify] | https://aws.amazon.com/fargate/pricing/, https://aws.amazon.com/lambda/pricing/ |
| Google Cloud Run | Per used resource, rounded to 100 ms | Free tier 240,000 vCPU-seconds and 450,000 GiB-seconds a month (instance-based); unit rates [verify] | https://cloud.google.com/run/pricing |
| DigitalOcean App Platform | Per container, fixed monthly | Shared 1 vCPU 512 MiB $5.00/month; shared 1 vCPU 1 GiB $12.00/month | https://docs.digitalocean.com/products/app-platform/details/pricing/ |
Agent-sandbox rates as published
Each vendor meters differently (active CPU, allocated CPU, provisioned memory), so treat this as a reading aid, not a bake-off. “Derived” means arithmetic on the published rate.
| Vendor | CPU | Memory | Source |
|---|---|---|---|
| Fly.io Sprites | $0.0385 per CPU-hour, “Cumulative CPU usage measured by cpu.stat” | $0.021875 per GB-hour of actual memory use | https://fly.io/pricing |
| Vercel Sandbox | $0.128 per hour Active CPU | $0.0212 per GB-hour provisioned | https://vercel.com/docs/vercel-sandbox/pricing |
| Render Sandboxes (beta) | $0.12 per active CPU hour | $0.038/hour for 2 GB, $0.076/hour for 4 GB | https://render.com/pricing |
| Railway Sandboxes | $0.00001929 per vCPU/sec (derived $0.0694 per hour) | $0.00001929 per GB/sec | https://railway.com/pricing |
| E2B | $0.000014/s per vCPU (derived $0.0504 per hour) | $0.0000045/s per GiB (derived $0.0162 per hour) | https://e2b.dev/pricing |
| Daytona | $0.0504 per vCPU-hour | $0.0162 per GiB-hour | https://www.daytona.io/pricing |
| Modal Sandboxes | $0.00003942 per physical core/sec (2 vCPU equivalent; derived $0.1419 per hour) | $0.00000667 per GiB/sec | https://modal.com/pricing |
| Cloudflare Containers | $0.000020 per additional vCPU-second (derived $0.072 per hour) | $0.0000025 per additional GiB-second | https://developers.cloudflare.com/containers/pricing/ |
Render
What it is. A PaaS with web services, workers, cron, Postgres and persistent disks. Plans are workspace tiers plus per-instance compute: Hobby $0, Pro $25/month, Scale $499/month, all ”+ compute” (https://render.com/pricing). Free web services spin down after 15 minutes without inbound traffic and take about one minute to spin back up (https://docs.render.com/free). Render Sandboxes are in beta: “Isolated microVMs for agents, apps, and untrusted code”, with “Sandboxes can run up to 30 days on Pro and above” and 40 GB of disk included per sandbox (https://render.com/pricing).
Where Fly wins
- Regions and Anycast. One app can run Machines in many regions behind one Anycast address (https://fly.io/docs/reference/regions/, https://fly.io/docs/about/pricing/).
fly-replayroutes requests between regions, Machines or apps (https://fly.io/docs/networking/dynamic-request-routing/). - Idle cost. A stopped Machine bills only rootfs at $0.15/GB/month (https://fly.io/docs/about/pricing/). Render free web services lose local files when they spin down (https://docs.render.com/free).
Where Render wins
- Git-connected PaaS feel. Render lists “Full-stack PR previews” and “Zero-downtime deploys” as product features (https://render.com/pricing). On Fly, review apps are a GitHub Actions blueprint you set up (https://fly.io/docs/blueprints/review-apps-guide/).
- A free tier. Render has free web services, Postgres and Key Value with limits (https://docs.render.com/free). Fly has no free tier for new organizations (https://fly.io/docs/about/pricing/).
- Managed Postgres ladder. Render lists Postgres plans from $6/month and a free instance (https://render.com/pricing). Fly Managed Postgres starts at $38/month (Basic) (https://fly.io/pricing).
Ask the customer: Do users sit in more than one geography? Do you need a free hobby tier, or a production tier with previews on every PR?
Railway
What it is. Usage-metered hosting: “Railway only charges you for what your app uses”, by the second, with Hobby at $5 minimum usage and Pro at $20 minimum usage, each including that amount as credits (https://railway.com/pricing). It lists Sandboxes as “Isolated Linux VMs for agents, builds, and untrusted code” (https://railway.com/pricing).
Where Fly wins
- Regions are a first-class dial. Fly lists 17 region codes (https://fly.io/docs/reference/regions/). Railway’s plan table lists global regions as “Trial only, unavailable on the free plan” (https://railway.com/pricing).
Where Railway wins
- Elastic metering without choosing a size. “Say goodbye to overprovisioning and optimizing box sizes” (https://railway.com/pricing). On Fly you pick a preset (https://fly.io/pricing).
Ask the customer: Is traffic spiky enough that per-second metering beats picking a Machine size? Do you need multiple regions?
Heroku
What it is. Dynos with fixed monthly prices: Eco $5, Basic $7, Standard-1X $25, Standard-2X $50, Performance-M $250 (https://www.heroku.com/pricing). Eco “Sleeps after 30 minutes of inactivity” (https://www.heroku.com/pricing). Eco requires a $5 flat monthly subscription covering a pool of 1000 hours shared by all Eco dynos (https://devcenter.heroku.com/articles/dyno-types).
Where Fly wins
- Machine sizes and regions. Presets run from shared-cpu-1x to performance-16x, with extra RAM at $6.00 per GB per month up to 128GB (https://fly.io/pricing).
Where Heroku wins
- Buildpack workflow and add-on ecosystem. Heroku markets an “ecosystem of add-ons, integrations, and buildpacks” (https://www.heroku.com/pricing).
Migration note. Fly publishes an Elixir-specific Heroku migration guide (https://fly.io/docs/elixir/getting-started/migrate-from-heroku/); the blog post on it is dated 2020-09-25 (https://fly.io/blog/migrating-heroku-database-apps-to-fly/).
Ask the customer: What does the Procfile look like? Which add-ons are in use, and do they have a Fly equivalent (Managed Postgres, Tigris, Upstash)?
Vercel
What it is. A frontend and functions platform. Hobby $0, Pro $20/month with $20 of included usage, Enterprise custom with a “99.99% SLA” (https://vercel.com/pricing). Functions bill Active CPU (from $0.128 per hour), provisioned memory (from $0.0106 per GB-hr) and invocations (from $0.60 per 1M) (https://vercel.com/pricing).
Where Fly wins
- Long-running and stateful servers. A Machine can run “a 36-hour batch job” (https://fly.io/blog/fuckin-robots/), with volumes for local NVMe storage (https://fly.io/docs/volumes/overview/).
- Any language, any port, private networking. Machines run Docker images as Firecracker microVMs (https://fly.io/docs/reference/architecture/); 6PN and Flycast give private service-to-service networking (https://fly.io/docs/networking/flycast/).
Where Vercel wins
- Frontend developer experience. Automatic CI/CD, a global CDN and a Web Application Firewall are on the Hobby plan list (https://vercel.com/pricing).
Ask the customer: Is this a static or Next.js frontend with a few API routes, or a backend with state, queues or WebSockets? Fly fits the second better; say so plainly.
Cloudflare: Workers, Containers, Durable Objects, Sandboxes
What it is.
- Workers. Free plan: 100,000 requests per day. Standard (Paid, $5 minimum): 10 million requests and 30 million CPU ms included, up to 5 minutes of CPU time per invocation (https://developers.cloudflare.com/workers/platform/pricing/). “There are no additional charges for data transfer (egress) or throughput (bandwidth)” (https://developers.cloudflare.com/workers/platform/pricing/).
- Containers. Billed per 10 ms while active. Instance types run from lite (1/16 vCPU, 256 MiB) to standard-4 (4 vCPU, 12 GiB, 20 GB disk). Requests reach a container through a Worker and a Durable Object, and you are billed for both (https://developers.cloudflare.com/containers/pricing/).
- Durable Objects. Paid plan: 1 million requests per month then $0.15 per million, and 400,000 GB-s per month then $12.50 per million GB-s of duration (https://developers.cloudflare.com/durable-objects/platform/pricing/).
- Sandboxes. “Each instance is a microVM with its own kernel and network, so no other workload shares it”, available on the Workers Paid plan (https://developers.cloudflare.com/sandbox/).
Where Fly wins
- Your existing app runs as is. Fly says it moved from a JavaScript edge runtime to containers because customers “just wanted their native code to work” (https://fly.io/blog/wrong-about-gpu/). Cloudflare Containers still sit behind a Worker and a Durable Object (https://developers.cloudflare.com/containers/pricing/).
- Persistent disk and long-lived processes without the Worker front door: volumes (https://fly.io/docs/volumes/overview/) and Machines that “stick around as long as you want” (https://fly.io/blog/fuckin-robots/).
Where Cloudflare wins
- Egress. Workers have no data transfer charge (https://developers.cloudflare.com/workers/platform/pricing/); Fly bills outbound data at $0.02/GB in North America and Europe (https://fly.io/docs/about/pricing/).
- A free tier. Workers Free exists (https://developers.cloudflare.com/workers/platform/pricing/); Fly has none for new organizations (https://fly.io/docs/about/pricing/).
Ask the customer: Is the code already written for the Workers runtime? Is a per-request, CPU-time model the right shape for it, or does it need a normal Linux process?
AWS: Fargate, Lambda, App Runner, Lightsail
What it is.
- Fargate. Fargate Spot runs interrupt-tolerant Amazon ECS tasks on spare capacity at up to a 70% discount off the regular Fargate price, per the page. Regular per-vCPU and per-GB rates could not be read from the page:
[verify](https://aws.amazon.com/fargate/pricing/). - Lambda. The page now lists three shapes: Event Functions (per request and duration), MicroVMs (per instance-second) and Web Functions (per request and active CPU time). Rates
[verify](https://aws.amazon.com/lambda/pricing/). - App Runner. $0.007 per GB-hour for provisioned memory and $0.064 per vCPU-hour plus $0.007 per GB-hour when active, in the four regions the page names (https://aws.amazon.com/apprunner/pricing/).
- Lightsail. Fixed bundles from $5/month for 0.5 GB, 2 vCPUs, 20 GB SSD and 1 TB transfer (https://aws.amazon.com/lightsail/pricing/).
Where Fly wins
- The trade, in Fly’s own words: “You get rawer access to your infra and better latency for your users, but you might trade some convenience” (https://fly.io/docs/reference/aws-to-fly-guide/).
Where AWS wins
- Breadth. Fly’s own blog lists S3, SQS, ECS, Lambda, EBS, ALBs, CloudWatch and more around AWS compute (https://fly.io/blog/carving-the-scheduler-out-of-our-orchestrator/).
- Native alerting and managed integrations. Fly’s docs say there is “no native alerting yet” and point to Prometheus, Alertmanager or Grafana (https://fly.io/docs/reference/aws-to-fly-guide/).
Ask the customer: How many AWS services does the app touch? If it is RDS, S3 and little else, Managed Postgres and Tigris are the Fly answers (https://fly.io/docs/reference/aws-to-fly-guide/).
Google Cloud Run
What it is. “Cloud Run charges you only for the resources you use, rounded up to the nearest 100 millisecond.” Free tier for instance-based services: first 240,000 vCPU-seconds and 450,000 GiB-seconds free per month; for request-based billing it also includes 2 million requests (https://cloud.google.com/run/pricing). Services “scale to zero when idle”, with minimum and maximum instance limits you can set (https://cloud.google.com/run/docs/about-instance-autoscaling). Per-unit rates are region-dependent and not readable from the fetched page: [verify].
Where Fly wins
- Volumes. Local NVMe volumes attach to Machines (https://fly.io/docs/volumes/overview/).
Where Cloud Run wins
- Configurable request concurrency per instance. Fly’s own blog notes “Google’s Cloud Run product supports configurable per-instance concurrency” (https://fly.io/blog/the-serverless-server/). Fly has
soft_limitandhard_limitconcurrency settings (https://fly.io/docs/blueprints/setting-concurrency-limits/). - A free tier and committed use discounts across GKE, Compute Engine and Cloud Run (https://cloud.google.com/run/pricing).
Ask the customer: Are you already inside Google Cloud IAM, VPC and Artifact Registry? That is the strongest reason to stay.
DigitalOcean App Platform
What it is. Container components with fixed monthly prices: shared 1 vCPU 512 MiB $5.00, shared 1 vCPU 1 GiB $12.00, dedicated 1 vCPU 512 MiB $29.00 (https://docs.digitalocean.com/products/app-platform/details/pricing/). “Apps are billed by the second, with a one-minute minimum” (https://docs.digitalocean.com/products/app-platform/details/pricing/). A free tier covers 3 static-site apps (https://www.digitalocean.com/pricing/app-platform).
Where Fly wins
- Idle and regions. Stopped Machines stop CPU and RAM billing (https://fly.io/docs/launch/autostop-autostart/), and apps span many regions (https://fly.io/docs/reference/regions/).
Where DigitalOcean wins
- Bundled bandwidth. The $5 shared container includes 50 GiB per month of transfer (https://docs.digitalocean.com/products/app-platform/details/pricing/).
Ask the customer: Is the workload one small app plus a database, where predictable monthly tiers matter more than region reach?
Agent sandboxes: Sprites versus E2B, Modal, Daytona, Vercel Sandbox, Cloudflare Sandbox
Fly’s position. Fly’s CEO argues that agents want computers rather than sandboxes, in a post that also introduces a new iteration of Sprites and a company focus on them (https://fly.io/blog/kurt-scott-money-sprites/). A Sprite has an ext4 disk, 8 vCPUs, 100 GB of storage, goes warm after about 30 seconds idle (resume in 100-500 ms with processes preserved) and cold later (wake in 1-2 s, processes fresh); open TCP connections do not survive either pause (https://fly.io/docs/sprites/concepts/lifecycle/). Sprites do not autoscale storage yet (https://fly.io/docs/sprites/concepts/lifecycle/).
| Vendor | Isolation and persistence as published | Limits as published | Source |
|---|---|---|---|
| Fly.io Sprites | Hardware-isolated microVM; disk persists, memory warm until cold | 8 vCPUs, 100 GB | https://fly.io/docs/sprites/concepts/lifecycle/ |
| E2B | Linux VM; pausing saves filesystem and memory, “kept indefinitely until you kill them” | Hobby: 1 hour sessions, 20 concurrent; Pro $150/month: 24 hours, 100 concurrent | https://e2b.dev/docs, https://e2b.dev/pricing |
| Modal | Two runtimes: gVisor, or a VM with its own Linux kernel | Default lifetime 5 minutes, up to 24 hours | https://modal.com/docs/guide/sandbox |
| Daytona | “Linux containers” by default, VM, GPU and Windows options | Defaults 1 vCPU, 1GiB, 3GiB disk (daytona-small) | https://www.daytona.io/docs/en/sandboxes.md |
| Vercel Sandbox | “isolated Linux microVMs” | Hobby 45 min sessions, Pro 24 hours; max 8 vCPU Pro, 32 Enterprise | https://vercel.com/docs/vercel-sandbox, https://vercel.com/docs/vercel-sandbox/pricing |
| Cloudflare Sandbox (Containers) | microVM with its own kernel and network | Default instance types up to 4 vCPU, 12 GiB | https://developers.cloudflare.com/sandbox/, https://developers.cloudflare.com/containers/pricing/ |
Where Fly wins
- Idle is nearly free and the disk is real. Compute stops billing when idle; cold storage is $0.000027 per GB-hour, about $0.02 per GB-month (https://fly.io/pricing).
- Credentials stay out of the box. Sprite Connectors let calls reach GitHub, OpenRouter, Slack or any HTTP API without the credential entering the Sprite (https://fly.io/sprites).
Where the others win
- E2B: pause keeps memory state too, and the pricing page lists SOC 2 and HIPAA (https://e2b.dev/docs, https://e2b.dev/pricing). Fly Sprites keep disk, not memory, across a cold wake (https://fly.io/docs/sprites/concepts/lifecycle/).
- Modal: GPU pricing from T4 to B300 is listed on the same pricing page (https://modal.com/pricing). Fly says it will not do “something bigger” with GPU Machines, and a v2 is unlikely soon (https://fly.io/blog/wrong-about-gpu/).
- Daytona: lists GPU, Windows and macOS sandboxes (https://www.daytona.io/docs/en/sandboxes.md).
- Vercel Sandbox and Cloudflare Sandbox: sit next to the customer’s Vercel or Workers app (https://vercel.com/docs/vercel-sandbox/pricing, https://developers.cloudflare.com/sandbox/).
- Render and Railway sandboxes: Render documents sandboxes that “can run up to 30 days on Pro and above” and Railway lists 100 running sandboxes per environment on Pro (https://render.com/pricing, https://railway.com/pricing).
Ask the customer: Does the agent need state across idle gaps? Does it need GPUs, Windows, or memory-level resume? Those decide it.
Honest limits to bring up first
| Limit | Source |
|---|---|
| No free tier for new organizations; $1 trial for 7 days | https://fly.io/docs/about/pricing/ |
| Volumes are tied to one host and do not replicate | https://fly.io/docs/volumes/overview/ |
| No native alerting yet; use Prometheus and Grafana | https://fly.io/docs/reference/aws-to-fly-guide/ |
| Machines are provisioned and started or stopped, not created per request | https://fly.io/docs/reference/aws-to-fly-guide/ |
| GPU Machines are staying, but no bigger v2 is expected | https://fly.io/blog/wrong-about-gpu/ |
| Sprite storage is fixed at 100 GB and does not autoscale yet | https://fly.io/docs/sprites/concepts/lifecycle/ |
Objection: “Will Fly.io be around?”
Fly’s own CEO addressed this in public. A reviewer named Fly as the provider he was least confident would be around by the end of the year; Fly replied that it was in a run of strong quarters, had raised more money and named Scott Johnston CEO (https://fly.io/blog/kurt-scott-money-sprites/). Do not argue the point. Say: “Here is Fly’s own post on it.” Then offer the contract-level answer: Enterprise support starts at $2,500/month (https://fly.io/docs/about/pricing/), and ask whether an SLA or exit plan is the real concern.