Badn3o/mnemosyne

Mnemosyne memory provider for Hermes Agent - local-first, zero-cloud memory

Python

0

676 commits

updated Jun 13, 2026

See the code

README

Mnemosyne

Mnemosyne

Zero-dependency AI memory that works everywhere. SQLite-backed. Sub-millisecond.

Python PyPI License CI BEAM Discord ProductHunt MCP

Mnemosyne is a universal, Hermes-first memory layer that works with any agent framework (Claude Code, Cursor, Codex, OpenWebUI, OpenClaw, or your own custom agent). One pip install, one SQLite database. No external services required.


Table of Contents


Works With Everything

PlatformMethodSetup
CursorMCPAdd to .cursor/mcp.json
Claude CodeMCPAdd to claude.json
OpenAI Codex CLIMCPAdd to .codex/mcp.json
WindsurfMCPAdd to .windsurf/mcp_config.json
OpenWebUINative @toolDrop bridge file into data/tools/
OpenClawNative providerpip install mnemosyne-memory[openclaw]
Hermes AgentMCP + PluginNative — ships enabled
Any MCP clientMCP (stdio/SSE)One config line
Any Python agentDirect SDKimport mnemosyne

See docs/integrations/ for complete setup guides per platform.


Quick Start

pip install mnemosyne-memory

# With all features (vector search + MCP server)
pip install "mnemosyne-memory[all]"

# Upgrade
pip install --upgrade mnemosyne-memory

Add to your agent

MCP-based (Cursor, Claude Code, Codex, Windsurf):

{
  "mcpServers": {
    "mnemosyne": {
      "command": "mnemosyne",
      "args": ["mcp"],
      "env": {}
    }
  }
}

Python SDK (any agent):

from mnemosyne import remember, recall

remember("User prefers dark mode interfaces")
results = recall("user preferences")

OpenWebUI: Drop a 1-line bridge file into data/tools/.

OpenClaw: Add provider: mnemosyne.integrations.openclaw:create_provider to config.


Benchmarks

Mnemosyne holds top-tier scores on the two major memory benchmarks, LongMemEval (ICLR 2025) and BEAM (ICLR 2026), both in one SQLite file, zero cloud dependencies.

LongMemEval (retrieval)

SystemScoreNotes
Mnemosyne (dense)98.9% Recall@All@5Apr 2026, bge-small-en-v1.5, 100 instances
Mempalace96.6% Recall@5AAAK + Palace architecture
Backboard93.4%Independent assessment
Hindsight91.4%Vectorize.io

BEAM (end-to-end QA)

ScaleMnemosyne v3HonchoHindsightLIGHTRAG
100K65.2%63.0%73.4%35.8%32.3%

Per-ability (100K): IE 91.5% · MR 87.5% · TR 75.0% · ABS 100.0% · CR 50.0% · KU 50.0% · EO 25.0% · IF 62.5% · PF 54.5% · SUM 55.6%

BEAM retrieval (pure recall)

ScaleRecall@10LatencyStorageMessages
100K20%372ms1.8 MB200
500K20%412ms3.2 MB1,000
1M20%493ms4.8 MB2,000
10M20%35ms7.2 MB20,000

Recall holds flat across all scales. 100% abstention accuracy, never hallucinates on unknowns. Episodic compression delivers 9.4x storage savings.

Full reports: docs/beam-benchmark.md


CLI Usage

# MCP server (works with any MCP client)
mnemosyne mcp                          # stdio (default)
mnemosyne mcp --transport sse --port 8080  # SSE (web clients)

# Direct memory ops
mnemosyne remember "User likes dark mode"
mnemosyne recall "preferences"
mnemosyne stats
mnemosyne sleep                         # Run consolidation

# Export / import
mnemosyne export --output backup.json
mnemosyne import --input backup.json

Python API

from mnemosyne import remember, recall

# Store a fact
remember("User prefers dark mode interfaces",
         importance=0.9, source="preference")

