Skip to content

[Bug]: 2026.4.27 builtin memory can fail because plugin-runtime-deps snapshot misses sqlite-vec #74692

@mozi1924

Description

@mozi1924

Summary

After upgrading to OpenClaw 2026.4.27, builtin memory/vector search can fail because the plugin runtime dependency snapshot under ~/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-*/node_modules does not contain sqlite-vec, even though the main global OpenClaw install does.

This breaks memory startup/search with:

[memory] sqlite-vec unavailable: Cannot find package 'sqlite-vec' imported from /Users/.../.openclaw/plugin-runtime-deps/openclaw-2026.4.27-.../dist/engine-storage-....js
Did you mean to import "sqlite-vec/index.cjs"?

Environment

  • OpenClaw: 2026.4.27
  • Host: macOS arm64
  • Install path: /opt/homebrew/lib/node_modules/openclaw
  • Runtime deps path: ~/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-*/
  • Memory backend: builtin

What I observed

The main OpenClaw install contains:

  • /opt/homebrew/lib/node_modules/openclaw/node_modules/sqlite-vec
  • /opt/homebrew/lib/node_modules/openclaw/node_modules/sqlite-vec-darwin-arm64

But the generated plugin runtime deps snapshot for 2026.4.27 did not contain those packages under:

  • ~/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-*/node_modules

That caused builtin memory/vector search to fail until the missing packages were manually linked into the runtime-deps snapshot.

Repro

  1. Upgrade to 2026.4.27
  2. Use builtin memory with vector search enabled
  3. Run memory startup/status/search
  4. Observe runtime error above
  5. Check runtime deps dir and note that sqlite-vec is missing there, while present in the main install

Expected

sqlite-vec should resolve correctly from the plugin runtime used by builtin memory on macOS arm64.

Actual

The runtime snapshot used by memory cannot import sqlite-vec and vector memory initialization/search fails.

Local workaround

I restored memory by manually linking the missing packages into the plugin runtime deps snapshot:

BASE="$HOME/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-da6bdffc3d96/node_modules"
mkdir -p "$BASE"
ln -s /opt/homebrew/lib/node_modules/openclaw/node_modules/sqlite-vec "$BASE/sqlite-vec"
ln -s /opt/homebrew/lib/node_modules/openclaw/node_modules/sqlite-vec-darwin-arm64 "$BASE/sqlite-vec-darwin-arm64"

After that, openclaw memory status reported vector search as ready again:

Vector: ready
Vector dims: 2560
Vector path: /opt/homebrew/lib/node_modules/openclaw/node_modules/sqlite-vec-darwin-arm64/vec0.dylib

Extra note

In my case I also hit a separate local config/model-name mismatch at the same time (memorySearch.model still pointed at an old embedding model id while my embeddings server only exposed a new served model name), but that was independent of this sqlite-vec runtime packaging/resolution failure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions