Back to Hermes Agent

Mem0 Memory Provider

plugins/memory/mem0/README.md

2026.7.13.7 KB
Original Source

Mem0 Memory Provider

Server-side LLM fact extraction with semantic search and hybrid multi-signal retrieval via the Mem0 Platform v3 API.

Requirements

Setup

bash
hermes memory setup    # select "mem0"

Or manually:

bash
hermes config set memory.provider mem0
echo "MEM0_API_KEY=your-key" >> ~/.hermes/.env

Config

Behavioral settings live in $HERMES_HOME/mem0.json (set them via hermes memory setup). Only the secret MEM0_API_KEY belongs in ~/.hermes/.env.

KeyDefaultDescription
modeplatformplatform (Mem0 Cloud) or oss (self-hosted)
user_idhermes-userUser identifier on Mem0
agent_idhermesAgent identifier
reranktrueRerank search results for relevance (platform mode only)

OSS (Self-Hosted) Mode

Run Mem0 locally with your own LLM, embedder, and vector store.

Interactive Setup

bash
hermes memory setup
# Select "mem0" → "Open Source (self-hosted)"
# Follow prompts for LLM, embedder, and vector store

Agent-Driven Setup (Flags)

bash
hermes memory setup mem0 --mode oss \
  --oss-llm openai --oss-llm-key sk-... \
  --oss-vector qdrant

Supported Providers

ComponentProviders
LLMopenai, ollama
Embedderopenai, ollama
Vector Storeqdrant (local/server), pgvector

Flags Reference

FlagDescription
--modeplatform or oss
--oss-llmLLM provider (default: openai)
--oss-llm-keyLLM API key
--oss-embedderEmbedder provider (default: openai)
--oss-vectorVector store (default: qdrant)
--oss-vector-pathQdrant local path
--user-idUser identifier

Switching Modes

Platform to OSS

bash
hermes memory setup mem0 --mode oss --oss-llm-key sk-...

Or edit $HERMES_HOME/mem0.json directly:

json
{
  "mode": "oss",
  "oss": {
    "llm": {"provider": "openai", "config": {"model": "gpt-5-mini"}},
    "embedder": {"provider": "openai", "config": {"model": "text-embedding-3-small"}},
    "vector_store": {"provider": "qdrant", "config": {"path": "~/.hermes/mem0_qdrant"}}
  }
}

OSS to Platform

bash
hermes memory setup mem0 --mode platform --api-key sk-...

Dry Run (preview without writing)

bash
hermes memory setup mem0 --mode oss --oss-llm-key sk-... --dry-run

Tools

ToolDescription
mem0_listList all stored memories (paginated)
mem0_searchSemantic search by meaning
mem0_addStore a fact verbatim (no LLM extraction)
mem0_updateUpdate a memory's text by ID
mem0_deleteDelete a memory by ID

Troubleshooting

"Mem0 temporarily unavailable"

Circuit breaker tripped after 5 consecutive failures. Resets after 2 minutes.

  • Platform mode: Check API key and internet connectivity.
  • OSS mode: Check that your vector store (qdrant/pgvector) is running.

OSS: Qdrant connection refused

bash
# If using local Qdrant, check the storage path is writable:
ls -la ~/.hermes/mem0_qdrant

# If using Qdrant server, check it's reachable:
curl http://localhost:6333/healthz

OSS: PGVector connection refused

bash
# Verify PostgreSQL is running and accepting connections:
pg_isready -h localhost -p 5432

OSS: Ollama not reachable

bash
# Check Ollama is running:
curl http://localhost:11434/api/tags

Memories not appearing

  • mem0_add stores verbatim (no extraction). Use sync_turn for LLM extraction.
  • Search uses semantic matching — try broader queries.
  • Check user_id matches between sessions ($HERMES_HOME/mem0.json).