Plugin manifest
Every plugin must ship anopenclaw.plugin.json file in the plugin root. WednesdayAI uses this manifest to validate plugin configuration without executing plugin code. A missing or invalid manifest is treated as a plugin error and blocks config validation.
The manifest is distinct from the
package.json "openclaw" key. The manifest
(openclaw.plugin.json) drives config validation; the package.json key drives
workspace/pack discovery. A published plugin usually ships both.Required fields
Optional fields
The config schema
- Every plugin must ship a JSON Schema, even when it accepts no config.
- An empty schema is acceptable:
{ "type": "object", "additionalProperties": false }. - Set
additionalProperties: falseso typos in user config surface as errors instead of being silently ignored. - Schemas are validated at config read/write time, not at runtime.
- The manifest is plain JSON — no comments, no trailing commas.
uiHints
uiHints keys mirror your configSchema property names and control how the control UI renders each field:
Where config lands
Users set plugin config under the plugin’sid. Inside register, it arrives as api.pluginConfig (Record<string, unknown> | undefined). Always handle a missing or partial config gracefully.
Validation behaviour
- Unknown
channels.*config keys are errors unless the channel id is declared by a plugin manifest. plugins.entries.<id>,plugins.allow,plugins.deny, andplugins.slots.*must reference discoverable plugin ids. Unknown ids are errors.- If a plugin is installed but has a broken or missing manifest or schema, validation fails and Doctor reports the plugin error.
- If plugin config exists but the plugin is disabled, the config is kept and a warning is surfaced in Doctor and logs.
Native dependencies
If your plugin depends on native modules, document the build steps and any package-manager allowlist requirements (for example pnpmallow-build-scripts / pnpm rebuild <package>). openclaw plugins install runs dependency installs with --ignore-scripts, so postinstall build steps will not run automatically.