Overview

Fly.io Machines is a compute platform designed for deploying and running containerized applications globally, with a focus on edge computing and low-latency access. The core offering, Fly Machines, provides a low-level primitive for running VM instances that can host Docker images. These Machines are distributed across Fly.io's global network of datacenters, referred to as regions, enabling applications to run geographically closer to end-users. This architecture aims to reduce network latency and improve application responsiveness for a globally dispersed user base.

The platform is geared towards developers and technical buyers who require fine-grained control over their deployments and need to manage stateful services at the edge. Unlike some higher-level serverless container platforms, Fly.io provides access to underlying VM instances and persistent storage through Fly Volumes, which allows for the deployment of databases and other stateful applications that benefit from data locality. This capability extends to supporting full-stack applications, microservices architectures, and specialized use cases such as real-time gaming backends or data processing at the network's edge.

Fly.io's operational model emphasizes a command-line interface (CLI) centric workflow, allowing developers to manage deployments, scale resources, and configure networking through the flyctl tool. This approach offers a balance between the flexibility of infrastructure-as-code and the operational simplicity of a managed platform. The platform supports a wide range of programming languages and frameworks, as long as they can be containerized into a Docker image, making it adaptable for various development stacks including Go, Node.js, Python, Ruby, Elixir, and Rust.

The service stands out for its emphasis on global distribution and the ability to run applications with minimal network overhead. For instance, a common use case involves deploying a database like Fly Postgres in close proximity to the application servers, which can significantly reduce the latency of database queries. Similarly, Fly Redis instances can be deployed at the edge to serve cached data quickly. This distributed model aligns with principles of edge computing, where processing is moved closer to the data source or end-user to minimize network delays, as discussed in various industry perspectives on cloud architecture, including those from IBM's overview of edge computing.

Key features

  • Global Distribution Network: Deploy applications across a network of global regions for reduced latency and improved user experience.
  • Persistent Storage (Fly Volumes): Attach block storage to Machines, enabling the deployment of stateful services and databases at the edge.
  • Private Networking: Machines within an organization can communicate over a private network, facilitating secure microservice architectures.
  • Built-in Load Balancing: Automatically distributes incoming traffic across multiple instances of an application.
  • Managed Databases (Fly Postgres, Fly Redis): Offer managed instances of PostgreSQL and Redis that can be deployed alongside applications for data locality.
  • Customizable VM Sizes: Configure CPU and memory resources for each Machine to match application requirements.
  • CLI-Centric Workflow (flyctl): Manage all aspects of application deployment and infrastructure through a command-line interface.
  • Docker Image Support: Deploy any application that can be packaged into a Docker container.
  • Automated SSL Certificates: Automatically provision and renew SSL certificates for deployed applications.

Pricing

Fly.io's pricing is based on a pay-as-you-go model, with costs determined by the resources consumed, including VM size, memory, persistent storage, and data egress. A free tier is available for smaller applications and testing.

Pricing as of 2026-06-21. For detailed and up-to-date pricing, refer to the Fly.io pricing page.

Resource Free Tier Allowance Paid Tier Example (shared-cpu-1x 256MB VM)
VMs Up to 3 shared-cpu-1x 256MB VMs $0.000000416 per ms running, $0.000010416 per ms idle
Persistent Storage 3GB $0.15 per GB per month (after free tier)
Egress Bandwidth 160GB per month $0.02 per GB (after free tier)
Allocated RAM 256MB per free VM $0.000000208 per MB per ms running (after free tier)

Common integrations

Alternatives

  • Railway: A platform-as-a-service (PaaS) offering similar developer experience for deploying applications, with a focus on simplicity.
  • Render: A unified cloud platform providing services for web apps, databases, and more, with automatic deploys from Git.
  • AWS App Runner: A fully managed service that makes it easy for developers to quickly deploy containerized web applications and APIs at scale.
  • Amazon ECS: A highly scalable, high-performance container orchestration service that supports Docker containers and allows you to easily run and scale containerized applications on AWS.

Getting started

To get started with Fly.io Machines, you typically install the flyctl CLI tool, log in, and then deploy an application. Here's a basic example for deploying a simple Node.js application:

# 1. Install flyctl (macOS example)
brew install flyctl

# 2. Log in to Fly.io
flyctl auth login

# 3. Create a new Node.js project directory
mkdir my-node-app
cd my-node-app

# 4. Create a simple Node.js application (index.js)
echo 'const http = require("http");\n
const server = http.createServer((req, res) => {\n  res.writeHead(200, { "Content-Type": "text/plain" });\n  res.end("Hello from Fly.io Machines!\n");\n});\n
const PORT = process.env.PORT || 8080;\nserver.listen(PORT, () => console.log(`Server running on port ${PORT}`));' > index.js

# 5. Initialize a new Fly.io app in the directory
# This will generate a fly.toml configuration file and a Dockerfile.
flyctl launch

# Follow prompts:
# - Choose an app name (or accept default)
# - Choose a region (e.g., "iad" for Ashburn, VA)
# - Confirm Dockerfile and fly.toml generation

# 6. Deploy the application
flyctl deploy

# 7. Open the deployed application in your browser
flyctl open

This sequence initializes a Fly.io application, creates a basic Dockerfile to containerize the Node.js application, and then deploys it to a selected region on the Fly.io network. The flyctl open command will provide the URL to access the running application.