for · typescript teams

Already on TypeScript OpenClaw? The migration is shorter than you think.

Same config, same skills, same plugin contract. Drop your existing plugins into openclaw-rs and they keep running. The runtime is what changes.

What stays the same

  • Config~/.openclaw/openclaw.json JSON5 schema is identical.
  • Skills — Markdown + YAML frontmatter loader is identical.
  • Plugin contract — 8 lifecycle hooks, same names, same payloads.
  • Event format — append-only log on disk is wire-compatible.
  • Workspace~/.openclaw/ directory layout is the same.

What changes

  • Runtime — Rust binary instead of Node.js process.
  • Deploy size — ~15 MB instead of 100 MB+.
  • Cold start — sub-second instead of seconds.
  • Memory baseline — < 20 MB idle, predictable under load.
  • Sandboxing — platform-native (bwrap / sandbox-exec / Job Objects) instead of process-level.
  • Credential storage — AES-256-GCM file-backed instead of env vars or OS keyring.

What about my plugins?

openclaw-plugins runs each TypeScript plugin in its own Node subprocess and dispatches the 8 lifecycle hooks over an nng IPC channel using JSON-RPC. Your existing code doesn't change.

// existing plugin — keeps working
export default [object Object];

Plugin discovery scans for package.json markers under ~/.openclaw/plugins/, same as TS OpenClaw.

What about my channel adapters?

This is where the compatibility gap is honest:

  • Telegram — full Rust adapter ships today.
  • Discord, Slack, Signal, Matrix, WhatsApp — roadmap items.

If you depend on a channel that hasn't shipped in Rust yet, run a hybrid: keep the TS gateway for that channel, run the Rust gateway for everything else, point them at the same workspace.

What about my providers?

Today:

  • Anthropic — Claude 3.5 Sonnet, Haiku, Opus, with SSE streaming and tool use.
  • OpenAI — GPT-4o, GPT-4, GPT-3.5, with function calling and Azure base URL support.
  • Google Gemini — roadmap.
  • Ollama — roadmap.

If you depend on Gemini or Ollama, either wait or contribute.

The migration in five steps

  1. Install: cargo install openclaw-cli.
  2. Validate config: openclaw config validate ~/.openclaw/openclaw.json.
  3. Start the Rust gateway on a different port: openclaw gateway run --port 18790.
  4. Smoke-test — point a test session at the Rust gateway, verify your plugins fire, verify event history reads correctly.
  5. Cut over — switch production traffic. The TS gateway is still installed; you can roll back instantly.

The deep-dive

The migration article walks each step in detail, including the side-by-side hybrid pattern for teams that need to migrate channel-by-channel.

When *not* to migrate yet

  • You depend on Google Gemini or Ollama → wait for the providers.
  • You depend on Discord/Slack/Signal/Matrix/WhatsApp natively → stay on TS, run a hybrid, or write the adapter (the trait is stable).
  • You're in active prototyping and the TS dev velocity is what matters → stay on TS.

When you should

  • Memory pressure or GC tails are biting in production.
  • Deployment size or cold start is hurting you.
  • You want defence-in-depth at the runtime level.
  • You want a single-binary deployment story.

The cost

Honest list: zero plugin rewrites, zero config schema migration, zero skill format migration. A new binary on your hosts, a different supervisor unit (or use openclaw daemon install), and the time to smoke-test before cutover.

For most teams, that's a one-day project.