Skip to main content
Orgo gives an AI agent a full Linux cloud computer to operate - desktop, browser, shell, files, and a built-in HTTP control API. This guide moves Hermes Agent or OpenClaw from DigitalOcean, Fly.io, or Hetzner onto an Orgo cloud computer with memory, skills, sessions, and configuration preserved.

Comparison Chart

Orgo is purpose-built for agents that operate a desktop, browser, or any app without a programmatic API. Pure headless backend scripts are equally well served by a VPS.

Pick your agent

Hermes Agent

Nous Research. Self-improving agent with persistent skills + memory.

OpenClaw

Open-source personal AI assistant with messaging-platform gateways.

Five steps

  1. Snapshot the agent’s state directory on the source.
  2. Provision an Orgo computer.
  3. Transfer the tarball.
  4. Install the agent with its upstream installer.
  5. Restore + start, then verify.
Same recipe for both agents. Only step 3 varies by source platform.

State lives in one directory

Snapshot that single directory and you preserve identity, memory, skills, and API keys.

Run the migration

Set ORGO_API_KEY from orgo.ai/start, then pick the tab for the agent you’re moving.
Hermes Agent
1

Snapshot on the source

Tarball is typically 5 MB to a few hundred MB depending on session and media-cache size.
2

Create the Orgo computer

3

Transfer the tarball in

Pick the source platform tab in Transfer the tarball. End state: /root/Desktop/hermes-state.tgz exists on the Orgo computer.
4

Install Hermes

Run any shell command in the VM via POST /computers/{id}/bash. For interactive work, orgo ssh hermes-prod opens a live terminal.
Pulls Python 3.11, Node.js, uv, ripgrep, ffmpeg. Registers hermes on $PATH. Creates an empty ~/.hermes/ skeleton, which the next step replaces.
5

Restore and start

6

Verify

Transfer the tarball

A Hermes/OpenClaw tarball is usually larger than the 10 MB /files/upload limit, so pull it in from inside the computer - no size cap, no laptop round-trip. Extract on the source, put the tarball somewhere the computer can reach (a private Git repo or any temporary URL), then git clone/curl it via POST /computers/{id}/bash. Extract on the source (see the provider page for detail):
More: Migrate from DigitalOcean.
Pull it into the computer. Commit the tarball to a private repo (or host it at a URL), then land it on the desktop:
Small state (< 10 MB)? Skip the repo - POST /files/upload drops the file straight onto the desktop at /root/Desktop/<filename>.

What carries over

Gotchas

Don’t run two gateways on the same bot token. Stop the source gateway first, verify on Orgo, then delete the source. Two live gateways race for incoming messages.
hermes setup rewrites .env. Run the restore step after install. Don’t re-run the wizard or it overwrites the API keys you brought over.
  • sqlite needs disk headroom. fsync returns EIO (Errno 5) on a full disk. Size the computer with at least 2× the source state-dir as free disk.
  • Device-bound pairings re-pair. WhatsApp Web, iMessage, Signal. Re-scan the QR on Orgo.
  • Inbound webhooks don’t hit the VM directly anymore. There’s no public per-VM hostname; reach the desktop’s API through the authenticated proxy (https://www.orgo.ai/api/desktops/{instance_id}/proxy/<path>, with your Orgo API key), or run gateways in outbound/socket mode.

Rollback

Keep the source machine powered on with its gateway stopped until you’re satisfied. To revert:
Delete the source after a few hours of clean operation on Orgo.

Smoke test

hermes doctor only confirms the binary is wired. To prove memory restored correctly, ask the agent something only it would know:
The reply should reference real context from the source machine. Generic answers (“I don’t have memory of past chats”) mean ~/.hermes/sessions/ or ~/.hermes/memories/ didn’t restore - re-check the tar xzf step and that you didn’t extract before the install step ran.

Troubleshooting

Most common cause: .env lost its 0600 mode during transfer, or hermes setup ran a second time and overwrote it. Restore from the tarball, then chmod 600 ~/.hermes/.env.
If disk is at 100%, the in-VM gateway can’t write checkpoints. Bump disk_size_gb with a live resize:
Two gateways online with the same bot token race for incoming messages. Stop the source:
Wait 30 s, then re-test from the messaging client. If still silent, check the gateway logs on Orgo for unauthorized-shaped errors - the bot token may have been rotated between snapshot and restore.
The pairing in ~/.hermes/whatsapp/ is bound to the old device’s hardware fingerprint. Wipe it and re-pair:
POST /files/upload drops files at /root/Desktop/<filename> inside the VM. Verify:
If the file isn’t there, the upload didn’t return 200 - check the curl response body, often a workspaceId / desktopId mismatch.

Full script

One bash file that runs the whole Hermes migration with curl + jq. Set ORGO_API_KEY, WORKSPACE_ID, and STATE_URL (a reachable URL to your state tarball - a private GitHub raw link or a presigned S3 URL both work).
Swap the install URL + state-dir paths to migrate OpenClaw with the same script.

Reference

Hermes Agent docs

Full Nous Research documentation

Hermes Agent GitHub

Source + release notes

OpenClaw site

Project home

OpenClaw GitHub

Source + AGENTS.md spec

DigitalOcean snapshots

Source-platform snapshots

Fly.io SSH & SFTP

flyctl ssh sftp reference

Hetzner snapshots

Source-platform snapshots

Orgo SDK quickstart

computer.bash, .exec, .files
Need a migration outside this shape? spencer@orgo.ai or Discord.