- Category
- Developer Tools
- Rank
- No. 688Tools index
Previous survey · No. 680 ·
- Pricing
- Freemium
- Type
- TOOL
- Use case
- Data, Retrieval & Knowledge · Agent Building
- Interfaces
- API · Client SDK · CLI · Web
- Builder
- @mem0ai
- GitHub
- 67.1k stars
- Latest release
- v2.2.1
- Date
About
Mem0 is a memory layer that gives AI agents and apps persistent, cross-session context by extracting, compressing, and retrieving user/session/agent-level memories. Its latest algorithm combines semantic, keyword, and entity-linked retrieval with temporal reasoning, reporting large accuracy gains on memory benchmarks like LoCoMo and LongMemEval while cutting token usage.
What it does
Mem0 gives a chatbot or agent a running memory of the people it talks to. An LLM call pulls durable facts out of a conversation, preferences, decisions, plans, and files them under whichever combination of user, agent, and session tags the caller supplies. New facts are appended rather than merged, so the store only grows. At lookup time it does not run a single search: it scores each candidate on meaning, literal word overlap, and any linked entities, blends the three, then applies a time-aware step that favors whichever dated memory actually answers a question about now, the past, or what comes next.
Why it's ranked here
Apache 2.0, and genuine architectural range: one project ships a plain library, a self-hosted server, a hosted platform, and integrations across a long list of vector databases, not a thin wrapper around one backend. The code defends the multi-tenant model it advertises, refusing to let free-form metadata silently move a memory into someone else's scope. Where caution belongs is candor: the vendor's own documentation says its best benchmark numbers come from the managed platform's proprietary layer, not the code anyone can run themselves. That is honest, and it means judging the open code and the paid tier as two separate products.
What's good
The scope model is enforced in code, not just documented: identifiers a caller passes as free-form metadata get stripped if they collide with the fields that actually control ownership, so a memory can't be reassigned to another user by accident. Secrets embedded in configuration objects are redacted before anything reaches the bundled analytics pipeline. Vector store support is unusually broad, covering more than a dozen backends as optional installs, so a team already running Postgres, Redis, or Elasticsearch can point memory storage at infrastructure it already operates.
Tradeoffs
Both bundled defaults point at one vendor: fact extraction and embedding generation use OpenAI models unless reconfigured, and the self-hosted server's list of ready providers covers only three vendors without a rebuild. That server also demands deliberate auth setup, teams upgrading from an older, authless build get locked out until an admin key is set or auth is explicitly disabled. And the project's own quickstart is written for an AI agent to create its account and mint an API key with no human present, a design choice worth noticing before wiring this into anything touching real user data.
How to use it well
Start with the plain library for prototyping, move to the self-hosted server once a team needs its own dashboard, auth, and infrastructure, and use the managed platform for zero ops and the strongest retrieval quality, since that quality is not fully available in the open code. For real hybrid-search gains, install the optional language-processing extras and swap in a stronger embedding model, the bundled default is a small one. It suits products that need to remember a specific person across sessions; it is a poor fit for teams that need a fully local, single-vendor-free stack out of the box.
Technical notes+
pyproject.toml packages the library as mem0ai on PyPI, requiring Python 3.10 or newer, with core dependencies on openai, qdrant-client, pydantic, sqlalchemy, and posthog, plus optional extras (nlp, vector-stores, llms) that add spacy, over a dozen vector database clients (chromadb, pinecone, weaviate, elasticsearch, pymilvus, redisvl, oracledb, azure-search-documents among them), and alternate LLM SDKs (groq, together, litellm, ollama, vertexai, google-genai). mem0/__init__.py exports Memory, AsyncMemory, MemoryClient, and AsyncMemoryClient as the public surface. mem0/memory/main.py implements the Memory class's scoping guarantees: _strip_identity_keys removes user_id/agent_id/run_id/actor_id from caller-supplied metadata so it cannot override the entity params that actually set scope, _validate_and_trim_entity_id normalizes and rejects malformed ids, and _is_sensitive_field/_SENSITIVE_FIELDS_EXACT redact keys like api_key and password before _safe_deepcopy_config lets a config object reach telemetry. server/main.py is the FastAPI self-hosted server: it refuses to start without JWT_SECRET unless AUTH_DISABLED=true, exposes an ADMIN_API_KEY bootstrap path, defaults to a pgvector store plus gpt-5-mini and text-embedding-3-small, and restricts bundled LLM/embedder providers to BUNDLED_LLM_PROVIDERS (openai, anthropic, gemini) and BUNDLED_EMBEDDER_PROVIDERS (openai, gemini) unless the image is rebuilt. README.md documents the same defaults and states the Apache 2.0 license.
Observed
- License
- License: Apache 2.0 (pyproject.toml and README.md)
- Language
- Primary language Python, requires Python >=3.10,<4.0 (pyproject.toml)
- Packaging
- Packaged as the PyPI package mem0ai and the npm package mem0ai; also distributable as a self-hosted Docker Compose stack (server/main.py) and a hosted cloud platform
- Interfaces
- Interfaces: a Python library (Memory / AsyncMemory / MemoryClient / AsyncMemoryClient exported from mem0/__init__.py), a CLI, and a self-hosted FastAPI REST server (server/main.py)
- Authentication
- Self-hosted server refuses to start without JWT_SECRET unless AUTH_DISABLED=true is set (server/main.py)
- Vector store integrations
- Optional vector-store integrations ship as extras: qdrant, chroma, pinecone, weaviate, elasticsearch, milvus, redis/redisvl, pgvector-compatible Postgres, MongoDB, Oracle, Azure AI Search, and others (pyproject.toml)
- Default providers
- Default LLM is OpenAI gpt-5-mini and default embedder is OpenAI text-embedding-3-small (README.md, server/main.py)
- Bundled provider restrictions
- Bundled self-hosted server restricts usable providers to openai, anthropic, and gemini for LLMs and openai, gemini for embedders without rebuilding the image (server/main.py)
Read from README.md, pyproject.toml, mem0/__init__.py, mem0/memory/main.py, server/main.py.
What it can do
Extract memories from user/agent conversations or sessions
Conversation or session text → Extracted memory entries
Compress extracted memories to reduce token usage
Extracted memory entries → Compressed memory representation
Retrieve relevant memories using combined semantic, keyword, and entity-linked search
Query text → Ranked relevant memories
Apply temporal reasoning during memory retrieval
Query with time context → Time-aware memory results
Provide persistent cross-session context for AI agents/apps
User/session/agent identifiers → Stored contextual memory
Intel on Mem0
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.