Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
Mengram

Give your AI agents memory that actually learns

GitHub stars PyPI npm License: Apache 2.0 PyPI Downloads Last commit

Website · Get API Key · Docs · Console · Examples

pip install mengram-ai # or: npm install mengram-ai
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.

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 — Zero-Config Memory

Two commands. Claude Code remembers everything across sessions automatically.

pip install mengram-ai mengram setup # Sign up + install hooks (interactive)

Or manually: export MENGRAM_API_KEY=om-...mengram hook install

What happens:

Session Start  →  Loads your cognitive profile (who you are, preferences, tech stack)
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.

mengram hook status # check what's installed mengram hook uninstall # remove all hooks

Why Mengram?

Every AI memory tool stores facts. Mengram stores 3 types of memory — and procedures evolve when they fail.

Mengramclaude-memMem0ZepLetta
Semantic memory (facts, preferences)YesYesYesYesYes
Episodic memory (events, decisions)YesPartialNoNoPartial
Procedural memory (workflows)YesNoNoNoNo
Procedures evolve from failuresYesNoNoNoNo
Cognitive ProfileYesNoNoNoNo
Native multilingual (23 languages)YesNoNoNoNo
Ask & Citations (synthesized answer)YesNoNoNoNo
Multi-user isolationYesNoYesYesNo
Knowledge graphYesNoYesYesYes
Claude Code hooks (auto-save/recall)YesYesNoNoNo
LangChain + CrewAI + MCPYesNoPartialPartialPartial
Import ChatGPT / ObsidianYesNoNoNoNo
PricingFree tierFree / OSS$19-249/moEnterpriseSelf-host

Get Started in 30 Seconds

1. Install

pip install mengram-ai

2. Setup (creates account + installs Claude Code hooks)

mengram setup

Or get a key manually at mengram.io and export MENGRAM_API_KEY=om-...

3. Use

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)
# 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"])
// Node.js — pass a file path await m.addFile('./report.pdf'); // Browser — pass a File object from <input type="file"> await m.addFile(fileInput.files[0]);
# REST API curl -X POST https://mengram.io/v1/add_file \ -H "Authorization: Bearer om-..." \ -F "file=@meeting-notes.pdf" \ -F "user_id=default"
JavaScript / TypeScript
npm install mengram-ai
const { MengramClient } = require('mengram-ai'); const m = new MengramClient('om-...'); await m.add([{ role: 'user', content: 'Fixed OOM by adding Redis cache layer' }]); const results = await m.searchAll('database issues'); // → { semantic: [...], episodic: [...], procedural: [...] }
REST API (curl)
# Add memory curl -X POST https://mengram.io/v1/add \ -H "Authorization: Bearer om-..." \ -H "Content-Type: application/json" \ -d '{"messages": [{"role": "user", "content": "I prefer dark mode and vim keybindings"}]}' # Search all 3 types curl -X POST https://mengram.io/v1/search/all \ -H "Authorization: Bearer om-..." \ -d '{"query": "user preferences"}'

3 Memory Types

Semantic — facts, preferences, knowledge

m.search("tech stack") # → ["Uses Python 3.12", "Deploys to Railway", "PostgreSQL with pgvector"]

Episodic — events, decisions, outcomes

m.episodes(query="deployment") # → [{summary: "DB crashed due to missing migrations", outcome: "resolved", date: "2025-05-12"}]

Procedural — workflows that evolve

Week 1:  "Deploy" → build → push → deploy
                                         ↓ FAILURE: forgot migrations
Week 2:  "Deploy" v2 → build → run migrations → push → deploy
                                                          ↓ FAILURE: OOM
Week 3:  "Deploy" v3 → build → run migrations → check memory → push → deploy ✅

This happens automatically when you report failures:

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

Or fully automatic — just add conversations and Mengram detects failures and evolves procedures:

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.

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:

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.

Import Existing Data

Kill the cold-start problem:

mengram import chatgpt ~/Downloads/chatgpt-export.zip --cloud # ChatGPT history mengram import obsidian ~/Documents/MyVault --cloud # Obsidian vault mengram import files notes/*.md --cloud # Any text/markdown

Integrations

Claude Code — Auto-memory hooks

mengram hook install

3 hooks: profile on start, recall on every prompt, save after responses. Zero manual effort.

Docs

MCP Server — Claude Desktop, Cursor, Codex, Windsurf, Cline

{ "mcpServers": { "mengram": { "command": "mengram", "args": ["server", "--cloud"], "env": { "MENGRAM_API_KEY": "om-..." } } } }

30 tools for memory management.

LangChainpip install langchain-mengram

