- SQLite write queue: thread-local connection pooling instead of creating+closing a new connection per operation - Prefetch threads: join previous batch before spawning new ones to prevent thread accumulation on rapid queue_prefetch() calls - Shutdown: join prefetch threads before stopping write queue - Add 73 tests covering _Client HTTP payloads, _WriteQueue crash recovery & connection reuse, _build_overlay deduplication, RetainDBMemoryProvider lifecycle/tools/prefetch/hooks, thread accumulation guard, and reasoning_level heuristic
RetainDB Memory Provider
Cloud memory API with hybrid search (Vector + BM25 + Reranking) and 7 memory types.
Requirements
- RetainDB account ($20/month) from retaindb.com
pip install requests
Setup
hermes memory setup # select "retaindb"
Or manually:
hermes config set memory.provider retaindb
echo "RETAINDB_API_KEY=your-key" >> ~/.hermes/.env
Config
All config via environment variables in .env:
| Env Var | Default | Description |
|---|---|---|
RETAINDB_API_KEY |
(required) | API key |
RETAINDB_BASE_URL |
https://api.retaindb.com |
API endpoint |
RETAINDB_PROJECT |
auto (profile-scoped) | Project identifier |
Tools
| Tool | Description |
|---|---|
retaindb_profile |
User's stable profile |
retaindb_search |
Semantic search |
retaindb_context |
Task-relevant context |
retaindb_remember |
Store a fact with type + importance |
retaindb_forget |
Delete a memory by ID |