plur-hermes
Persistent memory plugin for Hermes Agent. Your agent corrected on Monday remembers on Tuesday.
Install
pip install plur-hermes
That's it. The plugin is auto-discovered by Hermes on startup. No other install needed.
What happens
Once installed, PLUR runs invisibly in the background:
- Every turn: relevant memories are injected into the agent's context (via
pre_llm_callhook) - Every response: corrections and insights are captured automatically (via
post_llm_callhook) - Every session: episodes are recorded to a timeline (via
on_session_endhook)
The agent also gets 22 tools it can call explicitly:
| Tool | What it does |
|---|---|
plur_learn |
Store a correction, preference, or pattern |
plur_recall |
Search memories by topic |
plur_inject |
Get relevant context for a task |
plur_list |
List all stored engrams |
plur_forget |
Retire outdated knowledge |
plur_feedback |
Rate a memory (trains what surfaces next time) |
plur_capture |
Record an episode |
plur_timeline |
Query past episodes |
plur_status |
Health check |
plur_sync |
Cross-device sync via git |
plur_packs_list |
List installed knowledge packs |
plur_packs_install |
Install a community knowledge pack |
plur_packs_export |
Export a pack to a shareable file |
plur_extract_meta |
Distill cross-domain principles from your memories |
plur_meta_engrams |
List extracted meta-engrams |
plur_meta_submit_analysis |
Continue multi-turn extraction |
plur_validate_meta |
Test a principle against a new domain |
plur_ingest |
Ingest a message into the memory pipeline |
plur_promote |
Promote an engram to higher confidence |
plur_similarity_search |
Embedding-based similarity search |
plur_stores_add |
Register an additional engram store |
plur_stores_list |
List all registered stores |
How it works
Knowledge is stored as engrams — small assertions that strengthen with use and decay when irrelevant. Storage is plain YAML on disk at ~/.plur/. Search is fully local (BM25 + embeddings). Zero API calls, zero cloud, works offline.
The plugin calls the PLUR CLI under the hood via subprocess. If the CLI isn't installed globally, it auto-resolves via npx on first use (cached after that).
CLI version. Text that begins with - (a recall query or an injected message such as --dry-run …) is sent after a -- separator, which plur recall / plur inject honour from the first @plur-ai/cli release after 0.20.1. An older CLI reads -- as the text itself, so upgrade the CLI if you rely on such queries; every other query is sent exactly as before, and statements / summaries that begin with - go on stdin, which every CLI version reads.
What makes PLUR different from Hermes built-in memory
Hermes has MEMORY.md (2,200 chars) and session search (FTS5). PLUR adds:
- Feedback-trained retrieval — rate memories, good ones surface more, bad ones fade
- Forgetting — retire outdated knowledge instead of growing forever
- Hybrid search — BM25 + local embeddings + Reciprocal Rank Fusion
- Cross-device sync — git-based, works across machines
- Meta-engram extraction — distill transferable principles across domains
- Knowledge packs — share curated engrams between agents
PLUR sits alongside Hermes memory, not replacing it. Your MEMORY.md and USER.md continue to work as before.
Configuration
The plugin works with zero configuration. Optional env vars:
| Variable | Default | Description |
|---|---|---|
PLUR_PATH |
~/.plur |
Storage directory |
PLUR_INJECT_MODE |
fast |
Set to hybrid for embedding-based injection (slower, more accurate) |
Requirements
- Hermes Agent v0.5.0+
- Python 3.10+
- Node.js 18+ (for CLI, auto-resolved via npx if not installed globally)
Links
- PLUR.ai
- GitHub
- @plur-ai/cli — standalone CLI
- @plur-ai/mcp — MCP server for Claude Code, Cursor, Windsurf
- @plur-ai/claw — OpenClaw plugin
License
Apache-2.0
Metadata
Release files for plur-hermes 0.21.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plur_hermes-0.21.2.tar.gz | 79.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plur_hermes-0.21.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 121.5 kB
Release files / plur_hermes-0.21.2.tar.gz
| Download URL | plur_hermes-0.21.2.tar.gz |
|---|---|
| Size | 79.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b54cd398e903d4fb5e49b6fb1f341271a076df0ac0f295c433630f29862f9bb
|
|
BLAKE2b-256 checksum How to use checksums |
f8269915c569a073a6883554ce14abfb2ef16910ef1cc30b3f696fdd30163f90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.1
|
Release files / plur_hermes-0.21.2-py3-none-any.whl
| Download URL | plur_hermes-0.21.2-py3-none-any.whl |
|---|---|
| Size | 41.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c99f0219a0b656c1ceca2e992004e90a9c7f7f2b07ad5795a04ff03987b929b5
|
|
BLAKE2b-256 checksum How to use checksums |
9676a33d6c1f38ef7d8ab7ae9e0599f6c3d853c1605f199c0eb83b4f84019c96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.1
|