# Store globally (visible across all sessions)
remember("User email is [email protected]",
         importance=0.95, scope="global")

# Store with expiry
remember("Temp token: abc123",
         importance=0.8, valid_until="2026-12-31")

# Search
results = recall("interface preferences", top_k=3)

# Temporal recall (recency boost)
results = recall("deployments",
                 temporal_weight=0.5, temporal_halflife=48.0)

# Entity extraction
remember("Met with Abdias about the v2 release",
         extract_entities=True)

# LLM-driven fact extraction
remember("User said they prefer Python for backend work",
         extract=True)

# Temporal triples (knowledge graph)
from mnemosyne.core.triples import TripleStore
kg = TripleStore()
kg.add("Maya", "assigned_to", "auth-migration",
       valid_from="2026-01-15")
kg.query("Maya", as_of="2026-02-01")

# Memory banks (per-domain isolation)
from mnemosyne.core.banks import BankManager
BankManager().create_bank("work")
work_mem = Mnemosyne(bank="work")
work_mem.remember("Sprint review on Friday")

Advanced: BEAM Direct Access

from mnemosyne.core.beam import BeamMemory

beam = BeamMemory(session_id="my_session")
beam.remember("Important context", importance=0.9)
beam.consolidate_to_episodic(
    summary="User likes Neovim",
    source_wm_ids=["wm1"]
)
results = beam.recall("editor preferences", top_k=5)

Architecture

┌────────────────────────────────────────────────────────────┐
│                    Any AI Agent                            │
│  (Hermes · Claude Code · Cursor · Codex · OpenWebUI · MCP) │
└────────────────────────┬───────────────────────────────────┘
                         │ MCP / SDK / Plugin
┌────────────────────────▼───────────────────────────────────┐
│                      Mnemosyne BEAM                         │
│  ┌────────────┐  ┌──────────────┐  ┌────────────────────┐   │
│  │ Working    │  │ Episodic     │  │ TripleStore         │   │
│  │ Memory     │──▶│ Memory       │  │ (Temporal KG)      │   │
│  │ (hot ctx)  │  │ (long-term)  │  └────────────────────┘   │
│  └────────────┘  └──────┬───────┘                           │
│                         │                                    │
│              ┌──────────▼──────────┐                        │
│              │     SQLite DB       │                        │
│              │  (single file)      │                        │
│              │  sqlite-vec + FTS5  │                        │
│              │  MIB binary vectors │                        │
│              └─────────────────────┘                        │
└─────────────────────────────────────────────────────────────┘

BEAM (Bilevel Episodic-Associative Memory):

  • Working memory — Hot context, auto-injected before LLM calls, TTL-based eviction
  • Episodic memory — Long-term storage with sqlite-vec + FTS5 hybrid search
  • TripleStore — Temporal knowledge graph with version chains

Hybrid scoring: 50% vector similarity + 30% FTS5 rank + 20% importance, all inside SQLite.

Binary vectors: Information-theoretic binarization (MIB) compresses 384-dim float32 embeddings into 48 bytes — 32x reduction. Hamming distance entirely within SQLite. No ANN indices, no external vector DB.


Why Mnemosyne?

FeatureMnemosynemem0LettaHonchoSuperMemoryHindsightChromaDB
Local-first✅ SQLite⚠️ Hybrid❌ Docker+PG⚠️ PG+worker❌ SaaS✅ SQLite✅ Embedded
Zero deps✅ pip only❌ Qdrant/PG❌ PG+vector❌ PG+3 LLMs❌ SaaS infra✅ pip only✅ pip only
MCP server✅ Built-in❌❌❌✅❌❌
Python SDK✅✅✅✅✅✅✅
Multi-platform✅ 8+ targets⚠️ 3 adapters❌ Agent-only⚠️ 4 adapters✅ MCP❌ Agent-only❌ Library only
Open source✅ MIT✅ Apache 2.0✅ OSS⚠️ AGPL❌ Proprietary✅ MIT✅ Apache 2.0
Benchmark65.2% BEAM / 98.9% LongMem49% LongMem83.2% LoCoMo90.4% LongMem85.2% MemoryBench73.4% BEAMN/A (vector DB)
Self-hosted✅ Yes✅ Optional✅ Optional✅ Yes❌ Enterprise✅ Yes✅ Yes
Integration template✅ Published❌❌❌❌❌❌
Memory architectureBEAM (3-tier)Session + factsOS-virtual contextPeer + reasoning5-layer stackEpisodic + semanticVector store only
PurposeFull memory systemMemory APIAgent runtimeManaged memoryConsumer + agentResearch memoryVector database

