> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orgo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate from Fly.io

> Move a workload off a Fly.io Machine onto a persistent Orgo cloud computer - concept mapping, the clean way to transfer state, and the honest differences.

You run apps on Fly.io as **Machines** - fast-booting [Firecracker microVMs](https://fly.io/docs/reference/architecture/) grouped under an [App](https://fly.io/docs/apps/), with optional [Volumes](https://fly.io/docs/volumes/) for persistence. Orgo gives an AI agent a full, always-on Linux **desktop** (browser + shell + files) that it drives over an HTTP API. This page maps the two and shows the cleanest way to move.

<Info>
  **Doing this with an agent?** Paste this page into Claude Code or Codex as context - every command is copy-paste and self-contained, so the agent can run the switch end to end.
</Info>

## How the platforms map

| Fly.io                                   | Orgo                                                                                                              |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| App + Machine (Firecracker microVM)      | A **computer** (`POST /computers`)                                                                                |
| `fly ssh console` (over WireGuard)       | `POST /computers/{id}/bash`, or `orgo ssh <name>`                                                                 |
| Volume (persistent storage)              | The computer's disk - persistent by default                                                                       |
| Volume snapshot                          | `POST /computers/{id}/clone`                                                                                      |
| Anycast IPs + Fly Proxy (public inbound) | No public per-VM IP - reach it via the authenticated proxy: `www.orgo.ai/api/desktops/{instance_id}/proxy/<path>` |

## Move your state

Orgo runs any shell command inside the computer via `POST /computers/{id}/bash`, so the cleanest transfer is to **pull your data in from inside the machine** - no size limits, no laptop round-trip.

**Recommended - via a Git repo.** Push the state you want to keep to a private repo, then clone it inside the Orgo computer:

<CodeGroup>
  ```bash 1. Extract on Fly theme={null}
  # Machines have no public SSH; this runs over Fly's private WireGuard mesh.
  fly ssh console -a YOUR_APP -C "tar czf /tmp/state.tgz -C /root ."
  fly ssh sftp get -a YOUR_APP /tmp/state.tgz ./state.tgz
  # Commit state.tgz (or the raw dir) to a private repo.
  ```

  ```bash 2. Pull inside the Orgo computer theme={null}
  curl -X POST https://www.orgo.ai/api/computers/$COMPUTER_ID/bash \
    -H "Authorization: Bearer $ORGO_API_KEY" -H "Content-Type: application/json" \
    -d '{"command":"git clone https://TOKEN@github.com/you/your-state.git ~/state && tar xzf ~/state/state.tgz -C ~"}'
  ```
</CodeGroup>

**Alternatives**

* **Any URL.** Host the tarball anywhere reachable and `curl`/`wget` it from inside the VM the same way - a Git repo is just the tidiest, versioned option.
* **Small files (\< 10 MB).** `POST /files/upload` drops a file straight onto the desktop. It caps at **10 MB** - for larger state use the Git or URL pull above, or split into \< 10 MB batches.

Reference: [Fly SSH & SFTP](https://fly.io/docs/flyctl/ssh-sftp/), [Fly Volume snapshots](https://fly.io/docs/volumes/snapshots/).

## Set up on Orgo

One call provisions the computer; then install your software with the same `/bash` endpoint.

```bash theme={null}
curl -X POST https://www.orgo.ai/api/computers \
  -H "Authorization: Bearer $ORGO_API_KEY" -H "Content-Type: application/json" \
  -d '{"workspace_id":"WORKSPACE_ID","name":"prod","ram":8,"cpu":4}'
# → save the returned id as $COMPUTER_ID, then run your installer via /bash
```

See the [Quickstart](/quickstart) for the full control surface (`bash`, `exec`, `screenshot`, click/type).

## What's different

Neutral, both directions:

* **Fly does, Orgo doesn't:** general-purpose compute/PaaS - arbitrary long-running services, public inbound via Anycast [shared/dedicated IPs](https://fly.io/docs/networking/services/), multi-region deployments, and opt-in persistence via Volumes (a Machine's base filesystem is [ephemeral](https://fly.io/docs/machines/overview/)).
* **Orgo does, Fly doesn't out of the box:** a persistent GUI **desktop** with a built-in agent-control API (screenshot / click / type), sub-second boot, and nothing to administer - no OS, firewall, or TLS to manage.

Rule of thumb: keep general server workloads and public-facing services on Fly; move to Orgo when the job is an **agent operating a durable desktop or browser**. Fly's public-networking and multi-region features have no 1:1 Orgo analog - reach the desktop's own API through the [authenticated proxy](/api-reference/introduction) instead.

## Reference

<CardGroup cols={2}>
  <Card title="Fly Machines" icon="plane" href="https://fly.io/docs/machines/">Compute primitive</Card>
  <Card title="Fly SSH & SFTP" icon="terminal" href="https://fly.io/docs/flyctl/ssh-sftp/">Extract files</Card>
  <Card title="Orgo Quickstart" icon="rocket" href="/quickstart">Control a computer over HTTP</Card>
  <Card title="Move an agent (Hermes/OpenClaw)" icon="robot" href="/guides/migrate">Full state-preserving playbook</Card>
</CardGroup>
