---
title: Migrating from Fly.io
description: Move a Fly.io app to Atlasflow.
order: 3
---

[Fly.io](http://Fly.io) and Atlasflow both run containers on microVMs, so your application image will feel right at home. The main differences are how you configure and deploy: Atlasflow is GitHub-driven and uses project settings instead of a `fly.toml` and CLI.

## What maps over

| [Fly.io](http://Fly.io) | Atlasflow                                                         |
| ----------------------- | ----------------------------------------------------------------- |
| Dockerfile build        | [Dockerfile build](/docs/guides/supported-frameworks.md)             |
| MicroVM runtime         | [MicroVM runtime](/docs/concepts/how-it-works.md)                    |
| `flyctl deploy`         | Push to your default branch                                       |
| Secrets                 | [Environment variables](/docs/guides/environment-variables.md)       |
| Custom domains / certs  | [Custom domains](/docs/networking/custom-domains.md) (TLS automatic) |

## Steps

1. **Create a project** from your GitHub repository and reuse your existing Dockerfile.
2. **Set the internal port to 3000.** Fly maps `internal_port` in `fly.toml`; Atlasflow forwards traffic to **port 3000**. Make sure your app listens on `0.0.0.0:3000`.
3. **Drop `fly.toml`.** Atlasflow configures the root directory, Dockerfile path, and branch in [project settings](/docs/guides/configuration.md) rather than a config file.
4. **Move secrets** to [environment variables](/docs/guides/environment-variables.md), split into build and runtime scopes.
5. **Health check on `/`.** Fly health checks are configurable; Atlasflow checks `GET /` for a 2xx response. See [Container requirements](/docs/guides/container-requirements.md).
6. **Domains and TLS.** Add a [custom domain](/docs/networking/custom-domains.md) and verify DNS. Atlasflow issues certificates automatically, so you don't manage certs yourself.

## Things to know

- There's no Atlasflow CLI; deployments are driven by Git pushes and the dashboard.
- Multi-region is available on the [Team plan](/docs/networking/regions.md).
- Persistent volumes and managed data services differ from Fly. Managed [database, storage, and queues](/docs/products.md) are coming soon.

## Next steps

- [How Atlasflow works](/docs/concepts/how-it-works.md): the runtime model.
- [Configuration](/docs/guides/configuration.md): replace `fly.toml`.
- [Custom domains](/docs/networking/custom-domains.md): domains and automatic TLS.