Vity (Maximem AI) memory provider plugin for Hermes Agent
Project description
Vity Memory Provider for Hermes Agent
Vity by Maximem AI — cross-session semantic memory for Hermes Agent, shipped as a standalone plugin (not bundled with core Hermes).
Vity gives the agent a persistent memory graph (facts, preferences, emotions, episodes, knowledge, profile) with profile-based recall and low-latency context injection over the Maximem REST API.
Powered by the
maximem-vity-sdkPython client. This plugin mirrors Maximem's official OpenClaw plugin:before_agent_start → recall,agent_end → capture.
Install
pip install hermes-maximem-vity
hermes-maximem-vity install
hermes memory setup vity
That's it:
pip install hermes-maximem-vity— installs the plugin and itsmaximem-vity-sdkdependency.hermes-maximem-vity install— copies the provider into~/.hermes/plugins/vity/, where Hermes auto-discovers it. (One-time step: Hermes discovers plugins from that directory, and pip installs to site-packages — this command bridges the two.)hermes memory setup vity— prompts for your API key and setsmemory.provider: vity.
Set your API key (if you skip the prompt):
echo 'MAXIMEM_API_KEY=mx_...' >> ~/.hermes/.env
Get an API key at app.maximem.ai/api-keys (starts with mx_).
Verify:
hermes memory status # vity ← active
hermes vity status # API key set ✓, connection ok ✓
Update / remove:
pip install -U hermes-maximem-vity && hermes-maximem-vity install --force # update
hermes-maximem-vity uninstall # remove
Configuration
Secret — env var only (~/.hermes/.env):
| Key | Env var | Required | Description |
|---|---|---|---|
api_key |
MAXIMEM_API_KEY |
✅ | Maximem API key (mx_...). VITY_API_KEY also accepted for back-compat. |
Tunables — non-secret, in $HERMES_HOME/vity.json (a starter vity.json is created on install from vity.json.example):
| Key | Default | Description |
|---|---|---|
auto_recall |
true |
Inject memories before each turn |
auto_capture |
true |
Capture the conversation after each turn |
max_recall_tokens |
1000 |
Token budget for recalled context |
min_prompt_length |
5 |
Skip recall for trivially short prompts |
The API key owns the memory space. Vity does not derive memory identity from gateway users, sessions, or channels — use a separate API key per user/account that needs isolated memories.
How it works
- Warm-up recall — on session start,
initialize()kicks off a background recall with a broad profile query so the first message already has context (cold-start wait with a blocking fallback). - Per-turn prefetch — before each turn, recalled context is injected as a
## Vity Memoryblock. - Per-turn capture — after each turn, the exchange is captured into long-term memory in the background.
- Built-in memory mirroring — when Hermes' built-in
memorytool writes a fact,on_memory_write()mirrors it into Vity so it joins semantic recall (parity with OpenClaw's/remember).
All recall/capture work runs on daemon threads — the agent loop never blocks on the network.
Tools exposed to the agent
| Tool | Parameters | Purpose |
|---|---|---|
vity_recall |
query (required), top_k (default 10, max 50) |
Semantic search of the memory graph. |
vity_profile |
— | Retrieve the user's full stored memory profile. |
vity_store |
content (required), memory_type (fact/preference/emotion/episode/knowledge/profile) |
Save a new memory fact. |
vity_forget |
query, dry_run (default true) |
Delete matching memories (previews first). |
CLI (hermes vity ...)
The terminal analog of openclaw maximem ...:
hermes vity status # config + live connection check
hermes vity search "favorite color" # semantic search
hermes vity search "deadlines" --limit 20 --json
hermes vity store "I prefer dark mode" --type preference
hermes vity forget "old project" # dry-run (preview)
hermes vity forget "old project" --yes # confirm deletion
Slash commands
Hermes has no generic plugin-registered in-chat slash-command API (unlike OpenClaw's /remember / /recall). The equivalent here is:
- Agent-driven — the agent autonomously calls
vity_store/vity_recall, so "remember that …" in chat works without a literal command. - Built-in memory mirroring —
on_memory_write()propagates Hermes' built-in memory writes into Vity. - CLI —
hermes vity …covers terminal-side management.
Development
pip install -e ".[dev]"
pytest -q
Tests stub the Hermes host modules (agent.memory_provider, tools.registry, hermes_constants, utils) so they run without a full Hermes checkout — see tests/conftest.py.
Layout
| Path | Purpose |
|---|---|
src/hermes_maximem_vity/installer.py |
The hermes-maximem-vity console command (install / uninstall / status). |
src/hermes_maximem_vity/payload/provider.py |
VityMemoryProvider + register() — copied to ~/.hermes/plugins/vity/__init__.py on install. |
src/hermes_maximem_vity/payload/cli.py |
hermes vity ... subcommands. |
src/hermes_maximem_vity/payload/plugin.yaml |
Plugin manifest (deps, required env). |
src/hermes_maximem_vity/payload/vity.json.example |
Non-secret tunables template (seeded to vity.json on install). |
src/hermes_maximem_vity/payload/after-install.md |
Post-install notes. |
tests/ |
Unit tests + host-module stubs. |
License
MIT — see LICENSE.
Support
- Docs: https://docs.maximem.ai/vity
- API keys: https://app.maximem.ai/api-keys
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_maximem_vity-1.0.0.tar.gz.
File metadata
- Download URL: hermes_maximem_vity-1.0.0.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9a8febf68785e203b640ea3923cbe774b7afa780c50be2d6dd2e2df47e62b14
|
|
| MD5 |
073dbfd642375407b35e1e9e5db33df5
|
|
| BLAKE2b-256 |
2d02ec39f8fefe562c6ad085fa959add99a9b9622bebfa9ecceefd4b162a8cc2
|
File details
Details for the file hermes_maximem_vity-1.0.0-py3-none-any.whl.
File metadata
- Download URL: hermes_maximem_vity-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6cdf7ce7e97646e40ec6afc5dda95e306a41178b84c6b67600035244fb7ef5d
|
|
| MD5 |
dc1f150d7b0df05e4a4f54a5a260e2c7
|
|
| BLAKE2b-256 |
8a50270a223cd3a5d2c334a39814d4487bce54f5d3ea526e59d15acc8ec1d158
|