# Basic Memory vs LangMem (slim)

> Basic Memory scores 76.9 (BB) to LangMem's 47.7 (D) for agent memory. Prices, MCP, x402, uptime and agent notes side by side.

- Full: https://www.anchorterminal.com/compare/basic-memory-vs-langmem.md (~5,400 tokens) · this version ~3,080 tokens · JSON https://www.anchorterminal.com/compare/basic-memory-vs-langmem.json · canonical https://www.anchorterminal.com/compare/basic-memory-vs-langmem
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-11-07
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

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.

- Basic Memory: BB 76.9, rank #38 of 1486 · https://www.anchorterminal.com/tools/basic-memory.min.md
- LangMem: D 47.7, rank #1132 of 1486 · https://www.anchorterminal.com/tools/langmem.min.md
- Basic Memory, good 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 Agent-ready, a grade of BB or better; Runs on your own machine.
- LangMem, good for Teams already on LangGraph that want memory tools and background extraction over a store they run. Ahead on Payments & pricing, 60 against 50.

| Category | Basic Memory | LangMem |
| --- | --- | --- |
| Reliability (16%) | 83 | 32 |
| Performance (10%) | pending | pending |
| Schema & documentation (13%) | 89 | 55 |
| Agent ergonomics (13%) | 85 | 66 |
| Security & auth (14%) | 61 | 42 |
| Payments & pricing (10%) | 50 | 60 |
| Task success (10%) | pending | pending |
| Maintenance & community (7%) | 91 | 15 |
| Transparency & trust (7%) | 82 | 63 |

| Fact (where they differ) | Basic Memory | LangMem |
| --- | --- | --- |
| Kind | MCP server | SDK + MCP |
| Vendor | Basic Memory LLC | LangChain |
| Transports | stdio |  |
| Pricing | Freemium | Free |
| Licence | AGPL-3.0 | MIT |
| Tools exposed | 13 | none |
| 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) |

Why the edge:
- 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).)
