The managed benchmark does not describe identical open-source behavior
Mem0's Apache-2.0 SDK gives an assistant somewhere durable to put facts such as a user's preferences, earlier requests, and confirmed actions. The application writes conversations or facts, then searches for relevant memories before the next model call. Python and TypeScript SDKs cover the library route, while a self-hosted server and Mem0's cloud service cover teams that want an API. That range is useful because memory often starts as one function call and becomes shared infrastructure once several agents need the same history.
The README leads with April 2026 retrieval results, but its qualification matters more than the scores. Those tests used the managed platform, including proprietary optimizations absent from the open-source SDK. Mem0 says open-source users should expect gains in the same direction, not identical numbers. Treat the table as evidence for the hosted product. If you are adopting the Apache-2.0 code, measure recall, false retrievals, token use, and deletion behavior with your own conversations.
A 37-second install still leaves providers to configure
Our fresh Debian container installed commit 94c3fe9 in 37 seconds. It added 76 packages and occupied 210 MB, then the build completed in 14 seconds. That is a friendly first result for a Python repository containing 1,896 files and roughly 251,432 lines of source. Pip-audit also reported 0 known vulnerabilities in the environment we installed. None of those figures measures retrieval quality or the cost of calls to an LLM and embedding service.
A basic Memory() instance still needs both model roles. The README names gpt-5-mini as the default LLM and text-embedding-3-small as the default embedder, so the shortest example assumes OpenAI credentials. Other providers are supported, but each combination introduces its own configuration and behavior. Hybrid search adds the nlp extra plus a spaCy model. Self-hosting adds Docker Compose, an administrator bootstrap, authentication, and API keys rather than removing those model decisions.
What happened when we ran it
Our run built successfully in 14 seconds, then pytest failed after 417 seconds. The supplied result reports 869 passed, 25 failed, 28 skipped, and 93 collection or setup errors out of 987 tests. That is enough passing coverage to show substantial working code, but it is not a green release gate. The sandbox used 3 CPUs, 8 GB of RAM, Python 3.12 on Debian, no secrets, and no elevated privileges.
The log tail is specific about one cluster of failures. Redis vector-store cases failed with ModuleNotFoundError: No module named 'redis', including search, list, update, collection-dimension, and missing-ID behavior. We cannot tell from those last lines whether the cause is packaging, an optional test dependency, or the command used by the harness. The finding is narrower: the repository's complete test command did not run cleanly after the successful 76-package install.
Our scan also found 34 CI workflow files and a tests directory, but no Dockerfile. The README does document a Docker Compose route under server, so absence of a Dockerfile in the scan should not be read as absence of self-hosting instructions. It does mean the measured Python build and the advertised server bootstrap are different adoption paths. Run the one you plan to operate, with the vector database and provider credentials that production will use.
Open deletion and filter reports deserve release-blocking tests
Open issue 7452 describes a sharp privacy boundary in the Python SDK v3. Its reproduction says delete_all(user_id="alice") removes returned memories but leaves the last 10 raw session messages in the history database. A later add() can send that old text to the LLM again. The report includes a stubbed-model reproduction, so teams promising per-user deletion should verify the behavior themselves before connecting real data.
Filtering has a separate risk. Open issue 7468 reports that two Qdrant operators on the same metadata field can be merged, after which only the first operator becomes a condition. In the reproduction, a memory marked deleted survives a filter meant to exclude it. That can affect search, listing, and bulk deletion. The issue was filed against the same 94c3fe9 commit used in our sandbox, which makes a regression test for compound filters a sensible adoption requirement.
Claude Code users also have a concrete integration caveat. Issue 7475 reports that plugin version 0.3.3 can write memories under the configured user_id while its MCP search process falls back to the operating-system account name. The report gives an environment-variable workaround. If the plugin is your entry point, confirm that a remembered fact can be found under the intended identity before assuming an empty search means nothing was stored.
September activity is high, and so is the change surface
GitHub showed 66,327 stars and 765 open issues and pull requests when checked on September 30, 2026. The repository's last push was September 25, while issues were still being updated on September 29. The latest release was the TypeScript SDK's v3.3.1 on September 25, with fixes spanning provider defaults, vector-store filters, distance scoring, and optional PostgreSQL packages. Those dates point to active maintenance rather than a quiet repository.
They also show why Mem0 needs local qualification. One package spans two SDK languages, several model providers, multiple vector stores, a self-hosted service, a cloud product, CLI tools, and coding-agent integrations. Mem0 is the right kind of ambitious for teams that want one memory interface across that mix. Our failed 987-test run and the open deletion and Qdrant reports make the buying condition plain: choose it for its reach, then pin versions and test the exact slice you depend on.

