Plugin Entry Points
Every plugin exports a default entry object. The SDK provides three helpers for creating them.definePluginEntry
Import: openclaw/plugin-sdk/plugin-entry
For provider plugins, tool plugins, hook plugins, and anything that is not
a messaging channel.
idmust match youropenclaw.plugin.jsonmanifest.kindis for exclusive slots:"memory"or"context-engine".configSchemacan be a function for lazy evaluation.
defineChannelPluginEntry
Import: openclaw/plugin-sdk/core
Wraps definePluginEntry with channel-specific wiring. Automatically calls
api.registerChannel({ plugin }) and gates registerFull on registration mode.
setRuntimeis called during registration so you can store the runtime reference (typically viacreatePluginRuntimeStore).registerFullonly runs whenapi.registrationMode === "full". It is skipped during setup-only loading.
defineSetupPluginEntry
Import: openclaw/plugin-sdk/core
For the lightweight setup-entry.ts file. Returns just { plugin } with no
runtime or CLI wiring.
Registration mode
api.registrationMode tells your plugin how it was loaded:
defineChannelPluginEntry handles this split automatically. If you use
definePluginEntry directly for a channel, check mode yourself:
Plugin shapes
OpenClaw classifies loaded plugins by their registration behavior:
Use
openclaw plugins inspect <id> to see a plugin’s shape.
Related
- SDK Overview — registration API and subpath reference
- Runtime Helpers —
api.runtimeandcreatePluginRuntimeStore - Setup and Config — manifest, setup entry, deferred loading
- Channel Plugins — building the
ChannelPluginobject - Provider Plugins — provider registration and hooks