README first fold: - banner 800px -> 520px - badges condensed from two paragraphs into one row (Trendshift kept, inline) - lead with Introduction instead of benchmarks - new How it works section explaining the add/search loop - benchmarks moved below the intro and retitled from the date-stamped New Memory Algorithm (April 2026) - dropped Research Highlights, which restated the benchmark table verbatim Benchmarks: the README was already correct at 92.5 / 94.4, matching mem0.ai/research and docs/core-concepts/memory-evaluation.mdx. The stale copies were in the migration guides, which quote the numbers as a live reason to upgrade. Updated both to 92.5 / 94.4 (+21 / +27). docs/changelog/highlights.mdx keeps 91.6 / 93.4 inside its dated 2026-04-14 entry, which records what was announced at the time. One-liner: standardized on 'the memory layer for AI agents', already the canonical form in cli-spec.json, cli/python/pyproject.toml and the CLI specification. Swept the remaining variants.
255 lines
12 KiB
Markdown
255 lines
12 KiB
Markdown
<p align="center">
|
|
<a href="https://github.com/mem0ai/mem0">
|
|
<img src="docs/images/banner-sm.png" width="520px" alt="Mem0 - The Memory Layer for AI Agents">
|
|
</a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://trendshift.io/repositories/11194" target="blank"><img src="https://trendshift.io/api/badge/repositories/11194" alt="mem0ai/mem0 | Trendshift" height="20"></a>
|
|
<a href="https://pypi.org/project/mem0ai" target="blank"><img src="https://img.shields.io/pypi/v/mem0ai?color=%2334D058&label=pypi" alt="PyPI version"></a>
|
|
<a href="https://www.npmjs.com/package/mem0ai" target="blank"><img src="https://img.shields.io/npm/v/mem0ai?label=npm" alt="npm version"></a>
|
|
<a href="https://pepy.tech/project/mem0ai"><img src="https://img.shields.io/pypi/dm/mem0ai?label=downloads" alt="PyPI downloads"></a>
|
|
<a href="https://mem0.dev/DiG"><img src="https://img.shields.io/badge/Discord-%235865F2.svg?&logo=discord&logoColor=white" alt="Discord"></a>
|
|
<a href="https://www.ycombinator.com/companies/mem0"><img src="https://img.shields.io/badge/Y%20Combinator-S24-orange" alt="Y Combinator S24"></a>
|
|
<a href="https://github.com/mem0ai/mem0/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="Apache 2.0"></a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://mem0.ai">Learn more</a>
|
|
·
|
|
<a href="https://mem0.dev/DiG">Join Discord</a>
|
|
·
|
|
<a href="https://mem0.dev/demo">Demo</a>
|
|
·
|
|
<a href="https://mem0.ai/research">Research</a>
|
|
</p>
|
|
|
|
# Introduction
|
|
|
|
[Mem0](https://mem0.ai) ("mem-zero") is the memory layer for AI agents. It remembers user preferences, decisions, and history across sessions, so your agents stop asking the same questions and stay useful over weeks instead of a single conversation.
|
|
|
|
## How it works
|
|
|
|
Mem0 sits between your app and your LLM. Two calls do the work.
|
|
|
|
**On `add()`, Mem0 writes memory:**
|
|
1. Your conversation messages go to an LLM in a single extraction pass, which pulls out durable facts ("prefers dark mode", "ships to Berlin") and discards small talk.
|
|
2. Entities in those facts are extracted, embedded, and linked to entities already stored, so related memories connect to each other.
|
|
3. Facts are stored additively. Nothing is overwritten or deleted, so history stays auditable and a wrong extraction cannot silently erase a correct one.
|
|
|
|
**On `search()`, Mem0 reads memory:**
|
|
1. Your query runs against three signals in parallel: semantic vector similarity, BM25 keyword matching, and entity overlap.
|
|
2. The three scores are fused, and time-aware ranking picks the right dated instance when facts changed over time ("where do I live" vs "where did I live before").
|
|
3. You get back a short, ranked list to drop into your prompt, typically under 7K tokens instead of replaying a 25K+ token conversation history.
|
|
|
|
That is the whole loop: `add()` after a turn, `search()` before the next one. Everything else (vector store, embedder, LLM, reranker) is swappable.
|
|
|
|
### Key Features & Use Cases
|
|
|
|
**Core Capabilities:**
|
|
- **Multi-Level Memory**: Seamlessly retains User, Session, and Agent state with adaptive personalization
|
|
- **Developer-Friendly**: Intuitive API, cross-platform SDKs, and a fully managed service option
|
|
|
|
**Applications:**
|
|
- **AI Assistants**: Consistent, context-rich conversations
|
|
- **Customer Support**: Recall past tickets and user history for tailored help
|
|
- **Healthcare**: Track patient preferences and history for personalized care
|
|
- **Productivity & Gaming**: Adaptive workflows and environments based on user behavior
|
|
|
|
## Benchmarks
|
|
|
|
| Benchmark | Previous | Current | Tokens | Latency p50 |
|
|
| --- | --- | --- | --- | --- |
|
|
| **LoCoMo** | 71.4 | **92.5** | 7.0K | 0.88s |
|
|
| **LongMemEval** | 67.8 | **94.4** | 6.8K | 1.09s |
|
|
| **BEAM (1M)** | -- | **64.1** | 6.7K | 1.00s |
|
|
| **BEAM (10M)** | -- | **48.6** | 6.9K | 1.05s |
|
|
|
|
All benchmarks run on the same production-representative model stack. Single-pass retrieval (one call, no agentic loops) at a top_200 retrieval budget. Scores reflect Mem0's managed platform, which includes proprietary optimizations not available in the open-source SDK; open-source users should expect directionally similar gains but not identical numbers.
|
|
|
|
The [evaluation framework](https://github.com/mem0ai/memory-benchmarks) is open-sourced so anyone can reproduce the numbers, and the [full paper](https://mem0.ai/research) covers the methodology. Upgrading from v2? See the [migration guide](https://docs.mem0.ai/migration/oss-v2-to-v3).
|
|
|
|
## 🚀 Quickstart Guide <a name="quickstart"></a>
|
|
|
|
### Sign up as an agent
|
|
|
|
AI agents can mint a working Mem0 API key in under five seconds — no email, no dashboard, no OTP. Four commands end-to-end:
|
|
|
|
```bash
|
|
# 1. Install
|
|
npm install -g @mem0/cli # or: pip install mem0-cli
|
|
|
|
# 2. Sign up as an agent (replace `claude-code` with your name)
|
|
mem0 init --agent --agent-caller claude-code
|
|
|
|
# 3. Add a memory
|
|
mem0 add "I am using mem0"
|
|
|
|
# 4. Search
|
|
mem0 search "am I using mem0"
|
|
```
|
|
|
|
The human owner can claim the account later with `mem0 init --email <their-email>` — same key, memories preserved. Full guide: [Sign up as an agent](https://docs.mem0.ai/platform/agent-signup).
|
|
|
|
| | Library | Self-Hosted Server | Cloud Platform |
|
|
|---|---------|-------------------|----------------|
|
|
| **Best for** | Testing, prototyping | Teams running on their own infrastructure | Zero-ops production use |
|
|
| **Setup** | `pip install mem0ai` | `docker compose up` | Sign up at [app.mem0.ai](https://app.mem0.ai?utm_source=oss&utm_medium=readme) |
|
|
| **Dashboard** | -- | [Yes](https://docs.mem0.ai/open-source/setup) | Yes |
|
|
| **Auth & API Keys** | -- | Yes | Yes |
|
|
| **Advanced Features** | -- | Teasers | All included |
|
|
|
|
Just testing? Use the library. Building for a team? Self-hosted. Want zero ops? Cloud.
|
|
|
|
### Library (pip / npm)
|
|
|
|
```bash
|
|
pip install mem0ai
|
|
```
|
|
|
|
For enhanced hybrid search with BM25 keyword matching and entity extraction, install with NLP support:
|
|
|
|
```bash
|
|
pip install mem0ai[nlp]
|
|
python -m spacy download en_core_web_sm
|
|
```
|
|
|
|
Install sdk via npm:
|
|
|
|
```bash
|
|
npm install mem0ai
|
|
```
|
|
|
|
### Self-Hosted Server
|
|
|
|
> **Note:** Self-hosted auth is on by default. Upgrading from a pre-auth build? Set `ADMIN_API_KEY`, register an admin through the wizard, or `AUTH_DISABLED=true` for local dev only. See [upgrade notes](https://docs.mem0.ai/open-source/setup#upgrade-notes).
|
|
|
|
```bash
|
|
# Recommended: one command — start the stack, create an admin, issue the first API key.
|
|
cd server && make bootstrap
|
|
|
|
# Manual: start the stack and finish setup via the browser wizard.
|
|
cd server && docker compose up -d # http://localhost:3000
|
|
```
|
|
|
|
See the [self-hosted docs](https://docs.mem0.ai/open-source/overview) for configuration.
|
|
|
|
### Cloud Platform
|
|
|
|
1. Sign up on [Mem0 Platform](https://app.mem0.ai?utm_source=oss&utm_medium=readme)
|
|
2. Embed the memory layer via SDK or API keys
|
|
3. Using hosted Qdrant vectors? See the [Platform migration guide](https://docs.mem0.ai/migration/oss-to-platform) to import them into Mem0 Platform.
|
|
|
|
### CLI
|
|
|
|
Manage memories from your terminal:
|
|
|
|
```bash
|
|
npm install -g @mem0/cli # or: pip install mem0-cli
|
|
|
|
mem0 init
|
|
mem0 add "Prefers dark mode and vim keybindings" --user-id alice
|
|
mem0 search "What does Alice prefer?" --user-id alice
|
|
```
|
|
|
|
See the [CLI documentation](https://docs.mem0.ai/platform/cli) for the full command reference.
|
|
|
|
### Agent Skills
|
|
|
|
Teach your AI coding assistant (Claude Code, Codex, Cursor, Windsurf, OpenCode, OpenClaw, and any tool that supports the skills standard) how to build with Mem0. Two categories:
|
|
|
|
**Reference skills — always on** (SDK knowledge loaded into the assistant's context):
|
|
|
|
```bash
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0-cli
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0-vercel-ai-sdk
|
|
```
|
|
|
|
**Pipeline skills — run on demand** (execute an end-to-end workflow in an existing repo):
|
|
|
|
```bash
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0-integrate
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0-test-integration
|
|
npx skills add https://github.com/mem0ai/mem0 --skill mem0-oss-to-platform
|
|
```
|
|
|
|
Use `/mem0-integrate` to wire Mem0 into an existing repo via a test-first pipeline, then `/mem0-test-integration` to verify. Use `/mem0-oss-to-platform` to migrate an existing project from Mem0 OSS to the hosted Platform SDK. See the [skills catalog](./skills/) or [Vibecoding with Mem0](https://docs.mem0.ai/vibecoding) for the full picture.
|
|
|
|
### Basic Usage
|
|
|
|
Mem0 requires an LLM to function, with `gpt-5-mini` from OpenAI as the default. However, it supports a variety of LLMs; for details, refer to our [Supported LLMs documentation](https://docs.mem0.ai/components/llms/overview).
|
|
|
|
Mem0 uses `text-embedding-3-small` from OpenAI as the default embedding model. For best results with hybrid search (semantic + keyword + entity boosting), we recommend using at least [Qwen 600M](https://huggingface.co/Alibaba-NLP/gte-Qwen2-1.5B-instruct) or a comparable embedding model. See [Supported Embeddings](https://docs.mem0.ai/components/embedders/overview) for configuration details.
|
|
|
|
First step is to instantiate the memory:
|
|
|
|
```python
|
|
from openai import OpenAI
|
|
from mem0 import Memory
|
|
|
|
openai_client = OpenAI()
|
|
memory = Memory()
|
|
|
|
def chat_with_memories(message: str, user_id: str = "default_user") -> str:
|
|
# Retrieve relevant memories
|
|
relevant_memories = memory.search(query=message, filters={"user_id": user_id}, top_k=3)
|
|
memories_str = "\n".join(f"- {entry['memory']}" for entry in relevant_memories["results"])
|
|
|
|
# Generate Assistant response
|
|
system_prompt = f"You are a helpful AI. Answer the question based on query and memories.\nUser Memories:\n{memories_str}"
|
|
messages = [{"role": "system", "content": system_prompt}, {"role": "user", "content": message}]
|
|
response = openai_client.chat.completions.create(model="gpt-5-mini", messages=messages)
|
|
assistant_response = response.choices[0].message.content
|
|
|
|
# Create new memories from the conversation
|
|
messages.append({"role": "assistant", "content": assistant_response})
|
|
memory.add(messages, user_id=user_id)
|
|
|
|
return assistant_response
|
|
|
|
def main():
|
|
print("Chat with AI (type 'exit' to quit)")
|
|
while True:
|
|
user_input = input("You: ").strip()
|
|
if user_input.lower() == 'exit':
|
|
print("Goodbye!")
|
|
break
|
|
print(f"AI: {chat_with_memories(user_input)}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
```
|
|
|
|
For detailed integration steps, see the [Quickstart](https://docs.mem0.ai/quickstart) and [API Reference](https://docs.mem0.ai/api-reference).
|
|
|
|
## 🔗 Integrations & Demos
|
|
|
|
- **ChatGPT with Memory**: Personalized chat powered by Mem0 ([Live Demo](https://mem0.dev/demo))
|
|
- **Browser Extension**: Store memories across ChatGPT, Perplexity, and Claude ([Chrome Extension](https://chromewebstore.google.com/detail/onihkkbipkfeijkadecaafbgagkhglop?utm_source=item-share-cb))
|
|
- **Langgraph Support**: Build a customer bot with Langgraph + Mem0 ([Guide](https://docs.mem0.ai/integrations/langgraph))
|
|
- **CrewAI Integration**: Tailor CrewAI outputs with Mem0 ([Example](https://docs.mem0.ai/integrations/crewai))
|
|
|
|
## 📚 Documentation & Support
|
|
|
|
- Full docs: https://docs.mem0.ai
|
|
- Community: [Discord](https://mem0.dev/DiG) · [X (formerly Twitter)](https://x.com/mem0ai)
|
|
- Contact: founders@mem0.ai
|
|
|
|
## Citation
|
|
|
|
We now have a paper you can cite:
|
|
|
|
```bibtex
|
|
@article{mem0,
|
|
title={Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory},
|
|
author={Chhikara, Prateek and Khant, Dev and Aryan, Saket and Singh, Taranjeet and Yadav, Deshraj},
|
|
journal={arXiv preprint arXiv:2504.19413},
|
|
year={2025}
|
|
}
|
|
```
|
|
|
|
## ⚖️ License
|
|
|
|
Apache 2.0 — see the [LICENSE](https://github.com/mem0ai/mem0/blob/main/LICENSE) file for details.
|