tutorial migration

From OpenClaw to ZeroClaw: A Migration Guide for Frustrated Users

ZeroClaws.io

ZeroClaws.io

@zeroclaws

February 25, 2026

6 min read

From OpenClaw to ZeroClaw: A Migration Guide for Frustrated Users

The decision to migrate usually comes after one of three moments. You read about CVE-2026-25253 and realized your OpenClaw instance has been sitting exposed on the internet. You checked your server's memory usage and found OpenClaw idling at 1.2GB on a machine with 2GB of RAM. Or you saw the XDA Developers article and decided you'd rather not wait to find out what the next vulnerability looks like.

Whatever brought you here, the migration is straightforward. ZeroClaw includes a built-in migration tool that handles the heavy lifting. Here's what to expect.

What Carries Over

The migration tool imports your conversation history into ZeroClaw's SQLite memory database. Your channel connections — Telegram, Discord, WhatsApp tokens — carry over into config.toml format. Your AI provider settings and API keys transfer directly. System prompts and persona configuration translate cleanly.

What you're not losing is your context. The conversations you've had, the things your assistant has learned about your preferences, the memory it's built up over time — all of that comes with you.

What Actually Changes

The biggest change is the skill system. OpenClaw's JavaScript skills don't run in ZeroClaw. Most common built-in skills have ZeroClaw equivalents — you can check with `zeroclaw tools list`. For custom skills you've written yourself, you'll need to either find a built-in equivalent or implement a Rust trait. For simple automation, the shell tool lets you call external scripts without writing Rust.

The second change is the interface. ZeroClaw doesn't ship a web UI. You interact through chat channels or the CLI. If you relied heavily on OpenClaw's web interface, there's a community web gateway that provides similar functionality, but the primary interaction model is channel-first.

Everything else is simpler. No node_modules, no dependency management, no plugin marketplace. Integrations are configured in a TOML file, not installed from a registry. One binary, one config file, one database.

Before You Start

Take five minutes to prepare before running anything:

```bash # Check your current OpenClaw version openclaw --version

# Export your memory as a backup openclaw export --format json > openclaw-backup.json

# Save your .env file somewhere safe cp ~/.openclaw/.env ~/openclaw-env-backup ```

Also write down your active channel tokens and any custom skills you've built. The migration tool handles most things automatically, but having a reference is useful if anything needs manual attention.

Step 1: Install ZeroClaw

```bash # macOS brew install zeroclaw

# Linux curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash

# Windows curl -fsSLO https://github.com/zeroclaw-labs/zeroclaw/releases/latest/download/zeroclaw-x86_64-pc-windows-msvc.zip ```

Step 2: Run the Migration Tool

Always do a dry run first. It shows you exactly what will be imported, what will be skipped, and what needs manual attention — without making any changes:

```bash zeroclaw migrate openclaw --dry-run ```

Read the output carefully. If anything looks wrong, you can address it before committing. When you're satisfied:

```bash zeroclaw migrate openclaw ```

This imports your conversation memory, channel configuration, AI provider settings, and system prompts. By default it imports the last 10,000 messages. For full history, add `--full-history`.

Step 3: Verify the Config

Open `~/.config/zeroclaw/config.toml` and verify the migration got everything right:

```toml [ai] provider = "anthropic" # or "openai", "ollama", etc. model = "claude-sonnet-4-20250514" api_key = "sk-ant-..."

[channels.telegram] token = "123456:ABC..." allowed_users = [your_user_id]

[channels.discord] token = "MTk..." guild_ids = [your_server_id] ```

Step 4: Test Before Cutting Over

```bash zeroclaw start ```

Send a test message through each channel. Verify the bot responds, that previous conversation context is available, and that your preferred AI model is being used. Don't stop OpenClaw yet — run both in parallel until you're confident everything works.

Common Issues

WhatsApp bridge doesn't connect. ZeroClaw uses a different WhatsApp bridge library. Re-scan the QR code: `zeroclaw channel whatsapp pair`.

Custom skill doesn't work. Check if a built-in equivalent exists with `zeroclaw tools list`. For custom logic, use the shell tool to call external scripts, or implement a Rust trait for more complex integrations.

Memory seems incomplete. The migration imports the last 10,000 messages by default. For full history: `zeroclaw migrate openclaw --full-history`.

Config format is confusing. OpenClaw uses .env files and JSON. ZeroClaw uses TOML. The migration tool handles conversion automatically, but the ZeroClaw docs have a complete config reference if you need to make manual adjustments.

The Before and After

Once you've verified everything works, the difference is immediate:

| Metric | OpenClaw | ZeroClaw | |--------|----------|----------| | RAM usage | ~1.2 GB | ~4 MB | | Startup time | ~8 seconds | <10 ms | | Disk usage | ~800 MB | ~12 MB | | Dependencies | 1,200+ npm packages | 0 | | Open CVEs | 2+ critical | 0 |

Finishing Up

Once you've confirmed ZeroClaw is working correctly, stop OpenClaw and reclaim the resources:

```bash # Stop the OpenClaw service sudo systemctl stop openclaw

# Uninstall npm uninstall -g openclaw ```

Keep your `openclaw-backup.json` for a few weeks just in case, then delete it when you're confident you don't need it.

The migration takes about 20 minutes. The RAM you get back is immediate. The CVE exposure ends the moment OpenClaw stops running.

Stay in the Loop

Get updates on new releases, integrations, and Rust-powered agent infrastructure. No spam, unsubscribe anytime.