Files
hermes-agent/plugins/memory/retaindb
Teknium 187e90e425 refactor: replace inline HERMES_HOME re-implementations with get_hermes_home()
16 callsites across 14 files were re-deriving the hermes home path
via os.environ.get('HERMES_HOME', ...) instead of using the canonical
get_hermes_home() from hermes_constants. This breaks profiles — each
profile has its own HERMES_HOME, and the inline fallback defaults to
~/.hermes regardless.

Fixed by importing and calling get_hermes_home() at each site. For
files already inside the hermes process (agent/, hermes_cli/, tools/,
gateway/, plugins/), this is always safe. Files that run outside the
process context (mcp_serve.py, mcp_oauth.py) already had correct
try/except ImportError fallbacks and were left alone.

Skipped: hermes_constants.py (IS the implementation), env_loader.py
(bootstrap), profiles.py (intentionally manipulates the env var),
standalone scripts (optional-skills/, skills/), and tests.
2026-04-07 10:40:34 -07:00
..

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