Human-like memory for AI — semantic, episodic & procedural. Experience-driven procedures, Cognitive Profile, unified search, memory agents. Free open-source Mem0 alternative.
Project description
Mengram
The memory layer for AI agents that learns from experience
Your agents remember facts, events, and workflows — and procedures improve automatically when they fail.
Website · Get API Key · API Docs · Examples
Why Mengram?
Every AI memory tool stores facts. Mengram stores 3 types — and procedures evolve from failures.
| Mengram | Mem0 | Letta | Zep | |
|---|---|---|---|---|
| Semantic Memory (facts) | ✅ | ✅ | ✅ | ✅ |
| Episodic Memory (events) | ✅ | ❌ | Partial | ❌ |
| Procedural Memory (workflows) | ✅ | ❌ | ❌ | ❌ |
| Experience-Driven Evolution | ✅ | ❌ | ❌ | ❌ |
| Cognitive Profile | ✅ | ❌ | ❌ | ❌ |
| Multi-User Isolation | ✅ | ✅ | ❌ | ✅ |
| Knowledge Graph | ✅ | ✅ | ✅ | ✅ |
| LangChain / CrewAI / OpenClaw | ✅ | Partial | ❌ | ✅ |
| Import (ChatGPT, Obsidian) | ✅ | ❌ | ❌ | ❌ |
| MCP Server | ✅ | ✅ | ✅ | ❌ |
| Price | Free | $19–249/mo | Free (self-host) | Enterprise |
Quick Start
pip install mengram-ai
from cloud.client import CloudMemory
m = CloudMemory(api_key="om-...") # Free key → mengram.io/dashboard
# Add a conversation — Mengram 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 facts
m.search("deployment setup")
# Search events — what happened?
m.episodes(query="deployment")
# → [{summary: "Deployed to Railway, DB crashed due to missing migrations", outcome: "resolved", ...}]
# Search workflows — how to do it?
m.procedures(query="deploy")
# → [{name: "Deploy to Railway", steps: ["build", "run migrations", "push", "verify"], ...}]
# Unified search — all 3 types at once
m.search_all("deployment issues")
# → {semantic: [...], episodic: [...], procedural: [...]}
JavaScript / TypeScript:
npm install mengram-ai
const { MengramClient } = require('mengram-ai');
const m = new MengramClient('om-...');
await m.add([{ role: 'user', content: 'Fixed OOM with Redis cache' }]);
const all = await m.searchAll('database issues');
// → { semantic: [...], episodic: [...], procedural: [...] }
Experience-Driven Procedures
The feature no one else has. Procedures learn from real outcomes — not static runbooks.
Week 1: "Deploy" → build → push → deploy
↓ FAILURE: forgot migrations, DB crashed
Week 2: "Deploy" v2 → build → run migrations → push → deploy
↓ FAILURE: OOM on Railway
Week 3: "Deploy" v3 → build → run migrations → check memory → push → deploy ✅
This happens automatically when you report failures:
# Report failure with context → procedure evolves to a new version
m.procedure_feedback(proc_id, success=False,
context="OOM error on step 3", failed_at_step=3)
# View version history
history = m.procedure_history(proc_id)
# → {versions: [v1, v2, v3], evolution_log: [{change: "step_added", reason: "prevent OOM"}]}
Or fully automatic — add conversations and Mengram detects failures, links them to procedures, and evolves:
m.add([{"role": "user", "content": "Deploy to Railway failed again — OOM on the build step"}])
# → Episode auto-linked to "Deploy" procedure → failure detected → v3 created
Cognitive Profile
One API call generates a system prompt from all your memories:
profile = m.get_profile()
# → "You are talking to Ali, a developer in Almaty building Mengram.
# He uses Python, PostgreSQL, and Railway. Recently debugged pgvector deployment.
# Workflows: deploys via build→twine→npm→git. Communicate directly, focus on practical next steps."
Insert into any LLM's system prompt for instant personalization.
Import Existing Data
Kill the cold-start problem — import your ChatGPT history, Obsidian vault, or text files:
# ChatGPT export (Settings → Data Controls → Export)
mengram import chatgpt ~/Downloads/chatgpt-export.zip --cloud
# Obsidian vault
mengram import obsidian ~/Documents/MyVault --cloud
# Any text/markdown files
mengram import files notes/*.md --cloud
Works with Python SDK too:
m = CloudMemory(api_key="om-...")
m.import_chatgpt("export.zip")
m.import_obsidian("~/Documents/MyVault")
m.import_files(["notes.md", "journal.txt"])
Integrations
MCP Server (Claude Desktop, Cursor, Windsurf)
{
"mcpServers": {
"mengram": {
"command": "mengram",
"args": ["server", "--cloud"],
"env": { "MENGRAM_API_KEY": "om-..." }
}
}
}
LangChain
from integrations.langchain import MengramChatMessageHistory, MengramRetriever
# Drop-in message history — auto-saves to Mengram
history = MengramChatMessageHistory(api_key="om-...", user_id="user-1")
# RAG retriever — searches all 3 memory types
retriever = MengramRetriever(api_key="om-...")
CrewAI
from integrations.crewai import create_mengram_tools
tools = create_mengram_tools(api_key="om-...")
# → 5 tools: search, remember, profile, save_workflow, workflow_feedback
agent = Agent(role="Support Engineer", tools=tools)
OpenClaw
openclaw plugins install openclaw-mengram
{
"plugins": {
"entries": {
"openclaw-mengram": {
"enabled": true,
"config": { "apiKey": "${MENGRAM_API_KEY}" }
}
},
"slots": { "memory": "openclaw-mengram" }
}
}
Auto-recall before every turn, auto-capture after every turn. 6 tools, slash commands, CLI. GitHub · npm
Agent Templates
Ready-to-run examples — clone, set API key, run in 5 minutes:
| Template | Stack | What it shows |
|---|---|---|
| DevOps Agent | Python SDK | Procedures that evolve from deployment failures |
| Customer Support | CrewAI | Agent with 5 memory tools, remembers returning customers |
| Personal Assistant | LangChain | Cognitive profile + auto-saving chat history |
cd examples/devops-agent && pip install -r requirements.txt
export MENGRAM_API_KEY=om-...
python main.py
API Reference
All endpoints require Authorization: Bearer om-.... Your API key identifies the account. Pass user_id to isolate data per end-user (multi-tenant apps).
| Endpoint | Description |
|---|---|
POST /v1/add |
Add memories (auto-extracts all 3 types) |
POST /v1/search |
Semantic search |
POST /v1/search/all |
Unified search (all 3 types) |
GET /v1/episodes/search |
Search episodic memories |
GET /v1/procedures/search |
Search procedural memories |
PATCH /v1/procedures/{id}/feedback |
Report success/failure → triggers evolution |
GET /v1/procedures/{id}/history |
Version history + evolution log |
GET /v1/profile |
Cognitive Profile |
GET /v1/triggers |
Smart Triggers (reminders, contradictions, patterns) |
POST /v1/agents/run |
Run memory agents (Curator, Connector, Digest) |
Multi-User Isolation
Building an app with multiple users? Pass user_id to isolate memories per end-user. One API key, many users — each sees only their own data:
# Each user_id gets its own isolated memory space
m.add([...], user_id="alice")
m.add([...], user_id="bob")
m.search_all("preferences", user_id="alice") # Only Alice's memories
m.search_all("preferences", user_id="bob") # Only Bob's memories
m.get_profile(user_id="alice") # Alice's cognitive profile
await m.add([...], { userId: 'alice' });
await m.searchAll('preferences', { userId: 'alice' }); // Only Alice's memories
No user_id? Everything works as before — defaults to a single shared memory space.
Full interactive docs: mengram.io/docs
License
Apache 2.0 — free for commercial use.
Built by Ali Baizhanov · mengram.io
Project details
Release history Release notifications | RSS feed
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 mengram_ai-2.14.2.tar.gz.
File metadata
- Download URL: mengram_ai-2.14.2.tar.gz
- Upload date:
- Size: 148.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d75dd32e56aeeb9ed2cfecdaba0971e2111b656fcf9cfcd3e78ff39ae809d7d0
|
|
| MD5 |
7e7b14ffc7cad14bbd2286495d7b898e
|
|
| BLAKE2b-256 |
9d53c970c1e843fdef4ae95fc10ff801dc444c0889d43fb026852d43c0579bb2
|
File details
Details for the file mengram_ai-2.14.2-py3-none-any.whl.
File metadata
- Download URL: mengram_ai-2.14.2-py3-none-any.whl
- Upload date:
- Size: 154.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a015b00759871fab264b45ad62383aef6556a0891f043090d77fe739aa008ec
|
|
| MD5 |
bd84cf0b66136f71c336564c92467848
|
|
| BLAKE2b-256 |
16ae0c3341ae1442d5250728c6824543e2c1b5373ef91fbde016d07d15f6981c
|