Migrate off TypeScript OpenClaw
openclaw-rs keeps the same openclaw.json config, Markdown skills, and plugin contract — so migrating from TypeScript OpenClaw is a runtime swap, not a rewrite.
- The TypeScript OpenClaw runtime ships hundreds of MB of node_modules into every deployment.
- GC pauses show up as tail-latency spikes under sustained agent load.
- Soft type guarantees turn hostile input into runtime crashes.
- Same config, same skills
- openclaw-rs reads the same ~/.openclaw/openclaw.json (JSON5) and the same Markdown skill format. Point the binary at your existing config directory.
- Plugins keep working
- openclaw-plugins runs each TypeScript plugin in its own process and dispatches the same 8 lifecycle hooks (BeforeMessage, AfterMessage, BeforeToolCall, AfterToolCall, SessionStart, SessionEnd, AgentResponse, Error) over an nng IPC bridge.
- One binary out the door
- cargo install openclaw-cli produces a single static binary — gateway, runtime, sandbox, dashboard, CLI — with no Node runtime to ship.
If you already run TypeScript OpenClaw, the framework isn’t the problem — the
Node.js runtime is. openclaw-rs is a Rust implementation of the same
architecture: the same configuration, the same Markdown skills, and the same
plugin contract, rebuilt around an append-only sled event store and
platform-specific sandboxing.
Because the plugin contract is preserved, migration is a runtime swap rather
than a rewrite. openclaw-plugins runs each existing TypeScript plugin in its
own process and communicates over nng using JSON-RPC, dispatching the same
eight lifecycle hooks your plugins already implement. Your skill Markdown and
your openclaw.json carry over untouched.
The payoff is operational: one static binary instead of a Node process plus
node_modules, memory safety without a GC, and defence-in-depth security —
input validation at every boundary, an OS-level sandbox, and an AES-256-GCM
credential store — without touching your plugin code.
Read the deeper argument on the why-rust page, see the migration write-up, or compare the two runtimes head-to-head on openclaw-rs vs TypeScript OpenClaw.
How it works, step by step
- 1 Install the Rust CLI
Run cargo install openclaw-cli to get the openclaw binary.
- 2 Point it at your config
openclaw-rs reads the same ~/.openclaw/openclaw.json and Markdown skills your TypeScript deployment already uses.
- 3 Bridge your plugins
Register existing TypeScript plugins; openclaw-plugins runs them over nng and dispatches the same 8 lifecycle hooks.
- 4 Run the gateway
Start openclaw gateway run and cut traffic over to the single binary.
FAQ
- Do I have to rewrite my plugins in Rust?
- No. Existing TypeScript OpenClaw plugins run unchanged over the nng IPC bridge in openclaw-plugins, which exposes the same 8 lifecycle hooks.
- Is the config format really identical?
- Yes — openclaw-rs reads the same ~/.openclaw/openclaw.json (JSON5) and the same Markdown skill format as TypeScript OpenClaw.