- Add MEM0_CASE_INSENSITIVE config option (default: false) - When enabled, searches with both original and lowercase query - Merges results, keeping highest score for each memory - Fixes case sensitivity issues with Qdrant embeddings - Generalize after-install.md with placeholders instead of personal values
4.3 KiB
Mem0 Local Plugin Installed ✓
Quick Start
1. Verify Mem0 Server is Running
curl http://localhost:8000/health
If not running:
docker run -d -p 8000:8000 mem0ai/mem0:latest
For your setup:
curl http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>/health
2. Configure the Plugin
The installer should have prompted you for configuration. To verify or modify:
nano ~/.hermes/.env
Add or update:
MEM0_BASE_URL=http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>
MEM0_USER_ID=<YOUR_USER_ID>
MEM0_AGENT_ID=hermes
Or create a config file:
cat > ~/.hermes/mem0-local.json << 'EOF'
{
"base_url": "http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>",
"user_id": "<YOUR_USER_ID>",
"agent_id": "hermes",
"rerank": true,
"timeout": 10.0
}
EOF
3. Restart Hermes Gateway
hermes gateway restart
4. Activate Memory Provider
hermes memory mem0-local
Verify it's active:
hermes memory status
Configuration
The plugin supports two configuration methods that work together:
Method 1: Environment Variables (Primary)
Edit ~/.hermes/.env:
MEM0_BASE_URL=http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>
MEM0_USER_ID=<YOUR_USER_ID>
MEM0_AGENT_ID=hermes
Method 2: Config File (Overrides)
Create ~/.hermes/mem0-local.json to override specific settings:
{
"base_url": "http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>",
"user_id": "<YOUR_USER_ID>",
"agent_id": "hermes",
"rerank": true,
"timeout": 10.0
}
Note: Config file values override environment variables. Use .env for defaults and JSON for overrides.
Key variables:
MEM0_BASE_URL— Local server URL (default:http://localhost:8000)MEM0_USER_ID— User identifier for memory scoping (default:hermes-user)MEM0_AGENT_ID— Agent identifier (default:hermes)MEM0_CASE_INSENSITIVE— Enable case-insensitive search (default:false)rerank— Enable reranking for higher precision (default:true)timeout— Request timeout in seconds (default:10.0)
How It Works
Memory injection happens automatically without tool calls:
- You send a message
- Plugin searches Mem0 in background (~40ms)
- Relevant memories injected into LLM prompt
- LLM responds with full context
Example: If you stored "My favorite anime is Naruto", then ask "Is there a new episode of my favorite anime?", the LLM will receive:
Is there a new episode of my favorite anime?
## Mem0 Memory
- My favorite anime is Naruto
No tool call needed — instant context!
Migration from Hardcoded Config
If you had a previous hardcoded configuration like:
mem0:
enabled: true
api_url: http://localhost:8889
user_id: <your_user_id>
collection_name: hermes_memory
mode: local
transparent:
enabled: true
search_threshold: 0.6
max_results: 3
include_match_score: true
injection_format: system_context
Is now replaced by the plugin with:
- Same functionality via
MEM0_BASE_URL,MEM0_USER_ID - Transparent memory injection via
queue_prefetch()+prefetch() - Configurable via
~/.hermes/mem0-local.json
Note: The plugin uses a slightly different approach - memories are injected into the user message (not system prompt) to preserve prompt caching efficiency.
Next Steps
- Start a conversation and mention personal facts
- Mem0 will automatically extract and store them
- Try asking questions that require remembering past conversations
- Use
mem0_profiletool to see all stored memories
Troubleshooting
If memory doesn't work:
-
Check server connectivity:
curl http://<YOUR_MEM0_HOST>:<YOUR_MEM0_PORT>/health -
Check gateway logs:
hermes gateway logs -
Verify provider is active:
hermes memory status -
Check plugin is loaded:
hermes plugins list -
Test manual memory operations:
# In a conversation, ask Hermes to: - "Store that my favorite color is blue" - "What's my favorite color?"
Available Tools
| Tool | Description |
|---|---|
mem0_profile |
Retrieve all stored memories |
mem0_search |
Search memories semantically |
mem0_conclude |
Store a fact explicitly |
Enjoy your private, self-hosted memory! 🚀