FishMem for Hermes Agent
Add the FishMem MCP server to the Hermes autonomous agent runtime for memory across runs.
Hermes Agent is an autonomous agent runtime. Configure it to use the FishMem MCP server and your agents gain memory that survives across runs — they recall facts from earlier tasks instead of starting cold each time, and write down what they learn as they go.
Hermes loads tools from its agent config. You declare the FishMem MCP server as
one tool source, using the same npx -y @fishmem/mcp command as every other
plugin.
Setup
Get an API key
Create a project key in the dashboard. It looks
like fm_.... Keep it server-side — see Authentication.
Add the server to the agent config
Add a fishmem entry under the agent's MCP servers:
{
"agent": {
"name": "assistant",
"mcpServers": {
"fishmem": {
"command": "npx",
"args": ["-y", "@fishmem/mcp"],
"env": {
"FISHMEM_API_KEY": "<your-key>",
"FISHMEM_USER_ID": "alex"
}
}
}
}
}The command is identical across FishMem plugins — npx -y @fishmem/mcp. Only
the surrounding config shape is specific to Hermes.
Verify
Start the agent and inspect its tool list. The fishmem server should provide
search_memory, add_memory, and list_memories.
Use it
Hermes calls the tools autonomously during a run. A well-instructed agent searches memory before planning and stores any durable conclusion it reaches:
Run 1 — "Triage the billing webhook failures"
agent calls search_memory("billing webhook") → nothing yet
agent investigates, then calls add_memory(
"Billing webhooks retry up to 5x with exponential backoff; 410 means the
subscription was already deleted."
)
Run 2, days later — "Why did this webhook 410?"
agent calls search_memory("webhook 410") → recalls the prior conclusion
and answers immediatelyChoosing a scope
Pick the scope that matches the agent's lifetime, using the scoping model:
- Personal assistant — set
FISHMEM_USER_IDto the person it serves. Memory follows that user across every task and run. - Task-bound agent — set
FISHMEM_PROJECT(arun_idscope) to the task or job. Memory stays scoped to that task and doesn't bleed into unrelated work.
You can combine them: a per-user assistant that also keeps task-local notes.
{
"agent": {
"name": "assistant",
"mcpServers": {
"fishmem": {
"command": "npx",
"args": ["-y", "@fishmem/mcp"],
"env": {
"FISHMEM_API_KEY": "<your-key>",
"FISHMEM_USER_ID": "alex",
"FISHMEM_PROJECT": "billing-triage"
}
}
}
}
}