Configuration

Environment Variables

VariableDefaultDescription
MNEMOSYNE_DATA_DIR~/.hermes/mnemosyne/dataDatabase directory
MNEMOSYNE_VEC_TYPEint8Vector compression: float32, int8, or bit
MNEMOSYNE_VEC_WEIGHT0.5Vector similarity weight
MNEMOSYNE_FTS_WEIGHT0.3FTS5 keyword weight
MNEMOSYNE_IMPORTANCE_WEIGHT0.2Importance weight
MNEMOSYNE_WM_MAX_ITEMS10000Working memory limit
MNEMOSYNE_RECENCY_HALFLIFE168Decay halflife in hours

| MNEMOSYNE_EMBEDDING_API_URL | ${OPENROUTER_BASE_URL:-https://openrouter.ai/api/v1} | Preferred name for custom embedding API endpoint (OpenAI-compatible). Falls back to OPENROUTER_BASE_URL. | | MNEMOSYNE_EMBEDDING_API_KEY | ${OPENROUTER_API_KEY:-${OPENAI_API_KEY:-}} | Preferred name for embedding API key. Falls back to OPENROUTER_API_KEY, then OPENAI_API_KEY. | | MNEMOSYNE_EMBEDDING_MODEL | BAAI/bge-small-en-v1.5 | Embedding model. Low-resource multilingual: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2; larger options: intfloat/multilingual-e5-base, BAAI/bge-m3. |

Full reference: docs/configuration.md

Language Support

Default embeddings are English-optimized (bge-small-en-v1.5). For non-English or multilingual recall, swap the model:

# Low-resource local multilingual embeddings
export MNEMOSYNE_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

# Larger multilingual embeddings
export MNEMOSYNE_EMBEDDING_MODEL=intfloat/multilingual-e5-base

# Or Chinese-specific embeddings
export MNEMOSYNE_EMBEDDING_MODEL=BAAI/bge-small-zh-v1.5

See docs/configuration.md#custom-embedding-models for tradeoffs (RAM, speed, dimension changes).


Hermes Plugin (23 tools)

When used with Hermes Agent, Mnemosyne exposes 23 tools for full memory lifecycle management — 3 lifecycle hooks (pre_llm_call, on_session_start, post_tool_call) for automatic context injection, plus MCP support.

For the full Hermes setup guide, see docs/hermes-integration.md. That is the canonical, most up-to-date reference.

Install profile comparison

ProfileWhen to useRAMKey tradeoff
mnemosyne-memory (core)Low-resource (Raspberry Pi, 1 GB VPS), or when using a remote embedding API~50 MBNo local embeddings. Point MNEMOSYNE_EMBEDDING_API_URL to an external endpoint.
mnemosyne-memory[embeddings]Mid-range systems with local embedding support~800 MBAdds fastembed for local vector generation. Best for single-user desktop agents.
mnemosyne-memory[all]Full-featured — local embeddings + local LLM consolidation~1.5 GBAdds sentence-transformers + local LLM deps (ctransformers). Maximum capability.
mnemosyne-hermesHermes Agent users — always pair with one of the aboveSame as baseWraps core library with plugin manifest + entry points. Run hermes config set memory.provider mnemosyne after install.

Hardware guidance: Core alone runs on a Raspberry Pi 4 (4 GB) with ~300 MB free for LLM. [embeddings] needs at least 2 GB free RAM. [all] recommends 8 GB+.

Install (Hermes users):

pip install mnemosyne-hermes
hermes config set memory.provider mnemosyne
hermes memory setup

Then disable Hermes' built-in MEMORY.md/USER.md system so Mnemosyne is the sole memory provider. Do NOT use hermes tools disable memory — that also kills all 23 Mnemosyne-registered tools.

Edit ~/.hermes/config.yaml:

memory:
  memory_enabled: false
user_profile_enabled: false

See docs/hermes-integration.md for the full setup guide.

Tool categories

CategoryTools
Core memory (9)remember, recall, sleep, stats, get, update, forget, invalidate, validate
Knowledge graph (4)triple_add, triple_query, graph_query, graph_link
Multi-agent surface (4)shared_remember, shared_recall, shared_forget, shared_stats
Working notes (3)scratchpad_write, scratchpad_read, scratchpad_clear
Ops (3)export, import, diagnose

All 23 tools surface through the mnemosyne-hermes package, which wraps the mnemosyne-memory core library. The plugin manifest at integrations/hermes/ is also discoverable by Hermes' plugin system.

Updating: pip install --upgrade mnemosyne-hermes && hermes gateway restart or git pull && pip install --upgrade integrations/hermes && hermes gateway restart (source).


Contributing

See CONTRIBUTING.md for guidelines.

Full docs: docs/ · Changelog: CHANGELOG.md · Releases: GitHub Releases · Integrations: docs/integrations/


Support

Discord: Join the Mnemosyne community · Issues: GitHub Issues

GitHub Sponsors Ko-fi

⭐ Star the repo if you find it useful!


License

MIT License — See LICENSE

Copyright (c) 2026 Abdias J


"The faintest ink is more powerful than the strongest memory." — Hermes Trismegistus

Badn3o/mnemosyne

Mnemosyne memory provider for Hermes Agent - local-first, zero-cloud memory

Python

0

676 commits

updated Jun 13, 2026

See the code

README

Mnemosyne

Mnemosyne

Zero-dependency AI memory that works everywhere. SQLite-backed. Sub-millisecond.

Python PyPI License CI BEAM Discord ProductHunt MCP

Mnemosyne is a universal, Hermes-first memory layer that works with any agent framework (Claude Code, Cursor, Codex, OpenWebUI, OpenClaw, or your own custom agent). One pip install, one SQLite database. No external services required.


Table of Contents


Works With Everything

PlatformMethodSetup
CursorMCPAdd to .cursor/mcp.json
Claude CodeMCPAdd to claude.json
OpenAI Codex CLIMCPAdd to .codex/mcp.json
WindsurfMCPAdd to .windsurf/mcp_config.json
OpenWebUINative @toolDrop bridge file into data/tools/
OpenClawNative providerpip install mnemosyne-memory[openclaw]
Hermes AgentMCP + PluginNative — ships enabled
Any MCP clientMCP (stdio/SSE)One config line
Any Python agentDirect SDKimport mnemosyne

See docs/integrations/ for complete setup guides per platform.


Quick Start

pip install mnemosyne-memory

# With all features (vector search + MCP server)
pip install "mnemosyne-memory[all]"

# Upgrade
pip install --upgrade mnemosyne-memory

Add to your agent

MCP-based (Cursor, Claude Code, Codex, Windsurf):

{
  "mcpServers": {
    "mnemosyne": {
      "command": "mnemosyne",
      "args": ["mcp"],
      "env": {}
    }
  }
}

Python SDK (any agent):

from mnemosyne import remember, recall

remember("User prefers dark mode interfaces")
results = recall("user preferences")

OpenWebUI: Drop a 1-line bridge file into data/tools/.

OpenClaw: Add provider: mnemosyne.integrations.openclaw:create_provider to config.


Benchmarks

Mnemosyne holds top-tier scores on the two major memory benchmarks, LongMemEval (ICLR 2025) and BEAM (ICLR 2026), both in one SQLite file, zero cloud dependencies.

LongMemEval (retrieval)

SystemScoreNotes
Mnemosyne (dense)98.9% Recall@All@5Apr 2026, bge-small-en-v1.5, 100 instances
Mempalace96.6% Recall@5AAAK + Palace architecture
Backboard93.4%Independent assessment
Hindsight91.4%Vectorize.io

BEAM (end-to-end QA)

ScaleMnemosyne v3HonchoHindsightLIGHTRAG
100K65.2%63.0%73.4%35.8%32.3%

Per-ability (100K): IE 91.5% · MR 87.5% · TR 75.0% · ABS 100.0% · CR 50.0% · KU 50.0% · EO 25.0% · IF 62.5% · PF 54.5% · SUM 55.6%

BEAM retrieval (pure recall)

ScaleRecall@10LatencyStorageMessages
100K20%372ms1.8 MB200
500K20%412ms3.2 MB1,000
1M20%493ms4.8 MB2,000
10M20%35ms7.2 MB20,000

Recall holds flat across all scales. 100% abstention accuracy, never hallucinates on unknowns. Episodic compression delivers 9.4x storage savings.

Full reports: docs/beam-benchmark.md


CLI Usage

# MCP server (works with any MCP client)
mnemosyne mcp                          # stdio (default)
mnemosyne mcp --transport sse --port 8080  # SSE (web clients)

# Direct memory ops
mnemosyne remember "User likes dark mode"
mnemosyne recall "preferences"
mnemosyne stats
mnemosyne sleep                         # Run consolidation

# Export / import
mnemosyne export --output backup.json
mnemosyne import --input backup.json

Python API

from mnemosyne import remember, recall

# Store a fact
remember("User prefers dark mode interfaces",
         importance=0.9, source="preference")

# Store globally (visible across all sessions)
remember("User email is [email protected]",
         importance=0.95, scope="global")

# Store with expiry
remember("Temp token: abc123",
         importance=0.8, valid_until="2026-12-31")

# Search
results = recall("interface preferences", top_k=3)

# Temporal recall (recency boost)
results = recall("deployments",
                 temporal_weight=0.5, temporal_halflife=48.0)

# Entity extraction
remember("Met with Abdias about the v2 release",
         extract_entities=True)

# LLM-driven fact extraction
remember("User said they prefer Python for backend work",
         extract=True)

# Temporal triples (knowledge graph)
from mnemosyne.core.triples import TripleStore
kg = TripleStore()
kg.add("Maya", "assigned_to", "auth-migration",
       valid_from="2026-01-15")
kg.query("Maya", as_of="2026-02-01")

# Memory banks (per-domain isolation)
from mnemosyne.core.banks import BankManager
BankManager().create_bank("work")
work_mem = Mnemosyne(bank="work")
work_mem.remember("Sprint review on Friday")

Advanced: BEAM Direct Access

from mnemosyne.core.beam import BeamMemory

beam = BeamMemory(session_id="my_session")
beam.remember("Important context", importance=0.9)
beam.consolidate_to_episodic(
    summary="User likes Neovim",
    source_wm_ids=["wm1"]
)
results = beam.recall("editor preferences", top_k=5)

Architecture

┌────────────────────────────────────────────────────────────┐
│                    Any AI Agent                            │
│  (Hermes · Claude Code · Cursor · Codex · OpenWebUI · MCP) │
└────────────────────────┬───────────────────────────────────┘
                         │ MCP / SDK / Plugin
┌────────────────────────▼───────────────────────────────────┐
│                      Mnemosyne BEAM                         │
│  ┌────────────┐  ┌──────────────┐  ┌────────────────────┐   │
│  │ Working    │  │ Episodic     │  │ TripleStore         │   │
│  │ Memory     │──▶│ Memory       │  │ (Temporal KG)      │   │
│  │ (hot ctx)  │  │ (long-term)  │  └────────────────────┘   │
│  └────────────┘  └──────┬───────┘                           │
│                         │                                    │
│              ┌──────────▼──────────┐                        │
│              │     SQLite DB       │                        │
│              │  (single file)      │                        │
│              │  sqlite-vec + FTS5  │                        │
│              │  MIB binary vectors │                        │
│              └─────────────────────┘                        │
└─────────────────────────────────────────────────────────────┘

BEAM (Bilevel Episodic-Associative Memory):

  • Working memory — Hot context, auto-injected before LLM calls, TTL-based eviction
  • Episodic memory — Long-term storage with sqlite-vec + FTS5 hybrid search
  • TripleStore — Temporal knowledge graph with version chains

Hybrid scoring: 50% vector similarity + 30% FTS5 rank + 20% importance, all inside SQLite.

Binary vectors: Information-theoretic binarization (MIB) compresses 384-dim float32 embeddings into 48 bytes — 32x reduction. Hamming distance entirely within SQLite. No ANN indices, no external vector DB.


Why Mnemosyne?

FeatureMnemosynemem0LettaHonchoSuperMemoryHindsightChromaDB
Local-first✅ SQLite⚠️ Hybrid❌ Docker+PG⚠️ PG+worker❌ SaaS✅ SQLite✅ Embedded
Zero deps✅ pip only❌ Qdrant/PG❌ PG+vector❌ PG+3 LLMs❌ SaaS infra✅ pip only✅ pip only
MCP server✅ Built-in❌❌❌✅❌❌
Python SDK✅✅✅✅✅✅✅
Multi-platform✅ 8+ targets⚠️ 3 adapters❌ Agent-only⚠️ 4 adapters✅ MCP❌ Agent-only❌ Library only
Open source✅ MIT✅ Apache 2.0✅ OSS⚠️ AGPL❌ Proprietary✅ MIT✅ Apache 2.0
Benchmark65.2% BEAM / 98.9% LongMem49% LongMem83.2% LoCoMo90.4% LongMem85.2% MemoryBench73.4% BEAMN/A (vector DB)
Self-hosted✅ Yes✅ Optional✅ Optional✅ Yes❌ Enterprise✅ Yes✅ Yes
Integration template✅ Published❌❌❌❌❌❌
Memory architectureBEAM (3-tier)Session + factsOS-virtual contextPeer + reasoning5-layer stackEpisodic + semanticVector store only
PurposeFull memory systemMemory APIAgent runtimeManaged memoryConsumer + agentResearch memoryVector database

Configuration

Environment Variables

VariableDefaultDescription
MNEMOSYNE_DATA_DIR~/.hermes/mnemosyne/dataDatabase directory
MNEMOSYNE_VEC_TYPEint8Vector compression: float32, int8, or bit
MNEMOSYNE_VEC_WEIGHT0.5Vector similarity weight
MNEMOSYNE_FTS_WEIGHT0.3FTS5 keyword weight
MNEMOSYNE_IMPORTANCE_WEIGHT0.2Importance weight
MNEMOSYNE_WM_MAX_ITEMS10000Working memory limit
MNEMOSYNE_RECENCY_HALFLIFE168Decay halflife in hours

| MNEMOSYNE_EMBEDDING_API_URL | ${OPENROUTER_BASE_URL:-https://openrouter.ai/api/v1} | Preferred name for custom embedding API endpoint (OpenAI-compatible). Falls back to OPENROUTER_BASE_URL. | | MNEMOSYNE_EMBEDDING_API_KEY | ${OPENROUTER_API_KEY:-${OPENAI_API_KEY:-}} | Preferred name for embedding API key. Falls back to OPENROUTER_API_KEY, then OPENAI_API_KEY. | | MNEMOSYNE_EMBEDDING_MODEL | BAAI/bge-small-en-v1.5 | Embedding model. Low-resource multilingual: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2; larger options: intfloat/multilingual-e5-base, BAAI/bge-m3. |

Full reference: docs/configuration.md

Language Support

Default embeddings are English-optimized (bge-small-en-v1.5). For non-English or multilingual recall, swap the model:

# Low-resource local multilingual embeddings
export MNEMOSYNE_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

# Larger multilingual embeddings
export MNEMOSYNE_EMBEDDING_MODEL=intfloat/multilingual-e5-base

# Or Chinese-specific embeddings
export MNEMOSYNE_EMBEDDING_MODEL=BAAI/bge-small-zh-v1.5

See docs/configuration.md#custom-embedding-models for tradeoffs (RAM, speed, dimension changes).


Hermes Plugin (23 tools)

When used with Hermes Agent, Mnemosyne exposes 23 tools for full memory lifecycle management — 3 lifecycle hooks (pre_llm_call, on_session_start, post_tool_call) for automatic context injection, plus MCP support.

For the full Hermes setup guide, see docs/hermes-integration.md. That is the canonical, most up-to-date reference.

Install profile comparison

ProfileWhen to useRAMKey tradeoff
mnemosyne-memory (core)Low-resource (Raspberry Pi, 1 GB VPS), or when using a remote embedding API~50 MBNo local embeddings. Point MNEMOSYNE_EMBEDDING_API_URL to an external endpoint.
mnemosyne-memory[embeddings]Mid-range systems with local embedding support~800 MBAdds fastembed for local vector generation. Best for single-user desktop agents.
mnemosyne-memory[all]Full-featured — local embeddings + local LLM consolidation~1.5 GBAdds sentence-transformers + local LLM deps (ctransformers). Maximum capability.
mnemosyne-hermesHermes Agent users — always pair with one of the aboveSame as baseWraps core library with plugin manifest + entry points. Run hermes config set memory.provider mnemosyne after install.

Hardware guidance: Core alone runs on a Raspberry Pi 4 (4 GB) with ~300 MB free for LLM. [embeddings] needs at least 2 GB free RAM. [all] recommends 8 GB+.

Install (Hermes users):

pip install mnemosyne-hermes
hermes config set memory.provider mnemosyne
hermes memory setup

Then disable Hermes' built-in MEMORY.md/USER.md system so Mnemosyne is the sole memory provider. Do NOT use hermes tools disable memory — that also kills all 23 Mnemosyne-registered tools.

Edit ~/.hermes/config.yaml:

memory:
  memory_enabled: false
user_profile_enabled: false

See docs/hermes-integration.md for the full setup guide.

Tool categories

CategoryTools
Core memory (9)remember, recall, sleep, stats, get, update, forget, invalidate, validate
Knowledge graph (4)triple_add, triple_query, graph_query, graph_link
Multi-agent surface (4)shared_remember, shared_recall, shared_forget, shared_stats
Working notes (3)scratchpad_write, scratchpad_read, scratchpad_clear
Ops (3)export, import, diagnose

All 23 tools surface through the mnemosyne-hermes package, which wraps the mnemosyne-memory core library. The plugin manifest at integrations/hermes/ is also discoverable by Hermes' plugin system.

Updating: pip install --upgrade mnemosyne-hermes && hermes gateway restart or git pull && pip install --upgrade integrations/hermes && hermes gateway restart (source).


Contributing

See CONTRIBUTING.md for guidelines.

Full docs: docs/ · Changelog: CHANGELOG.md · Releases: GitHub Releases · Integrations: docs/integrations/


Support

Discord: Join the Mnemosyne community · Issues: GitHub Issues

GitHub Sponsors Ko-fi

⭐ Star the repo if you find it useful!


License

MIT License — See LICENSE

Copyright (c) 2026 Abdias J


"The faintest ink is more powerful than the strongest memory." — Hermes Trismegistus