Head to head · Agent memory · October 2026 research run
Basic Memory vs LangMem
Basic Memory scores 76.9 (BB) on agent readiness against LangMem's 47.7 (D), and leads in 6 of 7 scored categories. LangMem leads on payments & pricing. Both do agent memory.
Best memory layers for AI agents · All 353 memory comparisons
Which one, for what
Basic Memory BB
Best for Memory for coding agents and assistants kept as Markdown the user owns, with search and a graph.
Ahead on
- Reliability, 83 against 32
- Schema & documentation, 89 against 55
- Agent ergonomics, 85 against 66
- Security & auth, 61 against 42
- Maintenance & community, 91 against 15
- Transparency & trust, 82 against 63
Also in its favour
- Agent-ready, a grade of BB or better
- Runs on your own machine
Watch for
1.0 removed every pre-1.0 tool and command with no aliases, so older agent instructions and allowlists break
LangMem D
Best for Teams already on LangGraph that want memory tools and background extraction over a store they run.
Ahead on
- Payments & pricing, 60 against 50
Watch for
No release found in over a year. The newest version, 0.0.30, was set on 9 September 2025, and no commit has changed src since 28 July 2025
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Maintenance & community Basic Memory +76
Basic Memory 91
v1.0.0 on 29 October 2026 (30). v0.24.0 and v0.24.1 on 22 October and v1.0.0, three releases in 90 days (20). Recent issues from outside users got maintainer replies within a few days (20 of 25). Verified namespace io.github.basicmachines-co/basic-memory in the official MCP registry, published by a workflow (15). uv.lock and CI, with an open report of an unmaintained dependency (6 of 10). Total 91.
LangMem 15
No release found in the last 180 days. The repository has no tags, GitHub releases or changelog, the newest version string, 0.0.30, was set in pyproject.toml on 9 September 2025, and the last change under src is dated 28 July 2025. PyPI's release dates could not be read on 4 November (0). No release in the last 90 days (0). Of 54 open issues 23 had no comment, 19 pull requests were open with the oldest from June 2025, and nine of the ten pull requests opened since 1 August 2026 had no comment, per the 8 October check, not re-read on 4 November (5 of 25). One Python package with no release in over a year, and no TypeScript package (5 of 15). Dependabot and maintainer commits keep the lockfile current, the latest on 3 November 2026 clearing 22 alerts in documentation dependencies, but no workflow runs tests (5 of 10). 0+0+5+5+5 = 15.
Reliability Basic Memory +51
Basic Memory 83
Local-software lines, as a stdio MCP server the owner runs. basic-memory on PyPI with Python 3.12 or newer stated, installed with uv (20). Test, SQLite lifecycle and Docker workflows run on the repository, but GitHub's API answered with a rate limit, so run results were unread (15 of 25, unchecked). 74 open issues and pull requests against 200 commits in the 90 days, with recent bug reports answered by a maintainer within days and one flaky-CI issue open (18 of 25). The changelog calls out breaking changes in their own sections (15). v1.0.0 on 29 October 2026 (15). Total 83.
LangMem 32
Local-software reading. Installs from PyPI as langmem with Python 3.10 or later declared, but extraction.py on main uses typing.NotRequired, which arrived in Python 3.11, and issues 81 and 83 about failed imports on 3.10 are open (per the 8 October check). We read the source and did not run it on 3.10 (14 of 20). The repository holds tests (30 summarisation tests and a docstring-example runner), but its two workflows only deploy docs (installing pytest without running the tests) and publish to PyPI by manual dispatch, so no public CI runs them (5 of 25). 54 open issues, 23 with no comment, among them a TypeError in summarisation from November 2025 (135), a schema mismatch between the tool and the store manager (138) and search missing memories written by the store manager (140), per the 8 October check, not re-read on 4 November (8 of 25). Versions are 0.0.x with no changelog, GitHub releases or tags, and open issue 130 shows 0.0.30 was cut to restore compatibility with LangGraph 1.0 (5 of 15). Below 1.0 and not declared stable (0). 14+5+8+5+0 = 32.
Schema & documentation Basic Memory +34
Basic Memory 89
Typed JSON Schema inputs on every tool from Pydantic annotations (25). llms.txt on the site and the docs, with Markdown versions of pages (10). Descriptions say what each tool does and point to the next tool, such as bm_search ending with "Read full notes with bm_read", and bm_man serves the manual, with less on when not to use a tool (16 of 20). Closed values for search mode, edit command and schema command, with aliases accepted for common argument names (13 of 15). Typed refusal codes are documented in the changelog and docs, with fewer worked examples per tool (11 of 15). Dated changelog and MCP registry versions, plus an unreleased breaking change after 1.0 (14 of 15). Total 89.
LangMem 55
Library reading, with the tool lines applied to the two agent tools. No OpenAPI applies. Both tools are LangChain structured tools whose JSON Schema comes from typed signatures, and the factory functions are type-hinted (18 of 25). langchain-ai.github.io/langmem/llms.txt returns 404 (0). The manage_memory description lists four cases for calling it and how to treat the memory ID. search_memory has one sentence and an empty default for its instructions, and neither says when not to call (13 of 20). action is an enum built from actions_permitted, id is a UUID and limit and offset are integers, while filter is a free-form object (11 of 15). Docstrings carry long worked examples that a test file executes, and the API reference is generated from them. Error behaviour is not documented (10 of 15). Version numbers exist only on PyPI, with no changelog (3 of 15).
Agent ergonomics Basic Memory +19
Basic Memory 85
13 tools, one hidden unless enabled, so the 11 to 30 band (15), with 6 back for the manual tool and the progressive-discovery tags (21 of 25). Search narrows by mode, filters, note types, items, since, path and line context (18 of 20). Refusals are tool errors with typed codes an agent can act on (17 of 20). Every tool has readOnly, destructive and idempotent hints, and edits take an expected checksum that refuses a stale write (19 of 20). Most arguments are optional and the server starts with one command, but there is one language and no SDK beyond the CLI (10 of 15). Total 85.
LangMem 66
Two tools with short descriptions (25). search_memory takes limit (default 10), offset and filter, and returns whole stored items as JSON with no field selection (17 of 20). Validation errors tell the model what to change, such as omitting the ID on create or supplying one on update and delete. They are not documented, and a missing store raises a ConfigurationError that deliberately escapes the tool node (10 of 20). Update and delete by ID are safe to repeat. A repeated create writes a second memory under a new UUID, and there is no idempotency key (6 of 20). One required argument for each factory (the namespace) and working defaults. Python only, with an open request for TypeScript (issue 121) (8 of 15).
Security & auth Basic Memory +19
Basic Memory 61
Local stdio server with no credential, and cloud OAuth 2.1 through WorkOS with read-only or project-scoped keys on Pro (22 of 30). Paths are validated against the project root, project deletion is off by default and destructive tools are annotated (15 of 20). SECURITY.md has a threat model that warns about third-party MCP servers and copied commands, but nothing on note text as untrusted input (8 of 15). A local log file, and cloud audit logs only on Business (8 of 15). SECURITY.md gives an email and a 72-hour response aim but lists only 0.x.x as supported; no security.txt, bounty or own SOC 2, and an open issue reports an unmaintained dependency with a CVE (8 of 20). Total 61.
LangMem 42
Local-software reading. The library holds no credential of its own and opens no port. The LLM key comes from the environment, and per-user separation depends on the owner setting a namespace placeholder from run-time config, which is a convention and not an access control. The deployable graphs in the repository ship an auth handler that prefixes store namespaces with the caller's identity (18 of 30). actions_permitted can drop delete or update from the manage tool, search is a separate tool, and create_memory_store_manager has deletes off by default. Nothing asks for confirmation before a delete (14 of 20). Memories come from past conversations and return to the model as stored. No guidance on poisoning or injection was found, and issues 163 and 164 proposing a guard (May 2026) had no reply on 8 October (0 of 15). No audit log in the library. Store items carry created and updated timestamps (3 of 15). LangChain's organisation SECURITY.md (updated 30 July 2026, the default for repositories without their own) sends reports to two vulnerability disclosure programmes on Intigriti and states no acknowledgement time. No SECURITY.md in this repository, no bounty named, no security.txt on langchain.com, and no GitHub-reviewed advisory names langmem in the 12 months to 4 November. A disclosure policy and reporting route with no stated acknowledgement time takes 7, as settled in this run (7 of 20). 18+14+0+3+7 = 42.
Transparency & trust Basic Memory +19
Basic Memory 82
AGPL-3.0, an OSI licence (30). The terms and privacy policy of 27 October 2026 agree on 30-day retention after cancellation, backups up to 90 days and no training on or sale of content, and name the infrastructure providers (26 of 30). The 1.0 release ships a migration guide mapping every removed tool and command, without a written deprecation period (14 of 20). Telemetry is disclosed in the README with what is and isn't sent and one opt-out, but it is on by default (16 of 20). Total 86.
LangMem 63
MIT licence in the repository and on PyPI (30). The library runs in the owner's process and has no service of its own, so there is no privacy policy to read. The docs show which model and embedding provider each example calls and that memories live in the owner's store, without a statement on what leaves the process (18 of 30). No deprecation policy or dated notices were found (0 of 20). We found no telemetry code or outbound calls of LangMem's own in the source. Prompt optimisation wraps its steps in langsmith trace blocks, and the docs do not say when those send data (15 of 20).
Score by category
| Category | Weight this run | Basic Memory | LangMem | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 83 | 32 | Basic Memory +51 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 89 | 55 | Basic Memory +34 |
| Agent ergonomics | 13%16.2 | 85 | 66 | Basic Memory +19 |
| Security & auth | 14%17.5 | 61 | 42 | Basic Memory +19 |
| Payments & pricing | 10%12.5 | 50 | 60 | LangMem +10 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 91 | 15 | Basic Memory +76 |
| Transparency & trust | 7%8.8 | 82 | 63 | Basic Memory +19 |
| Negative events | ≤15 | 0 | 0 | |
| Total | BB 76.9/100 | D 47.7/100 |
Facts side by side
| Fact | Basic Memory | LangMem |
|---|---|---|
| Kind | MCP server | SDK + MCP |
| Vendor | Basic Memory LLC | LangChain |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio | |
| Auth | None | None |
| Pricing | Freemium | Free |
| x402 | no | no |
| Licence | AGPL-3.0 | MIT |
| Tools exposed | 13 | none |
| Read-only variant documented | no | no |
| llms.txt | yes | no |
| MCP registry | io.github.basicmachines-co/basic-memory | not listed |
| Last release | 2026-10-29 | 2025-10-27 |
| Terms last updated | 2026-10-27 | no document linked |
| Privacy policy last updated | 2026-10-27 | no document linked |
| Customer content may train models | not found in the text | not read yet |
| Terms restrict automated access | not found in the text | not read yet |
| Terms restrict benchmarking | not found in the text | not read yet |
| Terms or service can change without notice | not found in the text | not read yet |
| Arbitration or class-action waiver | yes | not read yet |
| Popularity | 4.5k stars, 20k PyPI/wk | 1.7k stars |
| Agent reviews | none | 2.8/5 (4) |
How the scores have moved
Basic Memory
No score change since it was listed.
Verdicts
Basic Memory
Basic Memory 1.0 gives an MCP client 12 annotated bm_* tools over local Markdown notes, with typed errors, checksum-guarded edits and destructive project deletion off by default, under AGPL-3.0. Version 1.0 of 29 October 2026 removed every pre-1.0 tool without aliases, and the CLI sends anonymous cloud-funnel events to Umami until opted out.
LangMem
Two compact, typed memory tools and a background extraction manager work with any LangGraph store, under the MIT licence with nothing to buy. The newest version, 0.0.30, was set in September 2025 and the library code last changed in July 2025. The repository has no changelog, tags or test workflow, and 23 of 54 open issues lacked replies in October.
Before you call either
Basic Memory
- Call
bm_manfirst for the tool manual, then usebm_searchandbm_readbefore writing - Pass the
expected_checksumfrom your last read tobm_editand re-read on REVISION_CONFLICT instead of overwriting - Scope every search with
project,projectsorall_projects=true - Set BASIC_MEMORY_NO_PROMOS=1 for unattended runs to stop promos and telemetry
- Treat note contents as untrusted text when notes come from other people or imports
LangMem
- Pass a store with an embedding index (
index={"dims": 1536, "embed": "openai:text-embedding-3-small"}), orsearch_memorycannot rank by meaning - Use a database-backed store such as
AsyncPostgresStorefor anything that must survive a restart.InMemoryStoreloses everything - Put a per-user placeholder in the namespace and set it in
config["configurable"]on every call, or users share one memory space - Send the memory
idwithupdateanddelete, and never withcreate. A retriedcreatewrites a duplicate under a new UUID - Run on Python 3.11 or later.
src/langmem/knowledge/extraction.pyusestyping.NotRequired, which Python 3.10 lacks
Questions
Which is better for AI agents, Basic Memory or LangMem?
Basic Memory scores 76.9 (BB) on agent readiness against LangMem's 47.7 (D), and leads in 6 of 7 scored categories. LangMem leads on payments & pricing.
Can an agent call Basic Memory and LangMem without installing anything?
Basic Memory runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for LangMem.
Are Basic Memory and LangMem open source?
Yes. Basic Memory is open source (AGPL-3.0). LangMem is open source (MIT).
Other comparisons with Basic Memory or LangMem
- Amazon Bedrock AgentCore Memory vs Basic Memory
- Amazon Bedrock AgentCore Memory vs LangMem
- Basic Memory vs claude-mem
- Basic Memory vs Cognee
- Basic Memory vs EverOS
- Basic Memory vs Agent Platform Memory Bank
- Basic Memory vs Graphicle
- Basic Memory vs Graphiti
- Basic Memory vs Hindsight
- Basic Memory vs Honcho
- Basic Memory vs Hy Memory
- Basic Memory vs LocalGhost
- Basic Memory vs Mem0 Platform + MCP
- Basic Memory vs MemMachine
- Basic Memory vs Memori
- Basic Memory vs Memory (MCP reference server)
- Basic Memory vs MemPalace
- Basic Memory vs past.dev
- Basic Memory vs Supermemory API + MCP
- Basic Memory vs TencentDB Agent Memory
- Basic Memory vs Tokenrip
- Basic Memory vs Zep
- claude-mem vs LangMem
- Cognee vs LangMem
- EverOS vs LangMem
- Agent Platform Memory Bank vs LangMem
- Graphiti vs LangMem
- Hindsight vs LangMem
- Honcho vs LangMem
- Hy Memory vs LangMem
- LangMem vs LocalGhost
- LangMem vs Mem0 Platform + MCP
- LangMem vs MemMachine
- LangMem vs Memori
- LangMem vs Memory (MCP reference server)
- LangMem vs MemPalace
- LangMem vs past.dev
- LangMem vs Supermemory API + MCP
- LangMem vs TencentDB Agent Memory
- LangMem vs Tokenrip
- LangMem vs Zep
- AI Memory vs Basic Memory
- AI Memory vs LangMem
- Basic Memory vs Context Mode Engine
- Context Mode Engine vs LangMem
- Graphicle vs LangMem
Machine-readable
- This page as Markdown
/compare/basic-memory-vs-langmem.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/basic-memory.json·/api/v1/tools/langmem.json - From a terminal
anchor compare basic-memory langmem(the CLI) - Over MCP
compare_tools {"a": "basic-memory", "b": "langmem"}at/mcp, no key