Markdown-vault hybrid memory provider for Hermes Agent.
Hybrid architecture: episodic journal + semantic markdown pages + FTS5 search + dreaming consolidation + L1 injection.
hermes plugins install ezraphm/trove
hermes plugins enable trove
hermes gateway restartInspired by Aside Memory Architecture — hybrid markdown-vault design, episodic journal, dreaming consolidation. Adapted for the Hermes plugin system.
$HERMES_HOME/trove/
├── MEMORY.md ← L1: agent rules (injected into prompt)
├── USER.md ← L1: user profile (injected into prompt)
├── episodic/ ← Append-only journal YYYY-MM-DD.md
├── concepts/ ← Semantic knowledge pages
├── projects/ ← Project context pages
├── sites/ ← Site-specific knowledge
├── people/ ← People facts
├── companies/ ← Company knowledge
├── corrections/ ← Corrections (rank-boosted in search)
├── index.db ← FTS5 search index (SQLite FTS5)
└── .dream-state.json
| Tool | Description |
|---|---|
trove_remember |
Write fact to semantic page (auto-category) |
trove_recall |
Search memory (FTS5 + alias expansion + KG) |
trove_forget |
Move fact from semantic to episodic |
trove_episodic_write |
Append entry to journal (optional priority) |
trove_episodic_read |
Read journal by date |
trove_episodic_list |
List journal dates |
trove_page_read |
Read semantic page |
trove_page_update |
Update semantic page |
trove_page_create |
Create new semantic page |
trove_page_list |
List pages by category |
trove_dream |
Run consolidation now |
trove_dream_status |
Check dreaming state |
trove_search |
Full-text search across all pages |
trove_diff |
Show changes since last dream |
trove_export |
Export to JSON |
trove_import |
Import from JSON |
Zero-dep FTS5-only, session-level, evaluated on a MacBook Pro (Apple Silicon).
| Benchmark | Metric | Score | Notes |
|---|---|---|---|
| LongMemEval oracle | recall@10 | 0.734 | 500 instances, filtered sessions |
| LongMemEval s | recall@10 | 0.397 | 500 instances, full filler (paper-comparable) |
| BEAM 100K | recall@10 | 0.907 | 170 docs, 400 queries |
| LoCoMo 10 | recall@10 | 0.893 | 272 docs, 1540 queries |
| BrainBench world-v1 | R@5 | 0.939 | 240 pages, 446 queries |
| Ingest throughput | — | ~1,380 sessions/sec | 19K sessions in 13.9s |
| Search latency (p50/p99) | — | 60/130 ms | 19K session corpus |
Trove also bundles optional vector search (pip install trove[vector]) via sqlite-vec + BGE-small-EN + multi-query expansion + KG triple expansion, available through dream() consolidation. Not benchmarked.
Only required field: hermes_home (auto-detected from Hermes).
Optional trove-memory.json:
{
"episodicRetentionDays": 30,
"dreamingMinHours": 24,
"dreamingMinSessions": 5,
"aliases": {
"js": "javascript",
"ts": "typescript"
}
}Every semantic page stores auto-generated metadata:
- importance
{score, level, reasons}— critical/high/normal/low/trivial heuristic - confidence — explicit/implied/inferred/speculative via regex
- status — active/superseded/archived
- sources —
[date#slug, ...]for provenance tracking
trove_remember auto-classifies content into: concepts, projects, sites, people, companies, corrections. Keywords per category in tools.py._auto_category().
Corrections results get +1 rank boost in search.