Summary
When memorySearch.provider: "local" is configured and the CLI (openclaw memory index, openclaw memory status) correctly uses local embeddings, the memory_search tool still uses Gemini embeddings silently.
Environment
- OpenClaw: 2026.2.26
- OS: macOS 15.3 (Sequoia) arm64
- Gateway: local launchctl service
Config
agents: {
defaults: {
memorySearch: {
provider: "local",
fallback: "none",
local: {
modelPath: "/Users/brt-bot/.node-llama-cpp/models/embeddinggemma-300m.gguf"
},
query: { hybrid: { enabled: true } }
}
}
}
What works (CLI)
openclaw memory status shows: Provider: local (requested: local)
openclaw memory index --verbose uses local embeddings successfully (multiple "batch start" messages)
- Manual node-llama-cpp test produces 768-dim embeddings with Metal GPU
What fails (tool)
Calling memory_search returns results with provider: "gemini" and model: "gemini-embedding-001":
{
"results": [...],
"provider": "gemini",
"model": "gemini-embedding-001",
"mode": "hybrid"
}
This happens even with fallback: "none" set.
Expected behavior
memory_search tool should use local embeddings when memorySearch.provider: "local" is configured.
Actual behavior
The tool appears to bypass the local provider and use Gemini (likely auto-selected from resolved API key).
Difference from #8131
Issue #8131 was about auth errors when using local. That issue is closed. This is different: the tool works but silently uses the wrong provider.
Related
Summary
When
memorySearch.provider: "local"is configured and the CLI (openclaw memory index,openclaw memory status) correctly uses local embeddings, thememory_searchtool still uses Gemini embeddings silently.Environment
Config
What works (CLI)
openclaw memory statusshows:Provider: local (requested: local)openclaw memory index --verboseuses local embeddings successfully (multiple "batch start" messages)What fails (tool)
Calling
memory_searchreturns results withprovider: "gemini"andmodel: "gemini-embedding-001":{ "results": [...], "provider": "gemini", "model": "gemini-embedding-001", "mode": "hybrid" }This happens even with
fallback: "none"set.Expected behavior
memory_searchtool should use local embeddings whenmemorySearch.provider: "local"is configured.Actual behavior
The tool appears to bypass the local provider and use Gemini (likely auto-selected from resolved API key).
Difference from #8131
Issue #8131 was about auth errors when using local. That issue is closed. This is different: the tool works but silently uses the wrong provider.
Related