--- summary: "Install, configure, and manage OpenClaw plugins" read_when: - Installing or configuring plugins - Understanding plugin discovery and load rules - Working with Codex/Claude-compatible plugin bundles title: "Plugins" sidebarTitle: "Install and Configure" --- # Plugins Plugins extend OpenClaw with new capabilities: channels, model providers, tools, skills, speech, image generation, and more. Some plugins are **core** (shipped with OpenClaw), others are **external** (published on npm by the community). ## Quick start ```bash openclaw plugins list ``` ```bash # From npm openclaw plugins install @openclaw/voice-call # From a local directory or archive openclaw plugins install ./my-plugin openclaw plugins install ./my-plugin.tgz ``` ```bash openclaw gateway restart ``` Then configure under `plugins.entries.\.config` in your config file. ## Plugin types OpenClaw recognizes two plugin formats: | Format | How it works | Examples | | ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ | | **Native** | `openclaw.plugin.json` + runtime module; executes in-process | Official plugins, community npm packages | | **Bundle** | Codex/Claude/Cursor-compatible layout; mapped to OpenClaw features | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` | Both show up under `openclaw plugins list`. See [Plugin Bundles](/plugins/bundles) for bundle details. ## Official plugins ### Installable (npm) | Plugin | Package | Docs | | --------------- | ---------------------- | ------------------------------------ | | Matrix | `@openclaw/matrix` | [Matrix](/channels/matrix) | | Microsoft Teams | `@openclaw/msteams` | [Microsoft Teams](/channels/msteams) | | Nostr | `@openclaw/nostr` | [Nostr](/channels/nostr) | | Voice Call | `@openclaw/voice-call` | [Voice Call](/plugins/voice-call) | | Zalo | `@openclaw/zalo` | [Zalo](/channels/zalo) | | Zalo Personal | `@openclaw/zalouser` | [Zalo Personal](/plugins/zalouser) | ### Core (shipped with OpenClaw) `anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`, `huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `modelstudio`, `moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`, `qianfan`, `qwen-portal-auth`, `synthetic`, `together`, `venice`, `vercel-ai-gateway`, `volcengine`, `xiaomi`, `zai` - `memory-core` — bundled memory search (default via `plugins.slots.memory`) - `memory-lancedb` — install-on-demand long-term memory with auto-recall/capture (set `plugins.slots.memory = "memory-lancedb"`) `elevenlabs`, `microsoft` - `copilot-proxy` — VS Code Copilot Proxy bridge (disabled by default) Looking for third-party plugins? See [Community Plugins](/plugins/community). ## Configuration ```json5 { plugins: { enabled: true, allow: ["voice-call"], deny: ["untrusted-plugin"], load: { paths: ["~/Projects/oss/voice-call-extension"] }, entries: { "voice-call": { enabled: true, config: { provider: "twilio" } }, }, }, } ``` | Field | Description | | ---------------- | --------------------------------------------------------- | | `enabled` | Master toggle (default: `true`) | | `allow` | Plugin allowlist (optional) | | `deny` | Plugin denylist (optional; deny wins) | | `load.paths` | Extra plugin files/directories | | `slots` | Exclusive slot selectors (e.g. `memory`, `contextEngine`) | | `entries.\` | Per-plugin toggles + config | Config changes **require a gateway restart**. - **Disabled**: plugin exists but enablement rules turned it off. Config is preserved. - **Missing**: config references a plugin id that discovery did not find. - **Invalid**: plugin exists but its config does not match the declared schema. ## Discovery and precedence OpenClaw scans for plugins in this order (first match wins): `plugins.load.paths` — explicit file or directory paths. `\/.openclaw/extensions/*.ts` and `\/.openclaw/extensions/*/index.ts`. `~/.openclaw/extensions/*.ts` and `~/.openclaw/extensions/*/index.ts`. Shipped with OpenClaw. Many are enabled by default (model providers, speech). Others require explicit enablement. ### Enablement rules - `plugins.enabled: false` disables all plugins - `plugins.deny` always wins over allow - `plugins.entries.\.enabled: false` disables that plugin - Workspace-origin plugins are **disabled by default** (must be explicitly enabled) - Bundled plugins follow the built-in default-on set unless overridden - Exclusive slots can force-enable the selected plugin for that slot ## Plugin slots (exclusive categories) Some categories are exclusive (only one active at a time): ```json5 { plugins: { slots: { memory: "memory-core", // or "none" to disable contextEngine: "legacy", // or a plugin id }, }, } ``` | Slot | What it controls | Default | | --------------- | --------------------- | ------------------- | | `memory` | Active memory plugin | `memory-core` | | `contextEngine` | Active context engine | `legacy` (built-in) | ## CLI reference ```bash openclaw plugins list # compact inventory openclaw plugins inspect # deep detail openclaw plugins inspect --json # machine-readable openclaw plugins status # operational summary openclaw plugins doctor # diagnostics openclaw plugins install # install from npm openclaw plugins install # install from local path openclaw plugins install -l # link (no copy) for dev openclaw plugins update # update one plugin openclaw plugins update --all # update all openclaw plugins enable openclaw plugins disable ``` See [`openclaw plugins` CLI reference](/cli/plugins) for full details. ## Plugin API overview Plugins export either a function or an object with `register(api)`: ```typescript export default definePluginEntry({ id: "my-plugin", name: "My Plugin", register(api) { api.registerProvider({ /* ... */ }); api.registerTool({ /* ... */ }); api.registerChannel({ /* ... */ }); }, }); ``` Common registration methods: | Method | What it registers | | ------------------------------------ | -------------------- | | `registerProvider` | Model provider (LLM) | | `registerChannel` | Chat channel | | `registerTool` | Agent tool | | `registerHook` / `on(...)` | Lifecycle hooks | | `registerSpeechProvider` | Text-to-speech / STT | | `registerMediaUnderstandingProvider` | Image/audio analysis | | `registerImageGenerationProvider` | Image generation | | `registerWebSearchProvider` | Web search | | `registerHttpRoute` | HTTP endpoint | | `registerCommand` / `registerCli` | CLI commands | | `registerContextEngine` | Context engine | | `registerService` | Background service | ## Related - [Building Plugins](/plugins/building-plugins) — create your own plugin - [Plugin Bundles](/plugins/bundles) — Codex/Claude/Cursor bundle compatibility - [Plugin Manifest](/plugins/manifest) — manifest schema - [Registering Tools](/plugins/building-plugins#registering-agent-tools) — add agent tools in a plugin - [Plugin Internals](/plugins/architecture) — capability model and load pipeline - [Community Plugins](/plugins/community) — third-party listings