Skip to content

Plugin not recognized as memory plugin in OpenClaw 2026.4.x #109

@roamergu

Description

@roamergu

Issue: Plugin not recognized as memory plugin in OpenClaw 2026.4.x

Problem

The memos-cloud-openclaw-plugin is not recognized as a valid memory plugin when configured in plugins.slots.memory. OpenClaw doctor reports:

WARN: memory slot plugin not found or not marked as memory: memos-cloud-openclaw-plugin
No active memory plugin is registered for the current config.

Root Cause

The plugin is designed as a hook-only plugin using legacy hooks (before_agent_start, agent_end). While it correctly declares kind: "lifecycle" in the manifest, OpenClaw 2026.4.x requires memory slot plugins to:

  1. Declare kind: "memory" in openclaw.plugin.json
  2. Register via capability API: call api.registerContextEngine() in the plugin code

Currently the plugin only modifies the manifest kind but does not register the memory capability through the runtime API.

Current Workaround

Users can remove plugins.slots.memory configuration and let the plugin work as a hook-only plugin. The recall/add memory functionality still works through hooks, but it won't be recognized as an "official memory plugin" by openclaw doctor.

// Remove this from openclaw.json
"plugins": {
  "slots": {
    "memory": "memos-cloud-openclaw-plugin"
  }
}

Suggested Fix

Update the plugin to properly register as a memory capability:

  1. Change kind to "memory" in both openclaw.plugin.json and index.js export
  2. Add api.registerContextEngine() call in the register(api) function

Example (based on OpenClaw plugin architecture docs):

api.registerContextEngine("memos-cloud", () => ({
  info: {
    id: "memos-cloud",
    name: "MemOS Cloud Memory",
    ownsCompaction: false,
  },
  async ingest() {
    // optional: index memory files
    return { ingested: true };
  },
  async assemble({ messages }) {
    // inject recalled memories into prompt
    return { messages, estimatedTokens: 0 };
  },
  async compact(params) {
    // delegate to runtime if not owning compaction
    return await delegateCompactionToRuntime(params);
  },
}));

Environment

  • OpenClaw version: 2026.4.5
  • Plugin version: 0.1.12
  • Node: v22.22.2
  • OS: Linux

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions