#need help with compacting memory and flushing prompt

1 messages · Page 1 of 1 (latest)

crude harbor
#

I'm getting this error after applying Krill's prompt:
rror: Config validation failed: plugins.entries.memory-lancedb.config: invalid config: <root>: must have required property 'embedding'
02:04:06 [plugins] memory-lancedb failed to load from /opt/homebrew/lib/node_modules/openclaw/extensions/memory-lancedb/index.ts: Error: Cannot find module '@lancedb/lancedb'
Require stack:

  • /opt/homebrew/lib/node_modules/openclaw/extensions/memory-lancedb/index.ts

this is Krill's original prompt
openclaw config set agents.defaults.compaction.memoryFlush.enabled true --json
openclaw config set agents.defaults.memorySearch.experimental.sessionMemory true --json
openclaw config set agents.defaults.memorySearch.sources '["memory","sessions"]' --json
openclaw gateway restart

primal lintelBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

halcyon troutBOT
# crude harbor I'm getting this error after applying Krill's prompt: rror: Config validation fa...

That error isn’t caused by the memoryFlush / sessionMemory settings — it’s because you currently have the memory-lancedb plugin enabled in your config, but:

  1. its config is missing the required embedding block, and
  2. the bundled copy can’t load because @lancedb/lancedb isn’t installed.

You have two paths:

Option A (recommended if you just want memory flush + session transcript search)

Switch back to the default memory plugin and remove the broken LanceDB entry:

openclaw config set plugins.slots.memory "memory-core"
openclaw config unset plugins.entries["memory-lancedb"]
openclaw gateway restart

That should get you unblocked immediately.

#

Option B (if you actually want LanceDB auto-recall/capture)

Install the plugin (so it brings its deps), then configure the required embedding:

openclaw plugins install @openclaw/memory-lancedb
openclaw config set plugins.slots.memory "memory-lancedb"

# NOTE: apiKey is required by the plugin schema
openclaw config set plugins.entries["memory-lancedb"].config \
'{"embedding":{"apiKey":"YOUR_OPENAI_KEY","model":"text-embedding-3-small"}}' --json

openclaw gateway restart

Docs refs:

#

If Option A doesn’t fix it, paste:

openclaw --version
openclaw config get plugins.slots.memory
openclaw config get plugins.entries["memory-lancedb"]
crude harbor
#

i get this error
memory-core
zsh: no matches found: plugins.entries[memory-lancedb]

halcyon troutBOT
# crude harbor i get this error memory-core zsh: no matches found: plugins.entries[memory-lance...

That’s just zsh globbing the [...] in the config path.

In zsh, plugins.entries[memory-lancedb] is treated like a filename pattern, so it errors with no matches found.

Use quotes (or dot-notation) instead:

openclaw config get 'plugins.entries["memory-lancedb"]'
# or:
openclaw config get 'plugins.entries.memory-lancedb'

If you want to fully remove that LanceDB config (recommended since you’re on memory-core now):

openclaw config unset 'plugins.entries["memory-lancedb"]'
#
openclaw gateway restart

If after the restart you still see the old LanceDB validation error, paste the output of:

openclaw plugins list
openclaw config get plugins.slots.memory
openclaw config get 'plugins.entries["memory-lancedb"]'
nimble scarab
#

I have the same issue. I tried to unset memory-lancedb and restart, but I get the same error:

Config invalid
File: ~/.openclaw/openclaw.json
Problem:
  - plugins.entries.memory-lancedb.config: invalid config: <root>: must have required property 'embedding'
halcyon troutBOT
#

That error is coming from strict config validation: you have a plugins.entries.memory-lancedb block in ~/.openclaw/openclaw.json, and the memory-lancedb plugin schema requires:

  • plugins.entries.memory-lancedb.config.embedding (required)
  • and inside that, embedding.apiKey (required)

So even if you “don’t want LanceDB”, the config is still invalid as long as that entry exists without embedding.

0) First: what version are you on?

Please paste:

openclaw --version

1) Fastest fix (recommended): remove the broken memory-lancedb entry

Because config is invalid, many commands are gated; the “blessed” repair path is:

#
openclaw doctor --fix

Then restart:

openclaw gateway restart

If doctor --fix doesn’t remove it automatically, do it manually:

  1. Backup:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
#
  1. Edit ~/.openclaw/openclaw.json and delete the memory-lancedb entry under plugins.entries, and also make sure you’re not selecting it in the slot:

Change anything like this:

plugins: {
  slots: { memory: "memory-lancedb" },
  entries: {
    "memory-lancedb": { enabled: true, config: {} },
  },
}

…to this (simple + safe):

#
plugins: {
  slots: { memory: "memory-core" },
  entries: {
    // (no "memory-lancedb" entry here)
  },
}
  1. Restart gateway.

2) If you actually want memory-lancedb

Minimum config to satisfy the schema is:

plugins: {
#
  slots: { memory: "memory-lancedb" },
  entries: {
    "memory-lancedb": {
      enabled: true,
      config: {
        embedding: { apiKey: "${OPENAI_API_KEY}" },
      },
    },
  },
}

But note: a lot of people then hit the second error you quoted (Cannot find module '@lancedb/lancedb'). If you’re seeing that too, it means the LanceDB dependency isn’t available in your install, so the plugin can’t load even with valid config.

If you paste openclaw --version + the plugins: section from your openclaw.json (redact keys), I can tell you exactly which lines to remove/change.

nimble scarab
#

my version shows as: 2026.2.17

the plugins section of my config looks like this:

"plugins": {
    "entries": {
      ...,
      ...
      },
      "memory-lancedb": {
        "config": {
          "autoCapture": false,
          "autoRecall": true
        }
      }
    }

there's no section called slots and no other reference to memory-lancedb elsewhere in the config

halcyon troutBOT
#

On 2026.2.17 this is expected behavior: if plugins.entries.memory-lancedb exists, its config must match that plugin’s schema, and for memory-lancedb the schema requires:

  • config.embedding (required)
  • config.embedding.apiKey (required)

Your current block only has autoCapture/autoRecall, so validation fails with:

plugins.entries.memory-lancedb.config: must have required property 'embedding'

Fix (recommended): remove the memory-lancedb entry entirely

Since you’re not trying to use LanceDB, the clean fix is to delete the whole entry from ~/.openclaw/openclaw.json:

  1. Open ~/.openclaw/openclaw.json
  2. Under plugins.entries, delete the entire "memory-lancedb": { ... } object (not just fields inside it)
  3. Save, then:
#
openclaw gateway restart

If you want to make it extra explicit that you’re using the default memory plugin, add this too:

plugins: {
  slots: { memory: "memory-core" },
  entries: {
    // no memory-lancedb here
  }
}

Why “disable” didn’t help

Even if the plugin isn’t referenced elsewhere, the config validator still validates any present plugins.entries.<id>.config against that plugin’s schema. So leaving the entry around with an incomplete config keeps the whole config invalid.

#

Quick sanity check

Can you paste ~15–30 lines around the plugins section (including the opening/closing braces)? Your snippet looks like the braces might be slightly off (hard to tell from the ellipses), and I want to make sure memory-lancedb is actually nested under plugins.entries in your real file.

nimble scarab
#

removing the memory-lancedb entry from the config file solved the issue.

but then my attempt to add slots: { memory: "memory-core" }, caused more problems, so I left it out