FishMem

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:

hermes.config.json
{
  "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 immediately

Choosing a scope

Pick the scope that matches the agent's lifetime, using the scoping model:

  • Personal assistant — set FISHMEM_USER_ID to the person it serves. Memory follows that user across every task and run.
  • Task-bound agent — set FISHMEM_PROJECT (a run_id scope) 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.

hermes.config.json
{
  "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"
        }
      }
    }
  }
}

Next steps

On this page