Ten crates, one workspace.
Each crate is independently usable. The CLI assembles the common deployment shape; embedders can pull in just the pieces they need.
| Crate | Status | Role | Links |
|---|---|---|---|
openclaw-core | stable | Foundation: types, JSON5 config loader, sled-backed event store, AES-256-GCM credential store, OAuth token management, input validation. | crates.io ↗ docs.rs ↗ |
openclaw-ipc | stable | IPC message types and nng transport — the wire format for the TypeScript plugin bridge. | crates.io ↗ docs.rs ↗ |
openclaw-providers | stable | Anthropic + OpenAI clients with SSE streaming, tool use, and configurable base URLs. | crates.io ↗ docs.rs ↗ |
openclaw-agents | stable | Agent runtime, platform-specific sandbox (bwrap / sandbox-exec / Job Objects), tool registry, node-based workflow engine. | crates.io ↗ docs.rs ↗ |
openclaw-channels | partial | Channel traits + allowlist + routing. Telegram adapter complete; Discord, Slack, Signal, Matrix, WhatsApp planned. | |
openclaw-gateway | stable | axum HTTP/WebSocket server with JSON-RPC 2.0 dispatch, rate-limit and auth middleware, embedded Vue 3 dashboard. | crates.io ↗ docs.rs ↗ |
openclaw-plugins | partial | Plugin API + nng-based TypeScript bridge. WASM runtime (wasmtime vs wasmer) under evaluation. | |
openclaw-cli | stable | Top-level CLI: onboard, gateway, doctor, status, config, sessions, channels, daemon, completion. | crates.io ↗ |
openclaw-node | stable | napi-rs bindings: AnthropicProvider, OpenAIProvider, NodeEventStore, CredentialStore, ToolRegistry. Pre-built binaries on npm. | npm ↗ |
openclaw-ui | stable | Vue 3 + Vite dashboard. Served by openclaw-gateway at /. No external admin to deploy. |
Reading the table
Stable means the public API is settled and we don't
intend to break it without bumping a major. Partial
means the crate is functional but a known piece is roadmap-tracked —
for openclaw-channels that's "more adapters", for
openclaw-plugins that's "WASM runtime alongside the
TypeScript IPC bridge that ships today".
The five layers
Foundation — openclaw-core +
openclaw-ipc. Types, config, events, secrets, validation, the
IPC wire format. No external dependencies above this layer.
Integration — openclaw-providers +
openclaw-agents. Provider clients with streaming. Agent
runtime with sandboxing, tool registry, workflow engine.
Services — openclaw-channels +
openclaw-plugins. Channel adapters. Plugin bridge.
Gateway — openclaw-gateway. The
JSON-RPC server + WebSocket handler + embedded dashboard.
Surfaces — openclaw-cli +
openclaw-node + openclaw-ui. The CLI, the
Node bindings, the Vue 3 dashboard.
Picking what you need
If you're deploying a runtime, install
openclaw-cli — it bundles the gateway, the runtime, and the
dashboard.
If you're embedding agent calls in your Rust service,
depend on openclaw-providers + openclaw-agents
directly.
If you're calling Rust from Node.js, npm-install
openclaw-node.
If you're building a new channel adapter, the
Channel trait lives in openclaw-channels; the
Telegram adapter is the reference implementation.
If you're building a TypeScript plugin, the contract
lives in openclaw-plugins — and the same plugin works against
TypeScript OpenClaw and openclaw-rs.