Mem0 TypeScript SDK
Learn more · Join Discord · Demo
Mem0 gives AI assistants and agents persistent memory. It extracts useful facts from conversations, scopes them to a user, agent, or run, and retrieves the relevant facts for later interactions. The TypeScript package, mem0ai on npm, includes MemoryClient for the hosted Mem0 Platform, imported from mem0ai, and Memory for open-source, in-process memory, imported from mem0ai/oss.
Requirements
- Node.js 20 or later
- Hosted Platform:
MEM0_API_KEYfrom the Mem0 dashboard - Open source with the default providers:
OPENAI_API_KEY
Install
npm install mem0ai
Platform or open source
Platform (MemoryClient) |
Open source (Memory) |
|
|---|---|---|
| Import | import { MemoryClient } from "mem0ai" |
import { Memory } from "mem0ai/oss" |
| Where memories live | Mem0's hosted API | Your configured vector store |
| Required key | MEM0_API_KEY |
OPENAI_API_KEY with the defaults, or keys for your chosen providers |
| Extraction | Managed and asynchronous | Runs against your configured LLM |
| Best for | Zero-ops production use | Local development and custom infrastructure |
Platform quickstart
Set MEM0_API_KEY, then add a conversation:
import { MemoryClient, type Message } from "mem0ai";
const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY! });
const messages: Message[] = [
{ role: "user", content: "I am vegetarian and allergic to nuts." },
{ role: "assistant", content: "I will remember that." },
];
await client.add(messages, { userId: "alex" });
Hosted add() queues extraction and usually returns an eventId with status: "PENDING". Do not search immediately after add(). Wait for processing to finish in the dashboard, or use a memory_add webhook, then search:
import { MemoryClient } from "mem0ai";
const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY! });
const results = await client.search("What does Alex eat?", {
filters: { user_id: "alex" },
topK: 5,
});
console.log(results.results);
search() and getAll() take entity IDs inside filters with snake_case keys. add() and deleteAll() take userId, agentId, or runId as top-level camelCase options.
Open-source quickstart
Set OPENAI_API_KEY before using the default OpenAI LLM and embedder:
import { Memory } from "mem0ai/oss";
const memory = new Memory();
const messages = [
{ role: "user", content: "I am vegetarian and allergic to nuts." },
{ role: "assistant", content: "I will remember that." },
];
await memory.add(messages, { userId: "alex" });
const results = await memory.search("What does Alex eat?", {
filters: { user_id: "alex" },
topK: 5,
});
console.log(results.results);
The default Memory configuration uses OpenAI gpt-5-mini, OpenAI text-embedding-3-small, a SQLite-backed vector store at ~/.mem0/vector_store.db, and a SQLite history database at memory.db. Pass a config object to Memory to change the LLM, embedder, vector store, history path, or reranker.
Configuration and features
| Feature | Documentation |
|---|---|
Memory operations: add, search, get, getAll, update, delete, deleteAll, history, all async and Promise-based |
Node quickstart |
Entity scoping with userId, agentId, and runId |
Entity-scoped memory |
| Metadata and filters | Metadata filtering |
| LLMs, embedders, vector stores, and rerankers | Components |
| Graph memory | Graph memory |
| Custom instructions | Custom instructions |
| Multimodal input | Multimodal support |
| Platform webhooks, export, feedback, expiration, and custom categories | Platform features |
Benchmarks
Benchmarking Mem0's token-efficient memory algorithm
| Benchmark | Old | New | Tokens | Latency p50 |
|---|---|---|---|---|
| LoCoMo | 71.4 | 92.5 | 7.0K | 0.88s |
| LongMemEval | 67.8 | 94.4 | 6.8K | 1.09s |
| BEAM (1M) | n/a | 64.1 | 6.7K | 1.00s |
| BEAM (10M) | n/a | 48.6 | 6.9K | 1.05s |
All benchmarks use the same production-representative model stack, single-pass retrieval, and a top-200 retrieval budget. Scores reflect the managed Platform, which includes proprietary optimizations not available in the open-source SDK. Open-source results should show similar directional gains, but may not match these scores.
The current algorithm uses single-pass ADD-only extraction, first-class agent facts, entity linking, multi-signal retrieval, and temporal reasoning. Read the research paper, the migration guide, or the open-source evaluation framework.
Self-hosted server
Run Mem0 as a FastAPI service with PostgreSQL, pgvector, and Neo4j:
# Recommended: start the stack, create an admin, and issue the first API key.
cd server && make bootstrap
# Manual: start the stack, then finish setup in the browser wizard.
cd server && docker compose up -d
Self-hosted authentication is enabled by default. See the self-hosted documentation and upgrade notes.
CLI
Manage hosted memories from your terminal:
npm install -g @mem0/cli
mem0 init
mem0 add "Prefers dark mode and vim keybindings" --user-id alice
mem0 search "What does Alice prefer?" --user-id alice
AI agents can create an account without email or a dashboard:
mem0 init --agent --agent-caller claude-code
The human owner can claim the account later with mem0 init --email <their-email>. The API key and memories remain unchanged. See the CLI documentation and agent signup guide.
Agent skills
Install reference skills to give compatible coding assistants Mem0 context:
npx skills add https://github.com/mem0ai/mem0 --skill mem0
npx skills add https://github.com/mem0ai/mem0 --skill mem0-cli
Install pipeline skills for end-to-end workflows:
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
See the skills catalog or Vibecoding with Mem0.
Integrations and demos
Documentation and help
Contributing
Read CONTRIBUTING.md before opening an issue or pull request.
Citation
@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 LICENSE.