Skip to main content

Moving an AI Agent Between Platforms: The Checklist We Wish We Had

Published: February 16, 20266 min read
#ai-agents#infrastructure#migration#openclaw#building-in-public

Moving an AI agent between platforms sounds simple. It's not.

Here's the checklist we wish we had.

Why We're Distributing Agents

I'm building a portfolio of AI micro-businesses. Each product gets specialized agents — a CMO agent for growth, sales agents for outreach, ops agents for automation.

Currently we have two:

  • Marvin — coordinator, handles infrastructure and orchestration
  • Ace — CMO for AI Search Mastery, owns growth and marketing

Both were running on a single EC2 instance. That worked, but we're preparing to scale to 10+ agents. Single point of failure isn't an option.

The plan: Distribute agents across AWS (EC2) and a dedicated Mac Mini. If one goes down, the others keep working. Different platforms, same mesh network via Tailscale.

Migrating Ace to Mac Mini should have taken an hour. It took over a day.

What Broke (And How to Fix It)

1. Telegram Bot Token Can't Be Shared

The problem: We tried using the same Telegram bot for both gateways. Doesn't work — each gateway needs its own bot token.

The fix: Create a separate Telegram bot for each gateway via @BotFather.


2. New Bot Has Wrong Privacy Settings

The problem: Fresh Telegram bots have privacy mode ON by default. They only receive:

  • Direct messages
  • Commands (/something)
  • Messages where they're @mentioned
  • Replies to their own messages

Regular group messages? Ignored.

The fix: Either make the bot an admin of the group, or disable privacy mode via BotFather (/setprivacy → Disable).


3. Binding Configuration Routes to Wrong Agent

The problem: With multiple agents, you need to tell the gateway which messages go where. We had config pointing to the wrong agent ID, and used schema keys that don't exist.

The fix: Explicit bindings in openclaw.json:

"bindings": [
  {
    "agentId": "ace",
    "match": {
      "channel": "telegram"
    }
  }
]

For a dedicated gateway, route all messages from that channel to that agent.


4. Claude CLI Auth ≠ OpenClaw Auth

The problem: Claude CLI was logged in and working. Running claude in terminal worked fine. But OpenClaw returned 401 Unauthorized.

They store credentials separately. Claude CLI doesn't share its auth with OpenClaw.

The fix: After logging into Claude CLI, run:

openclaw models auth setup-token --provider anthropic

This copies Claude's credentials to OpenClaw.


5. Workspace Path Mismatch

The problem: Ace was responding but had no memory — couldn't see its files. The config pointed to the default workspace, not Ace's actual workspace directory.

The fix: Verify workspace path in agent config matches where the files actually live:

"agents": {
  "list": [
    {
      "id": "ace",
      "workspace": "/Users/jamie/.openclaw/ace-workspace"
    }
  ]
}

6. Files Didn't Copy Completely

The problem: We copied the workspace but Ace still couldn't find files. The scp command copied files but not all of them — hidden files, nested directories, etc.

The fix: Use scp -r with explicit paths, verify with ls -la on destination. Don't trust "it copied" — check.


The Checklist

Before migrating an AI agent to a new platform:

  • Create new Telegram bot (can't share tokens between gateways)
  • Configure bot privacy (admin or disable privacy mode for groups)
  • Set up bindings to route messages to correct agent
  • Run openclaw models auth setup-token --provider anthropic
  • Verify workspace path in config matches actual directory
  • Copy ALL workspace files (memory, config, .env)
  • Test DMs first, then group messages
  • Set up SSH access for remote debugging

The Bigger Picture

We now have:

  • Marvin on AWS — coordination, infrastructure, always-on
  • Ace on Mac Mini — dedicated growth agent, isolated environment
  • Tailscale mesh — secure connectivity between platforms from anywhere
  • Git-backed workspaces — version control for agent memory

One platform going down doesn't kill everything. That's the point.

The first migration was painful. The second will take 20 minutes because we have this checklist.


I'm building a portfolio of AI micro-businesses, each with specialized agents. Documenting the whole journey — wins, fails, and $0 to exit. Follow along → @Jamie_within

Share this post