Fly.io Machines

Docker containers at 30+ regions. Heavier than V8 isolates, full Node + binary support.

VISIT FLY.IO MACHINES

Key takeaway: When the workload needs a full operating system or holds state, this is the pick, and calling it an edge platform undersells what it actually does well. Machines run your container in tens of regions with volumes, long-lived connections, and any language you like. Against Cloudflare Workers you trade sub-millisecond starts and hundreds of points of presence for capability inside each location, which is the right trade for stateful apps and the wrong one for stateless request handling.

Quick facts

  • CategoryServerless function
  • LanguageAny (Docker)
  • PricingPaid
  • LicenseProprietary
  • Created2017
  • GitHub starsclosed
  • Cold startfast
  • PoPs30+
  • Node-compatYes

What it is

Fly.io Machines run Docker containers in 30+ regions globally. Not a true edge runtime, closer to a globally-distributed PaaS. Cold starts are seconds (not milliseconds), but full Node / Python / Go / any-binary support. Strong on stateful and regional workloads.

Best for

  • Apps requiring full Node / Python / Go runtimes globally
  • Stateful workloads (Postgres, game servers, real-time)
  • Multi-region deployments where regional latency beats true edge

When not to pick it

Skip Fly Machines for true edge needs (sub-50ms cold start globally), V8 isolates win there. Skip for stateless API workloads where Workers / Edge Functions are simpler.

My take

Fly Machines is "edge-flavoured" PaaS, not true edge runtime. Right answer when you need full Node / Python globally; wrong answer when you need V8-isolate performance.

Containers in regions, not isolates in PoPs

A Machine is a Firecracker microVM running your Docker image, placed in one of Fly's thirty-plus regions. That is a fundamentally different unit from a V8 isolate and it changes what is possible. You get a whole operating system: any language, native modules, background processes, a real filesystem, and long-lived TCP and WebSocket connections that stay open as long as you need them. You also get real start times, seconds rather than milliseconds, though Machines can be kept warm or configured to auto-stop and auto-start on incoming requests, which recovers most of the idle-cost benefit. The accurate mental model is a globally distributed platform-as-a-service with fast placement, not an edge runtime. Against Cloudflare Workers the geography is coarser, tens of regions rather than hundreds of points of presence, but the capability available inside each location is effectively unlimited by comparison.

State is the reason to pick it

Most edge platforms are stateless by design and push you toward their own key-value or object stores. Fly goes the other way. Volumes attach to Machines, Postgres can run as an ordinary app, and you can pin compute to a region so data locality is something you decide rather than something the platform decides for you. That makes it a sensible home for game servers, collaborative back ends holding thousands of WebSockets open, queue workers, and anything that wants a database sitting in the same region as the code reading it. The cost is operational: you own the image, the health checks, the migrations, the backups, and the scaling policy, which is meaningfully more work than deploying a Worker. If your workload is stateless request handling, Cloudflare Workers or Vercel Edge is less effort and less money. Portability is a genuine consolation, since a Docker image runs anywhere.

Frequently asked questions

Is Fly.io an edge platform?

It is closer to a globally distributed platform-as-a-service. Machines are Firecracker microVMs running your container in one of tens of regions, not isolates on hundreds of CDN points of presence, and start times are measured in seconds. For request shaping at true edge latency, Cloudflare Workers fits better. For running a full application near users, Fly does.

Fly.io Machines or Cloudflare Workers?

Workers for stateless request handling, the lowest latency, and the lowest cost at high volume. Fly Machines when you need full Node, Python, Go, or any binary, plus volumes, long-lived connections, or a database in the same region. Plenty of teams run both: Workers in front for routing and caching, Fly behind it for the application.

Can Fly Machines run a database?

Yes. Volumes attach to Machines and Postgres can run as a normal Fly app, so data sits in the same region as the compute reading it. Running it that way means you own backups, failover, and upgrades. This ability to hold state is the main reason to choose Fly over an isolate platform.

Links

Compare Fly.io Machines side-by-side

Similar tools you should also consider

If Fly.io Machines is your pick, the next conversation is short

The 30-min call is where your edge runtime choice becomes a real architecture, an integration plan with your data layer + auth + build pipeline, and a price range you can take to your stakeholders.