from langchain_mengram import ( MengramRetriever, MengramChatMessageHistory, ) retriever = MengramRetriever(api_key="om-...") docs = retriever.invoke("deployment issues")

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", tools=tools)

OpenClaw

openclaw plugins install openclaw-mengram

Auto-recall before every turn, auto-capture after. 12 tools, slash commands, Graph RAG.

GitHub · npm

CLI — Full command-line interface

mengram search "deployment" --cloud mengram profile --cloud mengram import chatgpt export.zip --cloud mengram hook install

Docs

Claude Managed Agents — MCP memory for hosted agents

{ "mcp_servers": [{ "type": "url", "name": "mengram", "url": "https://mengram.io/mcp/sse" }] }

30 memory tools via MCP. Docs

n8n — HTTP nodes for any workflow

POST https://mengram.io/v1/add
POST https://mengram.io/v1/search

No code needed — drag and drop memory into any n8n workflow.

Docs

Multi-User Isolation

One API key, many users — each sees only their own data:

m.add([...], user_id="alice") m.add([...], user_id="bob") m.search_all("preferences", user_id="alice") # Only Alice's memories m.get_profile(user_id="alice") # Alice's cognitive profile

Async Client

Non-blocking Python client built on httpx:

from mengram import AsyncMengram async with AsyncMengram() as m: await m.add([{"role": "user", "content": "I use async/await"}]) results = await m.search("async") profile = await m.get_profile()

Install with pip install mengram-ai[async].

Metadata Filters

Filter search results by metadata:

results = m.search("config", filters={"agent_id": "support-bot", "app_id": "prod"})

Webhooks

Get notified when memories change:

m.create_webhook( url="https://your-app.com/hook", event_types=["memory_add", "memory_update"], )

Agent Templates

Clone, set API key, run in 5 minutes:

TemplateStackWhat it shows
DevOps AgentPython SDKProcedures that evolve from deployment failures
Customer SupportCrewAIAgent with 5 memory tools, remembers returning customers
Personal AssistantLangChainCognitive profile + auto-saving chat history
cd examples/devops-agent && pip install -r requirements.txt export MENGRAM_API_KEY=om-... python main.py

Use with AI Agents

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.

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.

ModelParametersWorks?
llama3.1:8b8BYes
mistral:7b7BYes
gemma2:9b9BYes
llama3.1:70b70BBest
phi4-mini:3.8b3.8BNo — context too small

API Reference

EndpointDescription
POST /v1/addAdd memories (auto-extracts all 3 types)
POST /v1/add_textAdd memories from plain text
POST /v1/add_fileUpload file (PDF, DOCX, TXT, MD) — vision AI extraction
POST /v1/searchSemantic search
POST /v1/search/allUnified search (semantic + episodic + procedural)
GET /v1/episodes/searchSearch events and decisions
GET /v1/procedures/searchSearch workflows
PATCH /v1/procedures/{id}/feedbackReport outcome — triggers evolution
GET /v1/procedures/{id}/historyVersion history + evolution log
GET /v1/profileCognitive Profile
GET /v1/triggersSmart Triggers (reminders, contradictions, patterns)
POST /v1/agents/runMemory agents (Curator, Connector, Digest)
GET /v1/meAccount info

Full interactive docs: mengram.io/docs

Quota Headers

Every authenticated response includes usage headers:

HeaderDescription
X-Quota-Add-UsedAdd calls used this month
X-Quota-Add-LimitAdd calls allowed this month
X-Quota-Search-UsedSearch calls used this month
X-Quota-Search-LimitSearch calls allowed this month

SDKs expose this via .quota:

m.search("test") print(m.quota) # {"add": {"used": 5, "limit": 30}, "search": {"used": 12, "limit": 100}}

Community

Star History

Star History Chart

License

Apache 2.0 — free for commercial use.


关于 About

Human-like memory for AI agents — semantic, episodic & procedural. Experience-driven procedures that learn from failures. Free API, Python & JS SDKs, LangChain, CrewAI & OpenClaw integrations.
agent-memoryai-agentsai-memoryclaude-desktopcognitive-architecturecoherecursor-aiepisodic-memoryknowledge-graphletta-alternativellm-memorymcp-servermem0-alternativemodel-context-protocolmultilingual-embeddingspgvectorprocedural-memorypythonragsemantic-search

语言 Languages

Python65.5%
HTML27.2%
JavaScript3.1%
TypeScript3.1%
Shell0.5%
CSS0.5%
Dockerfile0.0%
Procfile0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
533
Total Commits
峰值: 142次/周
Less
More

核心贡献者 Contributors