Fly.io regions & deployment
★★★★ 4.4 CE

Fly.io Regions, Deployment & Data Residency 2026

Fly.io runs 18 regions, with Anycast routing each request to the nearest Machine. Volumes pin to their region; five EU regions cover residency.

Fly.io Regions & Deployment verdict

Verified today·7 sources checked

Fly.io runs 18 regions across six continents on its own hardware.

A global Anycast network routes each request to the nearest running Machine, and 13 regions act as WireGuard gateways for private networking. You set primary_region in fly.toml, then add regions with fly scale count or fly machine clone.

How to pick your regions

Set primary_region near your users and database, then add regions with fly scale count for global reach and let Anycast route to the nearest Machine. One trap sits in the warm floor. It is per-primary, so keep min_machines_running at 1 or more in each latency-sensitive region, not just the primary, or the others cold-start. For EU residency, pin to ams, fra, cdg, arn or lhr. Verify HIPAA or GDPR needs directly, since the docs only document SOC 2.

Honest limits
  • Volumes and Machines pin to their creation region. Moving a stateful service means recreating it elsewhere.
  • min_machines_running keeps a warm Machine only in the primary region, so other regions can still cold-start under auto-stop.
  • Fly.io documents SOC 2 Type 2 and ISO 27001 datacenters, but no explicit HIPAA or GDPR page, and no published numeric SLA.
Regions
18
Gateway regions
13
EU regions
5
Routing
Anycast nearest
Region binding
Volumes pinned
View sources

This page covers where Fly.io deploys and how residency works. Performance and pricing live on their own pages.

Pick your Fly.io region and deployment

Deploy Fly.io: fly.toml, flyctl and Machines API

primary_region sets where new Machines are created (and FLY_PRIMARY_REGION). [http_service] holds the auto-stop policy: auto_stop_machines (off | stop | suspend), auto_start_machines and min_machines_running (a warm floor in the primary region). concurrency soft/hard limits drive when Fly Proxy adds capacity. [[vm]] picks the Machine size.

fly.tomltoml
app = 'my-app'
primary_region = 'iad'

[build]
  dockerfile = 'Dockerfile'

[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = 'stop'   # off | stop | suspend
  auto_start_machines = true
  min_machines_running = 1      # warm floor in the primary region

  [http_service.concurrency]
    type = 'requests'
    soft_limit = 25
    hard_limit = 50

[[vm]]
  size = 'shared-cpu-1x'
  memory = '512mb'

fly launch generates the app and fly.toml; fly deploy ships it. fly scale count places Machines across regions (pre-creating the capacity Fly Proxy can auto-start), and fly machine clone --region copies a Machine into another region for multi-region reach.

flyctl CLIbash
# Create and deploy
fly launch
fly deploy

# Place Machines across regions (pre-create capacity)
fly scale count 4 --region iad,lhr
fly scale count 11 --max-per-region 5

# Clone a Machine into another region
fly machine clone --region syd <machine_id>

# Inspect placement
fly scale show
fly regions list

The Machines REST API at api.machines.dev creates and controls Machines directly with a Bearer token. POST to /v1/apps/{app}/machines with a guest object (cpu_kind, cpus, memory_mb) or a named size. Rate limit is 1 request/second per action, burst 3.

Machines API (cURL)bash
export FLY_API_HOSTNAME='https://api.machines.dev'
export FLY_API_TOKEN=$(fly tokens deploy)

curl -i -X POST \
  -H "Authorization: Bearer ${FLY_API_TOKEN}" \
  -H "Content-Type: application/json" \
  "${FLY_API_HOSTNAME}/v1/apps/my-app/machines" \
  -d '{
    "region": "lhr",
    "config": {
      "image": "registry-1.docker.io/library/nginx:latest",
      "guest": { "cpu_kind": "shared", "cpus": 1, "memory_mb": 256 }
    }
  }'

Fly.io regions and locations

RegionLocationWireGuard gateway
iadAshburn, Virginia, USAYes
ewrSecaucus, NJ, USAYes
ordChicago, Illinois, USAYes
dfwDallas, Texas, USAYes
laxLos Angeles, California, USAYes
sjcSan Jose, California, USAYes
yyzToronto, CanadaYes
gruSao Paulo, BrazilNo
lhrLondon, United KingdomYes
amsAmsterdam, NetherlandsYes
cdgParis, FranceYes
fraFrankfurt, GermanyYes
arnStockholm, SwedenYes
bomMumbai, IndiaYes
sinSingaporeYes
nrtTokyo, JapanYes
sydSydney, AustraliaYes
jnbJohannesburg, South AfricaNo

