Files
openclaw/docs/tools/plugin.md
2026-03-20 19:24:10 +00:00

8.8 KiB

summary, read_when, title, sidebarTitle
summary read_when title sidebarTitle
Install, configure, and manage OpenClaw plugins
Installing or configuring plugins
Understanding plugin discovery and load rules
Working with Codex/Claude-compatible plugin bundles
Plugins 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.\<id\>.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 for bundle details.

Official plugins

Installable (npm)

Plugin Package Docs
Matrix @openclaw/matrix Matrix
Microsoft Teams @openclaw/msteams Microsoft Teams
Nostr @openclaw/nostr Nostr
Voice Call @openclaw/voice-call Voice Call
Zalo @openclaw/zalo Zalo
Zalo Personal @openclaw/zalouser Zalo Personal

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.

Configuration

{
  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.\<id\> 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.\<id\>.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):

{
  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

openclaw plugins list                    # compact inventory
openclaw plugins inspect <id>            # deep detail
openclaw plugins inspect <id> --json     # machine-readable
openclaw plugins status                  # operational summary
openclaw plugins doctor                  # diagnostics

openclaw plugins install <npm-spec>      # install from npm
openclaw plugins install <path>          # install from local path
openclaw plugins install -l <path>       # link (no copy) for dev
openclaw plugins update <id>             # update one plugin
openclaw plugins update --all            # update all

openclaw plugins enable <id>
openclaw plugins disable <id>

See openclaw plugins CLI reference for full details.

Plugin API overview

Plugins export either a function or an object with register(api):

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