Fly.io
Runs Docker images as lightweight VMs in chosen regions, billed on provisioned resources rather than plan tiers.
- paas
- Not documented
- Not documented
- 18 regions
Who it suits.
Workloads that ship as Docker images and need placement in particular regions. Billing is purely usage-based with no plan tiers, which suits spiky or region-pinned traffic better than a flat monthly fee.
Consider something else if…
You want a predictable flat bill rather than charges that track the resources provisioned for each app.
Editorial · Palash Bagchi · approved
What the documentation says.
Each value below links to the page it was read from, with the sentence it came from. Criteria Fly.io does not publish are not listed.
Pricing
Pricing model
Usage-based, no compute plan tiers
Sources (1) →Sources ↓
- Fly.io pricing ↗
“Plans get complicated, so we just charge based on usage. Billing is based on the resources provisioned for your apps, pro-rated for the time they are provisioned.”
Read 2026-09-05 · official docs
Egress over allowance
$0.02 per GB (North America / Europe); $0.04 per GB (Asia Pacific / Oceania / South America); $0.12 per GB (Africa / India)
Sources (1) →Sources ↓
- Pricing · Fly Docs ↗
“We bill for data leaving your app destined for the public internet or for apps or Machines in other regions — Egress to Internet: North America / Europe $0.02 per GB; Asia Pacific / Oceania / South America $0.04 per GB; Africa / India $0.12 per GB.”
Read 2026-09-05 · official pricing
When you exceed a cap
No plan cap to exceed — Fly bills per second for provisioned resources. The only documented enforcement is unspecified automated scaling limits, which surface as an error message (platform-wide, all plans)
Sources (1) →Sources ↓
- Fly.io Resource Pricing · Fly Docs ↗
“Organizations may be subject to automated scaling limits to prevent abuse or to help with capacity planning. Email the address in the error message if you run into such a limit and it's getting in your way.”
Read 2026-09-05 · official pricing
Limits
Memory (entry plan)
256MB on shared-cpu-1x, the smallest Machine size ($2.02/month at the Amsterdam-region rate shown in the pricing table)
Sources (1) →Sources ↓
- Fly.io Resource Pricing · Fly Docs ↗
“shared-cpu-1x | 1 shared | 256MB | $0.00000078 | $0.0028 | $2.02”
Read 2026-09-05 · official pricing
File or inode limit
8 GB rootfs (deployed image) limit per Machine, platform-wide on all plans; exceeding it fails the image push at deploy time
Sources (1) →Sources ↓
- Troubleshoot your deployment · Fly Docs ↗
“Machines have an 8GB rootfs limit.”
Read 2026-09-05 · official docs
Execution
CPU time limit
Platform-wide, per Machine size: shared vCPUs get a 5ms CPU quota per 80ms period (6.25%); performance vCPUs get the full 80ms. Quotas are shared across a Machine's vCPUs, and tasks are throttled for the rest of the period once the quota is reached.
Sources (1) →Sources ↓
- CPU Performance ↗
“For each 80ms period of time, we set a quota of 5ms for each shared vCPU, or the full 80ms period for each performance vCPU. If your machine cgroup's CPU usage reaches its quota, its tasks will be 'throttled' (not scheduled to run again) for the remainder of the 80ms period. Quotas are shared between a Machine's vCPUs. For example, a shared-cpu-2x Machine is allowed to run for 10ms per 80ms period, regardless of which vCPU is using that time.”
Read 2026-09-05 · official docs
Streaming response limit
No duration or size ceiling documented. Streaming works, but Fly Proxy buffers responses before compressing them, so progressive server-side rendering needs Content-Encoding: none set on those responses.
Sources (1) →Sources ↓
- Content Encoding — Fly Docs ↗
“The proxy buffers responses before compressing them. That can break HTML streaming—e.g., progressive server-side rendering. To avoid buffering, disable compression by setting Content-Encoding: none for those responses”
Read 2026-09-05 · official docs
Managed connection pooling
Supported
Sources (1) →Sources ↓
- Cluster configuration options ↗
“All Managed Postgres clusters come with PGBouncer for connection pooling, which helps manage database connections efficiently. You can configure how PGBouncer assigns connections to clients by changing the pool mode.”
Read 2026-09-05 · official docs
Deployment
Docker deployment
Supported
Sources (1) →Sources ↓
- Deploy a Fly.io app ↗
“fly deploy builds, or gets, the Docker image for the app, and refreshes Machines with the latest changes. If there's a Dockerfile in the local working directory, use that Dockerfile for the build.”
Read 2026-09-05 · official docs
Scheduled jobs
Limited
Sources (1) →Sources ↓
- fly machine run · Fly Docs ↗
“Use the --schedule flag to set the Machine's config.schedule property, which starts the Machine on a fuzzy hourly, daily, weekly, or monthly cycle.”
Read 2026-09-05 · official docs
Infrastructure
Persistent storage
Supported
Sources (1) →Sources ↓
- Fly Volumes overview · Fly Docs ↗
“Fly Volumes are local persistent storage for Fly Machines.”
Read 2026-09-05 · official docs
Managed databases
Supported
Sources (1) →Sources ↓
- Fly.io pricing ↗
“The price of running Fly.io Managed Postgres depends on your selected Managed Postgres Plan and the amount of storage your Postgres cluster has.”
Read 2026-09-05 · official docs
Edge network
Limited
Sources (1) →Sources ↓
- The Fly.io Architecture — Fly Docs ↗
“We broadcast and accept traffic from ranges of IP addresses (both IPv4 and IPv6) in all our datacenters. When we receive a connection on one of those IPs, we match it back to an active customer application, and then proxy the TCP connection to the closest available microVM.”
Read 2026-09-05 · official docs
Scales to zero
Supported
Sources (1) →Sources ↓
- Automatically stop and start Machines · Fly Docs ↗
“Use autostop/autostart to automatically start and stop or suspend existing Machines based on incoming requests. [...] you don't pay for their CPU and RAM when they're in a stopped or suspended state.”
Read 2026-09-05 · official docs
Autoscaling
Limited
Sources (1) →Sources ↓
- Autoscaling · Fly Docs ↗
“Autoscaling adjusts the number of running or created Fly Machines dynamically. We support two forms of autoscaling: Autostop/autostart Machines and Metrics-based autoscaling. [...] Fly Proxy autostop/autostart starts and stops Machines based on load; Machines are never created or deleted. [...] The metrics-based autoscaler scales your application based on any metric. You deploy the autoscaler as an app in your organization.”
Read 2026-09-05 · official docs
Regions
18 regions
Sources (1) →Sources ↓
- Fly.io regions ↗
“You can host your apps in any of the following regions — including ams (Amsterdam, Netherlands), nrt (Tokyo, Japan) and syd (Sydney, Australia).”
Read 2026-09-05 · official docs
