| name | creating-nemoclaw-plugins |
| description | Builds OpenClaw plugins for NemoClaw — native plugins with manifests and runtime modules, or bundle plugins in Codex/Claude/Cursor format. Use when extending NemoClaw agents with new providers, tools, channels, or skills. |
Creating NemoClaw Plugins
OpenClaw plugins extend agent capabilities by bundling channels, model providers, tools, and skills into installable packages. Plugins come in two formats.
Choose Plugin Type
Creating new capabilities from scratch? Use a native plugin.
Adapting an existing Codex/Claude/Cursor plugin? Use a bundle plugin.
Native Plugins
Native plugins use a openclaw.plugin.json manifest and a runtime module that registers capabilities.
Structure
my-plugin/
├── openclaw.plugin.json # Manifest
├── index.ts # Runtime entry point
├── package.json # npm package config
└── skills/ # Optional bundled skills
Manifest Template
Use the bundled template: native-manifest.json
Registration API
import { definePluginEntry } from "@openclaw/sdk";
export default definePluginEntry({
id: "my-plugin",
register(api) {
api.registerProvider({ });
api.registerTool({ });
api.registerChannel({ });
}
});
See plugin-api.md for the full registration API.
Bundle Plugins
Bundle plugins use directory layouts compatible with Codex, Claude, or Cursor:
.codex-plugin/ # Codex-compatible
.claude-plugin/ # Claude-compatible
.cursor-plugin/ # Cursor-compatible
See bundle-structure.md for layout details.
Development Workflow
All plugin management commands run inside the sandbox:
nemoclaw <name> connect
openclaw plugins install -l /path/to/my-plugin
openclaw plugins doctor
openclaw plugins inspect my-plugin
openclaw plugins enable my-plugin
openclaw plugins disable my-plugin
Persisting Plugins Across Restarts
Plugins installed inside the sandbox are lost on restart unless:
- The plugin directory is mounted via filesystem policy (
read_only or read_write path)
- The plugin is included in the sandbox image build
- The plugin is auto-installed via sandbox startup script