---
title: "Migrate from Fly.io over MCP, without a rewrite"
url: https://while.sh/en/guides/migrate-from-fly/
author: "Aloïs Oddon, co-founder of Nextmap"
updated: 2026-11-05
---

# Leave Fly.io without rewriting your app, from your AI agent

Your customers want their data in France, or you want an agent that deploys for you? Connected to while over MCP, it takes over your Fly.io app as is, copies the database and deploys it.

## Prerequisites

- An app on Fly.io, with its fly.toml.
- The Fly.io command line, to export the database.
- An AI agent that works in a terminal: Claude Code, Codex, Cursor or Gemini CLI.

## Step 1: Give your agent these instructions

Open your agent in your app's folder and paste these instructions into it:

```text titre="Instructions"
Connect to while with my account (while.sh/agents), then deploy my app.
```

With your account, your agent adds while's MCP server itself. On the first call to while, a page opens in your browser: choose "A new app", then click Authorize.

## Step 2: Open your app

Your agent gives you your app's address, for example `https://mon-appli.while.cloud`, over HTTPS.

## What your agent does

It reads your fly.toml and carries its settings over to while.yaml (source 1):

| In fly.toml | In while.yaml |
|---|---|
| `internal_port` in `[http_service]` | the service's port, `port` |
| `path` in its `checks` | the health path, `health.path` |
| `[processes]`, like `web` and `worker` | one service per process, `type: worker` for those without an address |
| `memory` and `cpus` in `[[vm]]` | the service's resources, `resources` |
| `min_machines_running = 0` | sleep, `sleep` |
| `[env]` | the service's variables, `env` |

```yaml titre="while.yaml"
apiVersion: while/v1
project: mon-appli
services:
  - name: web
    port: 8080
    health:
      path: /health
  - name: worker
    type: worker
    command: [bin/worker]
databases:
  - name: main
```

## Copy your PostgreSQL database

> You, to your agent: Copy our Fly database to while.

Your agent opens a tunnel to the database with `fly mpg proxy`, exports it with `pg_dump` (source 3), then loads it into while.

## Take over your secrets

> You, to your agent: Take over our Fly secrets.

Fly.io never returns a secret's value (source 2): your agent lists their names, and you enter the values yourself in while. Your agent never sees them.

## Move to your own domain

> You, to your agent: Put the app on www.acme.com.

Your agent declares the domain, you add the DNS records it gives you, and the HTTPS certificate follows.

## Go back to the previous version

> You, to your agent: Go back to the previous version.

In the 30 minutes after a deployment, the previous version comes back in a second. After that, it takes a few seconds.

## Next steps

- [Compare Fly.io and while](/en/comparisons/while-vs-fly/)
- [Deploy a Docker container](/en/guides/deploy-docker-container/)
- [Restore a PostgreSQL database](/en/guides/restore-postgresql/)

## Sources

1. [Fly.io, app configuration (fly.toml)](https://docs.fly.io/reference/configuration), 2026-11-05
2. [Fly.io, app secrets](https://docs.fly.io/apps/secrets), 2026-11-05
3. [Fly.io, Managed Postgres and its tunnel (fly mpg proxy)](https://docs.fly.io/postgres/import), 2026-11-05

## Questions

### What about my Fly volumes?

while has no persistent disks: keep your files in an S3 bucket, which your agent declares in one line.

### My app already has its Dockerfile. Does while use it?

Yes, while builds your app with it, like Fly.io does.

### Can I keep Fly.io while I check?

Yes, your app runs on while at its own address before you switch your domain.
