Long-term memory for AI agents: semantic facts, episodic events, and procedural workflows
MCP Server: io.github.alibaizhanov/mengram
The MCP server io.github.alibaizhanov/mengram provides long-term memory for AI agents by capturing and organizing different kinds of knowledge. Its described capabilities include semantic facts, episodic events, and procedural workflows to support agent continuity beyond a single interaction.
๐ ๏ธ Key Features
Long-term memory for AI agents
Stores semantic facts
Records episodic events
Captures procedural workflows
๐ Use Cases
Persisting semantic knowledge for agents over time
Remembering past events to inform future behavior
Maintaining procedural workflows that agents can reuse
โก Developer Benefits
Clear separation of memory types: semantic, episodic, procedural
Supports agent systems that require continuity across sessions
โ ๏ธ Limitations
Available source data does not specify tools, APIs, or configuration details
No information provided about tool count, transport method, or access patterns
pip install mengram-ai # or: npm install mengram-ai
mengram try # see what memory would know about you โ local only,# no account, nothing leaves your machine
python
from mengram import Mengram
m = Mengram(api_key="om-...") # Free key โ mengram.io
m.add([{"role": "user", "content": "I use Python and deploy to Railway"}])
m.search("tech stack") # โ facts
m.ask("what's my tech stack?") # โ synthesized answer + citations
m.episodes(query="deployment") # โ events
m.procedures(query="deploy") # โ workflows that evolve from failures
Native multilingual: ask in Russian, Chinese, Spanish, Japanese โ Mengram retrieves and answers across 23 languages (Cohere multilingual embeddings + rerank).
Install in one prompt (any AI tool)
Paste this into Claude Desktop, Cursor, Codex, Claude Code, or Windsurf โ the agent reads our setup guide, installs the SDK, configures the MCP server, and verifies the round-trip end-to-end. No terminal context-switching.
code
Install Mengram for me. Fetch the canonical install guide at
https://mengram.io/agent-install.txt and follow it precisely.
My email is YOUR_EMAIL_HERE.
Works in any agent with shell + file-edit + web-fetch tools. Prefer doing it manually? See the plain-text guide โ it's structured for human eyes too.
Claude Code โ Memory That Survives /clear AND Auto-Compaction
Persistent memory that survives /clear, auto-compaction, machine switches, and team handoffs โ the SessionStart hook fires after every compact and re-injects your context. The summary can be lossy; the memory isn't.
bash
# 1. Get a free key at https://mengram.io and save it oncemkdir -p ~/.mengram && echo'{"api_key": "om-your-key-here"}' > ~/.mengram/config.json
# 2. Install the plugin (hooks + MCP server + skill)
claude plugin marketplace add alibaizhanov/mengram
claude plugin install mengram@mengram
# 3. Skip the cold start โ import your existing session history# (secrets are redacted on your machine before anything is uploaded)
mengram import claude-code
What happens:
code
Session Start โ Loads your cognitive profile (fires after /clear, compaction, and restarts)
Every Prompt โ Searches past sessions for relevant context (auto-recall)
After Response โ Saves new knowledge in background (auto-save)
No manual saves. No tool calls. Claude just knows what you worked on yesterday โ even after compaction ate the transcript.
Prefer CLI-managed hooks instead of the plugin? pip install mengram-ai && mengram setup does the same via mengram hook install.
Why Mengram?
Every AI memory tool stores facts. Mengram stores 3 types of memory โ and procedures evolve when they fail.
Mengram
claude-mem
Mem0
Zep
Letta
Semantic memory (facts, preferences)
Yes
Yes
Yes
Yes
Yes
Episodic memory (events, decisions)
Yes
Partial
No
No
Partial
Procedural memory (workflows)
Yes
No
No
No
No
Procedures evolve from failures
Yes
No
No
No
No
Cognitive Profile
Yes
No
No
No
No
Native multilingual retrieval (23 languages)
Yes
Partial
No
No
No
Ask & Citations (synthesized answer)
Yes
No
No
No
No
Multi-user isolation
Yes
No
Yes
Yes
No
Knowledge graph
Yes
No
Yes
Yes
Yes
Claude Code hooks (auto-save/recall)
Yes
Yes
No
No
No
MCP server
Yes
Yes
Yes
Yes
Yes
LangChain + CrewAI integrations
Yes
No
Partial
Partial
Partial
Import Claude Code history / ChatGPT / Obsidian
Yes
No
No
No
No
Pricing
Free tier
Free OSS (+cloud backup)
$19-249/mo
Enterprise
Self-host
Get Started in 30 Seconds
1. Install
bash
pip install mengram-ai
2. Setup โ one command does everything: account, Claude Code hooks, MCP configs for detected tools (Cursor, Claude Desktop, Windsurf), history import, and a round-trip check
bash
mengram setup
Or get a key manually at mengram.io and export MENGRAM_API_KEY=om-...
3. Use
python
from mengram import Mengram
m = Mengram(api_key="om-...")
# Add a conversation โ auto-extracts facts, events, and workflows
m.add([
{"role": "user", "content": "Deployed to Railway today. Build passed but forgot migrations โ DB crashed. Fixed by adding a pre-deploy check."},
])
# Search across all 3 memory types at once
results = m.search_all("deployment issues")
# โ {semantic: [...], episodic: [...], procedural: [...]}
File Upload (PDF, DOCX, TXT, MD)
python
# Upload a PDF โ auto-extracts memories using vision AI
result = m.add_file("meeting-notes.pdf")
# โ {"status": "accepted", "job_id": "job-...", "page_count": 12}# Poll for completion
m.job_status(result["job_id"])
javascript
// Node.js โ pass a file pathawait m.addFile('./report.pdf');
// Browser โ pass a File object from <input type="file">await m.addFile(fileInput.files[0]);
bash
# REST API
curl -X POST https://mengram.io/v1/add_file \
-H "Authorization: Bearer om-..." \
-F "file=@meeting-notes.pdf" \
-F "user_id=default"
This happens automatically when you report failures:
python
m.procedure_feedback(proc_id, success=False,
context="OOM error on step 3", failed_at_step=3)
# โ Procedure evolves to v3 with new step added
Every failure-driven revision records which assumption turned out false โ not just which step broke โ and derives a precondition that travels with the procedure at recall time:
json
{"version":3,"violated_assumption":"the build container had enough memory for a full build","preconditions":["check available memory before building"],"success_count":11,"fail_count":2}
An agent loading v3 doesn't repeat the two mistakes that produced it โ and knows what to verify before trusting the workflow.
Or fully automatic โ just add conversations and Mengram detects failures and evolves procedures:
python
m.add([{"role": "user", "content": "Deploy failed again โ OOM on the build step"}])
# โ Episode created โ linked to "Deploy" procedure โ failure detected โ v3 created
Ask Your Memory (RAG built-in)
m.ask() returns a synthesized answer with citations โ not a raw fact list.
Mengram embeds your query, retrieves the top relevant facts, and uses
Cohere Chat to write a grounded answer with native source attribution.
python
result = m.ask("what programming languages do I use?")
print(result["answer"])
# 'You use Python and Rust. Python is your daily language [1] and# Rust is your favorite [2]. You also know Java for enterprise# systems [3].'for cit in result["citations"]:
print(f' "{cit["text"]}" โ {cit["sources"][0]["fact"]}')
# "Python and Rust" โ uses Python daily for backend development# "favorite [2]" โ Rust is favorite language# "Java" โ specializes in Java/Spring Boot
Multilingual: ask in any of 23 languages, get an answer in the same language with citations linking back to facts in the original language they were stored. Premium feature (Pro / Growth / Business).
Cognitive Profile
One API call generates a system prompt from all memories:
python
profile = m.get_profile()
# โ "You are talking to Ali, a developer in Almaty. Uses Python, PostgreSQL,# and Railway. Recently debugged pgvector deployment. Prefers direct# communication and practical next steps."
Insert into any LLM's system prompt for instant personalization.
Mengram works as a persistent memory backend for autonomous agents. Your agent stores what it learns, and recalls it on the next run โ getting smarter over time.
python
from mengram import Mengram
m = Mengram(api_key="om-...")
# Agent completes a task โ store what happened
m.add([
{"role": "user", "content": "Apply to Acme Corp on Greenhouse"},
{"role": "assistant", "content": "Applied successfully. Had to use React Select workaround for dropdowns."},
])
# โ Extracts: fact ("applied to Acme Corp"), episode ("Greenhouse application"),# procedure ("React Select dropdown workaround")# Next run โ agent recalls what worked before
context = m.search_all("Greenhouse application tips")
# โ Returns past procedures, failures, and successful strategies# Report outcome โ procedures evolve
m.procedure_feedback(proc_id, success=False,
context="Dropdown fix stopped working")
# โ Procedure auto-evolves to a new version
Works with any agent framework โ CrewAI, LangChain, AutoGPT, custom loops. The agent just calls add() after actions and search() before decisions.
Self-Hosted (Ollama)
When running locally with Ollama, use models with 8B+ parameters and 8K+ context window. The extraction prompt is ~4,000 tokens โ smaller models will hallucinate or mix examples with real data.
Model
Parameters
Works?
llama3.1:8b
8B
Yes
mistral:7b
7B
Yes
gemma2:9b
9B
Yes
llama3.1:70b
70B
Best
phi4-mini:3.8b
3.8B
No โ context too small
API Reference
Endpoint
Description
POST /v1/add
Add memories (auto-extracts all 3 types)
POST /v1/add_text
Add memories from plain text
POST /v1/add_file
Upload file (PDF, DOCX, TXT, MD) โ vision AI extraction