Fly.io region selection and routing

AspectBehaviorNotes
Primary regionprimary_region in fly.tomlDefault for new Machines; sets FLY_PRIMARY_REGION
Add a regionfly scale count --region--max-per-region caps Machines per region
Clone to a regionfly machine clone --regionCopies a Machine into another region
Request routingAnycast, nearest Machinefly-replay header for dynamic routing
Warm floor scopePrimary region onlymin_machines_running has no effect on other regions
Region bindingVolumes + Machines pinnedTied to the region they're created in

Fly.io data residency and compliance

ControlOptionNotes
EU regionsams, arn, cdg, fra, lhrPin Machines and Volumes for EU residency
InfrastructureOwn hardware, ISO 27001 DCsFirecracker microVMs, no shared kernels
ComplianceSOC 2 Type 2 + BAAsExplicit HIPAA/GDPR pages not found in docs
Private network6PN WireGuard meshAll intra-network traffic encrypted
EncryptionEncrypted volumes + TLSKeys in redundant secret storage

What to verify before you commit to Fly.io

  • Volumes and Machines are tied to the region they are created in, so moving a stateful workload across regions means recreating it and migrating data
  • min_machines_running keeps a warm Machine only in the primary region, so secondary regions can still cold-start under auto-stop unless you size capacity there
  • Fly.io documents SOC 2 Type 2, ISO 27001 datacenters and BAAs, but no explicit HIPAA or GDPR compliance page was found in the docs, so confirm regulated requirements directly
  • Fly.io publishes no numeric uptime SLA, so region availability carries no contractual guarantee

Fly.io Regions & Deployment FAQ

How many regions does Fly.io have?

Eighteen, across six continents. North America has seven: iad, ewr, ord, dfw, lax, sjc, yyz. Europe adds lhr, ams, cdg, fra, arn. Asia has bom, sin, nrt, with gru in South America, syd in Oceania, jnb in Africa. Thirteen are WireGuard gateway regions, and apps reach the nearest running Machine through a global Anycast network.

How do I deploy to multiple regions on Fly.io?

Set primary_region in fly.toml for default placement, then add regions with fly scale count <n> --region iad,lhr, which pre-creates Machines, or fly machine clone --region syd <id>. Fly Proxy never creates Machines on its own, so you provision capacity per region. Anycast then routes each request to the nearest running Machine, and the fly-replay header lets you override routing.

Does Fly.io support EU data residency?

Yes, through five European regions: ams in Amsterdam, arn in Stockholm, cdg in Paris, fra in Frankfurt, lhr in London. Pin Machines and Volumes there for EU residency. Fly.io runs its own hardware in ISO 27001 datacenters, is SOC 2 Type 2 certified and signs BAAs. The docs harvested published no explicit HIPAA or GDPR page, so verify regulated needs directly.

Are Fly.io Machines tied to a region?

Yes. Both Fly Machines and Fly Volumes are tied to the region they are created in, and the active region shows up at runtime in the FLY_REGION environment variable. Moving a stateful workload to another region means creating new Machines and a new volume there and migrating the data, rather than relocating the existing ones.

Does auto-stop affect every region?

Auto-stop applies wherever Machines run, but the warm floor does not. min_machines_running keeps running Machines only in the app's primary region. Secondary regions can still scale to zero and cold-start on the next request. For low latency in several regions, size enough always-on capacity in each, not just the primary.

Sources & verification

Verified by ComparEdgeMethod: Vendor docs, official pages, and selected independent sources
SourceWhat was checkedLast checked
Fly OfficialOfficial product pageJuly 10, 2026
Fly Api Working With Machines ApiAPI Working With Machines APIJuly 10, 2026
Fly Launch Autostop AutostartLaunch Autostop AutostartJuly 10, 2026
Fly Launch Scale CountLaunch Scale CountJuly 10, 2026
Fly Networking Private NetworkingNetworking Private NetworkingJuly 10, 2026
Fly Reference ConfigurationConfigurationJuly 10, 2026
Fly Reference RegionsRegions and residencyJuly 10, 2026

Every fact on this Fly.io page is tied to a named source and a verification date. Freshness-sensitive figures trace to the sources above; verify against the vendor before relying on them.