You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
memory-core plugin incorrectly attempts to use OpenAI embeddings even when memory.backend = "qmd" is configured, causing both gateway startup failures and runtime memory search failures. QMD
backend uses local embeddings (embeddinggemma-300M) and should not depend on OpenAI authentication at any point.
Steps to reproduce
Configure OpenClaw with QMD memory backend:
{
"memory": {
"backend": "qmd"
}
}
2. Ensure no OpenAI auth profile is configured:
```bash
openclaw auth list
# No openai:default profile present
Start the gateway:
openclaw gateway start
Observe gateway startup failure with OpenAI auth error
Apply "workaround" (add dummy profile + key) to get past startup
Attempt to use memory_search tool multiple times
Observe inconsistent behavior and eventual failure
Expected behavior
QMD backend should initialize successfully using local GGUF models for embeddings
No OpenAI authentication should be required at startup or runtime
All memory_search calls should use QMD's local embeddings
Gateway should start without OpenAI-related errors
Memory search should work entirely offline with QMD
Actual behavior
Startup Issue
Gateway fails to start unless OpenAI auth profile exists with a valid API key
Requires dummy workaround to bypass startup validation:
# Add profile to config
openclaw gateway config.patch --raw '{"auth":{"profiles":{"openai:default":{"provider":"openai","mode":"api_key"}}}}'# Set dummy key
openclaw auth set openai:default --key "sk-dummy-key-not-used"
Runtime Issue (CRITICAL)
Even with the workaround, memory search is broken:
Test sequence:
Query 1: "QMD memory backend configuration"
→ ✅ Uses provider: "qmd", returns results
Query 2: "token burn optimization model selection"
→ ❌ Attempts to use OpenAI embeddings
→ ❌ Fails with 401: "Incorrect API key provided: sk-dummy..."
→ ❌ Returns: "disabled": true
Query 3+: All subsequent searches
→ ❌ Memory search permanently disabled after first failure
→ ❌ Returns empty results with "disabled": true
Root cause:
memory-core is not respecting memory.backend = "qmd" configuration
Provider selection is inconsistent between calls
Falls back to OpenAI embeddings despite explicit QMD config
Once dummy key fails, memory search disables entirely
No automatic recovery
Environment
OpenClaw version: 2026.2.2-3
OS: Linux (Docker container)
Install method: Docker / gateway daemon
Config: memory.backend = "qmd", QMD installed and functional via CLI
QMD verification: qmd query "test" works correctly from shell
Logs or screenshots
Startup error (no workaround):
[memory-core] Initializing with backend: qmd
[auth] Validating embedding provider: openai
Error: No available auth profile for openai (all in cooldown or unavailable)
Gateway failed to start
Summary
memory-core plugin incorrectly attempts to use OpenAI embeddings even when
memory.backend = "qmd"is configured, causing both gateway startup failures and runtime memory search failures. QMDbackend uses local embeddings (embeddinggemma-300M) and should not depend on OpenAI authentication at any point.
Steps to reproduce
{ "memory": { "backend": "qmd" } }Expected behavior
Actual behavior
Startup Issue
Runtime Issue (CRITICAL)
Even with the workaround, memory search is broken:
Test sequence:
Root cause:
Environment
Logs or screenshots
Startup error (no workaround):
Runtime error (with workaround applied):
Additional context
Impact