- Server recovery after 7-day outage - OpenClaw updated to 2026.2.6-3 - Fixed Proxmox noVNC (Wayland→X11, auto-login) - ChromaDB memory plugin live (LXC at 192.168.86.25) - Google Chrome installed, browser tool working - Built x-feed-scraper.sh for automated X feed capture - Sub-agent parallel analysis pipeline tested - Memory files updated
3.7 KiB
3.7 KiB
name, description, version, author, homepage, metadata, tags
| name | description | version | author | homepage | metadata | tags | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| chromadb-memory | Long-term memory via ChromaDB with local Ollama embeddings. Auto-recall injects relevant context every turn. No cloud APIs required — fully self-hosted. | 1.0.0 | matts | https://github.com/openclaw/openclaw |
|
|
ChromaDB Memory
Long-term semantic memory backed by ChromaDB and local Ollama embeddings. Zero cloud dependencies.
What It Does
- Auto-recall: Before every agent turn, queries ChromaDB with the user's message and injects relevant context automatically
chromadb_searchtool: Manual semantic search over your ChromaDB collection- 100% local: Ollama (nomic-embed-text) for embeddings, ChromaDB for vector storage
Prerequisites
-
ChromaDB running (Docker recommended):
docker run -d --name chromadb -p 8100:8000 chromadb/chroma:latest -
Ollama with an embedding model:
ollama pull nomic-embed-text -
Indexed documents in ChromaDB. Use any ChromaDB-compatible indexer to populate your collection.
Install
# 1. Copy the plugin extension
mkdir -p ~/.openclaw/extensions/chromadb-memory
cp {baseDir}/scripts/index.ts ~/.openclaw/extensions/chromadb-memory/
cp {baseDir}/scripts/openclaw.plugin.json ~/.openclaw/extensions/chromadb-memory/
# 2. Get your collection ID
curl -s http://localhost:8100/api/v2/tenants/default_tenant/databases/default_database/collections | python3 -c "import json,sys; [print(f'{c[\"id\"]} {c[\"name\"]}') for c in json.load(sys.stdin)]"
# 3. Add to your OpenClaw config (~/.openclaw/openclaw.json):
{
"plugins": {
"entries": {
"chromadb-memory": {
"enabled": true,
"config": {
"chromaUrl": "http://localhost:8100",
"collectionId": "YOUR_COLLECTION_ID",
"ollamaUrl": "http://localhost:11434",
"embeddingModel": "nomic-embed-text",
"autoRecall": true,
"autoRecallResults": 3,
"minScore": 0.5
}
}
}
}
}
# 4. Restart the gateway
openclaw gateway restart
Config Options
| Option | Default | Description |
|---|---|---|
chromaUrl |
http://localhost:8100 |
ChromaDB server URL |
collectionId |
required | ChromaDB collection UUID |
ollamaUrl |
http://localhost:11434 |
Ollama API URL |
embeddingModel |
nomic-embed-text |
Ollama embedding model |
autoRecall |
true |
Auto-inject relevant memories each turn |
autoRecallResults |
3 |
Max auto-recall results per turn |
minScore |
0.5 |
Minimum similarity score (0-1) |
How It Works
- You send a message
- Plugin embeds your message via Ollama (nomic-embed-text, 768 dimensions)
- Queries ChromaDB for nearest neighbors
- Results above
minScoreare injected into the agent's context as<chromadb-memories> - Agent responds with relevant long-term context available
Token Cost
Auto-recall adds ~275 tokens per turn worst case (3 results × ~300 chars + wrapper). Against a 200K+ context window, this is negligible.
Tuning
- Too noisy? Raise
minScoreto 0.6 or 0.7 - Missing context? Lower
minScoreto 0.4, increaseautoRecallResultsto 5 - Want manual only? Set
autoRecall: false, usechromadb_searchtool
Architecture
User Message → Ollama (embed) → ChromaDB (query) → Context Injection
↓
Agent Response
No OpenAI. No cloud. Your memories stay on your hardware.