> ## Documentation Index
> Fetch the complete documentation index at: https://supermemory-capy-add-llmstxt-summary-and.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hermes

> Supermemory plugin for Hermes. Semantic memory, profiles and search across Telegram, Discord, Slack, the CLI and more.

[Hermes agent](https://github.com/NousResearch/hermes-agent) ships a native **supermemory** memory provider: semantic long-term memory, profile recall, search, explicit memory tools, and session-aware ingest — not a bolt-on script the model might skip. Hermes runs across Telegram, Discord, Slack, WhatsApp, Signal, and the CLI from one gateway.

Hermes also ships with built-in `MEMORY.md` and `USER.md` files. Supermemory adds structure and isolation (profile-scoped and optional multi-container tags), plus retrieval that goes beyond a single flat file.

## Get your API key

Create a supermemory API key from the [API Keys](https://console.supermemory.ai/keys) page in the console. During `hermes memory setup` you can paste it when prompted, or persist it in your environment:

## Install the memory provider

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
pip install supermemory
```

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
hermes memory setup
```

Select **supermemory** when prompted and paste your API key.

Or set the provider and key manually:

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
hermes config set memory.provider supermemory
echo 'SUPERMEMORY_API_KEY=sm_...' >> ~/.hermes/.env
```

(Adjust the path if your Hermes home directory differs.)

## How it works

Once configured, the provider runs through Hermes’s normal memory lifecycle:

* **Prefetch** — Relevant memory context can be loaded before each turn.
* **Turn capture** — Cleaned user/assistant turns can be stored after each completed response.
* **Session ingest** — The full session can be ingested at session end for richer graph updates.
* **Explicit tools** — Search, store, forget, and profile tools are available to the model when appropriate.
* **Built-in file memory** — This does not replace `MEMORY.md` / `USER.md`; mirroring behavior depends on Hermes version and config (see upstream README).

## Tools

Kebab-case names are registered for the agent; snake\_case aliases remain supported.

| Tool | Alias | Description |
| - | - | - |
| `supermemory-save` | `supermemory_store` | Store an explicit memory. |
| `supermemory-search` | `supermemory_search` | Search by semantic similarity. |
| `supermemory-forget` | `supermemory_forget` | Forget a memory by ID or best-match query. |
| `supermemory-profile` | `supermemory_profile` | Retrieve persistent profile and recent context. |

## Commands

Interactive setup: pick **supermemory** and enter your API key.

```
hermes memory setup
```

## Environment variables

These variables configure the supermemory provider (for example in your shell or Hermes env file):

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
SUPERMEMORY_API_KEY=sm_...              # Required
SUPERMEMORY_CONTAINER_TAG=hermes-work # Optional: overrides container tag from config
```

## Multi-container tags

By default, recall and capture use a **single primary** `container_tag` (optionally profile-scoped with `{identity}`). **Multi-container mode** adds extra named tags so the model can read and write specific namespaces — for example work vs personal, or one bucket per project.

**How to enable** — In `$HERMES_HOME/supermemory.json`, set:

* `enable_custom_container_tags` to `true`
* `custom_containers` to an array of allowed tag strings (e.g. `work`, `personal`, `project-alpha`)
* `custom_container_instructions` (recommended) — short guidance the provider injects into the system prompt so Hermes knows **when** to use which tag

Your primary `container_tag` stays the default namespace; listed custom tags are **additional** allowlisted namespaces.

**How it works**

* **`supermemory_search`**, **`supermemory_store`**, **`supermemory_forget`**, and **`supermemory_profile`** accept an optional **`container_tag`** argument. The tag must be either the **primary** `container_tag` (after template resolution) or one of **`custom_containers`**.
* **Automatic behavior** (turn sync, prefetch, mirroring built-in memory writes, session-end ingest) always uses the **primary** container only — it does not pick a custom tag for you.
* Instructions in `custom_container_instructions` steer the model toward passing the right `container_tag` on tool calls when the user’s intent matches a namespace (e.g. “check my personal notes” → `personal`).

Example:

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "container_tag": "hermes",
  "enable_custom_container_tags": true,
  "custom_containers": ["work", "personal", "shared-knowledge"],
  "custom_container_instructions": "Use work for job and coding context, personal for life and hobbies, shared-knowledge for facts that apply across both."
}
```

See the [upstream plugin README](https://github.com/NousResearch/hermes-agent/tree/main/plugins/memory/supermemory) for the exact schema and any newer options.

## Config file

Create or edit `$HERMES_HOME/supermemory.json`. Common keys:

| Key | Default | Description |
| - | - | - |
| `container_tag` | `hermes` | Tag for search/writes; use `{identity}` for profile-scoped tags (e.g. `hermes-{identity}` → `hermes-coder`). |
| `auto_recall` | `true` | Inject memory context before turns. |
| `auto_capture` | `true` | Store turns after each response. |
| `max_recall_results` | `10` | Max items merged into context. |
| `profile_frequency` | `50` | Profile on first turn and every N turns. |
| `capture_mode` | `all` | How aggressively turns are captured. |
| `search_mode` | `hybrid` | `hybrid`, `memories`, or `documents`. |
| `api_timeout` | `5.0` | SDK / ingest timeout (seconds). |
| `enable_custom_container_tags` | `false` | Set `true` to allow extra namespaces; see [Multi-container tags](#multi-container-tags) above. |
| `custom_containers` | — | Allowlisted tags beyond the primary `container_tag`. |
| `custom_container_instructions` | — | Prompt text that explains when to pass `container_tag` on tools. |

Example profile-scoped container:

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "container_tag": "hermes-{identity}",
  "search_mode": "hybrid",
  "auto_recall": true,
  "auto_capture": true
}
```

## Self-hosted API

If you run your own supermemory API, set **`base_url`** (and any other host-specific options) in `supermemory.json` or via env as documented in the [upstream plugin README](https://github.com/NousResearch/hermes-agent/tree/main/plugins/memory/supermemory) — alongside your key and container settings.

## Next steps

<CardGroup cols={2}>
  <Card title="Hermes + plugin README" icon="https://mintcdn.com/supermemory-capy-add-llmstxt-summary-and/RZUchfWXNk8FOiN_/images/github-icon.svg?fit=max&auto=format&n=RZUchfWXNk8FOiN_&q=85&s=997e915bbbc7ec5808a4cced93759dbc" href="https://github.com/NousResearch/hermes-agent/tree/main/plugins/memory/supermemory" width="16" height="16" data-path="images/github-icon.svg">
    Full config table, env vars, and multi-container details.
  </Card>

  <Card title="OpenClaw plugin" icon="https://mintcdn.com/supermemory-capy-add-llmstxt-summary-and/LIMkcglt81IfjBVR/icons/hugeicons/message-02.svg?fit=max&auto=format&n=LIMkcglt81IfjBVR&q=85&s=7bf310b974e68d7e31a68fa306756161" href="/integrations/openclaw" width="24" height="24" data-path="icons/hugeicons/message-02.svg">
    Multi-platform memory for Telegram, WhatsApp, Discord, and more.
  </Card>
</CardGroup>

Questions about the API or product? [Discord](https://supermemory.link/discord) · [support@supermemory.com](mailto:support@supermemory.com) · [Developer docs](/overview/what-is-supermemory)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.