MemoryLake memory plugin for hermes-agent. Gives the agent persistent long-term memory, document retrieval, web search, and open data access via the MemoryLake platform API.
-
7 tools exposed to the LLM:
Tool Description memorylake_searchUnified semantic search across memories AND uploaded documents memorylake_storeSave facts, preferences, decisions to long-term memory memorylake_listList all stored memories for the user memorylake_forgetDelete a specific memory by ID memorylake_downloadGet pre-signed download URL for a document memorylake_web_searchWeb search across 12 domains (web, academic, news, code, ...) memorylake_open_dataSearch open datasets (arXiv, PubMed, SEC, FRED, patents, ...) -
Auto-capture: every conversation turn is sent to MemoryLake for server-side memory extraction (background, non-blocking).
-
Conflict detection: surfaces unresolved memory conflicts in search results.
-
Two recall modes:
tool_driven(default) — the model is instructed to callmemorylake_searchas its first action every turn, ensuring consistent memory recall regardless of model.prefetch— the framework runs a unified search before the LLM call and injects results into context automatically.
# Auto-detect hermes-agent location, symlink (dev mode)
./install.sh
# Explicit path
./install.sh /path/to/hermes-agent
# Copy files instead of symlink
./install.sh --copyThe plugin is installed to plugins/memory/memorylake/ inside hermes-agent.
Set in ~/.hermes/.env:
MEMORYLAKE_API_KEY=sk-... # Required — get at https://app.memorylake.ai
MEMORYLAKE_PROJECT_ID=proj-... # Required — from your MemoryLake projectThen enable the provider in ~/.hermes/config.yaml:
memory:
provider: memorylake| Variable | Default | Description |
|---|---|---|
MEMORYLAKE_HOST |
https://app.memorylake.ai |
MemoryLake server URL |
MEMORYLAKE_USER_ID |
default |
User identifier (auto-set to platform user ID in gateway mode) |
MEMORYLAKE_TOP_K |
5 |
Max recall results |
MEMORYLAKE_SEARCH_THRESHOLD |
0.3 |
Min similarity score (0-1) |
MEMORYLAKE_RERANK |
true |
Rerank search results |
MEMORYLAKE_MEMORY_MODE |
tool_driven |
Recall mode: tool_driven or prefetch |
MEMORYLAKE_AUTO_UPLOAD |
true |
Auto-upload user documents to MemoryLake |
MEMORYLAKE_WEB_SEARCH_INCLUDE_DOMAINS |
Comma-separated list of domains to include in web search | |
MEMORYLAKE_WEB_SEARCH_EXCLUDE_DOMAINS |
Comma-separated list of domains to exclude from web search | |
MEMORYLAKE_WEB_SEARCH_COUNTRY |
Country code for web search results | |
MEMORYLAKE_WEB_SEARCH_TIMEZONE |
Timezone for web search results |
Config can also be set via ~/.hermes/memorylake.json (overrides env vars).
The system prompt instructs the model to call memorylake_search as its first action on every turn. A per-turn reminder is also injected. This ensures consistent memory recall regardless of which LLM provider you use.
The framework calls prefetch() before each LLM call, running a parallel unified search (memories + documents) with the current user message. Results are injected into context automatically. The model does not need to call any tool to receive memory context.
Proprietary. Requires a MemoryLake API key.