Skip to main content
Hermes Agent is stateless between sessions. This plugin gives it a long-term memory. Vity adds persistent memory (facts, preferences, episodes, knowledge, and profile) to Hermes Agent. It automatically recalls relevant context before each turn and captures the conversation after each turn, so the agent remembers users and projects across separate sessions.
The plugin and the maximem-vity-sdk package it needs install into Hermes’ own Python environment.

Features

  • Long-term memory: Stores facts, preferences, episodes, knowledge, and user profiles in your Vity account, and recalls them across sessions. Vity is not end-to-end encrypted: Vity and the outside AI model providers it uses process your content. See Privacy and data.
  • Auto-recall: Fetches relevant memories and injects them as context before each turn. It also loads a short summary of who you are once per session.
  • Auto-capture: Saves the user/assistant exchange to long-term memory after each turn.
  • Memory mirroring: When Hermes’ built-in memory tool records a fact, it is also stored in Vity so recall can find it.
  • Never holds up a reply: Recall before a turn is capped at 3 seconds by default, and the turn goes ahead without memory if Vity is slow. Saving happens in the background.
  • Agent tools: vity_recall, vity_profile, vity_store, vity_forget and vity_knowledge for agent-driven memory operations.
  • CLI commands: Terminal memory management with hermes maximem_vity.

API key

You’ll need a Maximem API key to use this plugin.
  1. Sign up or log in at app.maximem.ai.
  2. Open API Keys in the sidebar.
  3. Click Generate API Key, enter a name, and click Generate Key.
  4. Copy your key (starts with mx_...). Vity shows it only once.
Configuration covers keys in more detail, including how to revoke one.
Keep this key secure. Anyone who has it can read, add to and delete from your memory. Every key on one Vity account reaches the same memory, so a second key does not give you a separate one. To keep two sets of memories apart, use two Vity accounts.

Installation

hermes-maximem-vity install does everything in one step:
  1. Copies the plugin into ~/.hermes/plugins/maximem_vity/, where Hermes discovers it.
  2. Prompts for your API key and saves it to ~/.hermes/.env (no duplicates).
  3. Activates the provider (memory.provider: maximem_vity).
It prints ✅ All set! when finished. Start the agent with hermes.
Already had Hermes (or the gateway) running during install? Restart it to load the newly-activated provider; gateway users run hermes gateway restart.

Non-interactive installs

Pass the key as a flag to skip the prompt, useful for scripted or CI setups:
System Python (e.g. Homebrew) blocks global pip install. Use pipx (recommended) or a virtual environment:
You don’t need to match Python versions; the maximem-vity-sdk dependency is installed into Hermes’ own environment automatically.

Verify installation

Update

The installer always overwrites, so re-running it is how you upgrade:

Remove

Configuration

API key (required)

The API key is a secret and is stored in ~/.hermes/.env. Every key on your Vity account reaches the same memory. To keep memories apart, use a separate Vity account. Changing your key: a plain re-install keeps the existing key (you’ll see already configured). To replace it, pass the new key explicitly; it’s written de-duplicated, so no stale copies are left behind:
Or edit ~/.hermes/.env directly, then restart Hermes (gateway users: hermes gateway restart).

Tunables (optional)

Non-secret options live in a file named vity.json in your Hermes home folder: ~/.hermes on macOS and Linux, %LOCALAPPDATA%\hermes on Windows, or wherever HERMES_HOME points. The installer does not create this file in your Hermes home folder, and the plugin works without it, using the defaults below. To change a setting, create the file yourself with only the keys you want to change.
The installer also puts a vity.json inside plugins/maximem_vity/. The plugin never reads that copy, so editing it changes nothing. Put your settings in vity.json in the Hermes home folder itself, then restart Hermes.

Usage analytics

The plugin sends usage events to Maximem to help improve it, and they are on by default. They do not include your messages or memories. To turn them off, set MAXIMEM_ANALYTICS to 0, false, off or no in ~/.hermes/.env or your environment. The installer sends one event too, so set it before you run the installer if you want none at all.

How it works

Once installed and configured, the plugin works automatically:
  1. Recall before each turn: Vity searches your memory for your current message. It is capped by recall_deadline (default 3 seconds): if matches that score at least recall_min_score return in time they are added as context; otherwise the turn goes ahead with no memory rather than waiting. The first time a session has a profile summary ready, Hermes adds that once as background context too (profile_warmup).
  2. Capture after each turn: the user/assistant exchange is saved to long-term memory.
  3. Memory mirroring: when Hermes’ built-in memory tool records a fact, it is also stored in Vity so recall can find it.
Recall is time-boxed, so a slow connection means no memory for that turn instead of a long wait. Saving runs in the background and never holds up the reply.
No manual action needed. Use the tools and CLI below when you want direct control.

Agent tools

The plugin gives the agent five tools: If Meeting Memory is switched on for your account, Hermes also offers vity_meeting_recall, which answers questions from your meeting history. It takes question (required) and optional meeting_type and status filters. Without Meeting Memory the tool is not shown. In chat, this is transparent: ask the agent to “remember that…” and it calls vity_store; ask “what do you know about…” and it calls vity_recall or vity_knowledge. No special commands are required. Example interaction:

CLI commands

Manage memory directly from your terminal.
To (re)activate the provider, use hermes config set memory.provider maximem_vity. Avoid the interactive hermes memory setup wizard; buffered or pasted terminal input can drop the selection and leave the provider unset.

Troubleshooting

”API key not found” error

Confirm the key and connection:
If the connection check fails, re-run the installer with your key:

maximem-vity-sdk not installed even after pip install

Hermes runs inside its own isolated environment, which is usually not the Python that ran pip install (e.g. Anaconda or system Python). The SDK must live in Hermes’ environment, and hermes-maximem-vity install puts it there for you. Just re-run it:

Memories not being recalled

  1. Check config: ensure auto_recall is not set to false in vity.json in your Hermes home folder.
  2. Check prompt length: prompts shorter than min_prompt_length (default: 5) won’t trigger recall, except the first message of a session and short follow-ups like “why?”.
  3. Check the score floor: automatic recall only adds memories that score at least recall_min_score (default 0.3), and gives up after recall_deadline (default 3 seconds). A slow connection can mean no memory that turn.
  4. Verify the provider is active:
    Confirm maximem_vity shows as active. If not, run hermes config set memory.provider maximem_vity.

Provider unset after setup

The interactive hermes memory setup wizard can drop pasted input. Set the provider directly instead:

Windows: hermes-maximem-vity is “not recognized as a command”

pip install --user on Windows drops the console script in a Scripts folder that isn’t on PATH. Add it for the current PowerShell session, then run install:
Or call it by full path once: & "$(python -m site --user-base)\Python313\Scripts\hermes-maximem-vity.exe" install. To make it permanent, add that Scripts folder to your user PATH in Environment Variables.

Support