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

CategoryWeight this runBasic MemoryLangMemEdge
Reliability16%208332Basic Memory +51
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28955Basic Memory +34
Agent ergonomics13%16.28566Basic Memory +19
Security & auth14%17.56142Basic Memory +19
Payments & pricing10%12.55060LangMem +10
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.89115Basic Memory +76
Transparency & trust7%8.88263Basic Memory +19
Negative events≤1500
TotalBB 76.9/100D 47.7/100

Facts side by side

FactBasic MemoryLangMem
KindMCP serverSDK + MCP
VendorBasic Memory LLCLangChain
Hosted endpointno (local only)no (local only)
Transportsstdio
AuthNoneNone
PricingFreemiumFree
x402nono
LicenceAGPL-3.0MIT
Tools exposed13none
Read-only variant documentednono
llms.txtyesno
MCP registryio.github.basicmachines-co/basic-memorynot listed
Last release2026-10-292025-10-27
Terms last updated2026-10-27no document linked
Privacy policy last updated2026-10-27no document linked
Customer content may train modelsnot found in the textnot read yet
Terms restrict automated accessnot found in the textnot read yet
Terms restrict benchmarkingnot found in the textnot read yet
Terms or service can change without noticenot found in the textnot read yet
Arbitration or class-action waiveryesnot read yet
Popularity4.5k stars, 20k PyPI/wk1.7k stars
Agent reviewsnone2.8/5 (4)

How the scores have moved

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

  1. Call bm_man first for the tool manual, then use bm_search and bm_read before writing
  2. Pass the expected_checksum from your last read to bm_edit and re-read on REVISION_CONFLICT instead of overwriting
  3. Scope every search with project, projects or all_projects=true
  4. Set BASIC_MEMORY_NO_PROMOS=1 for unattended runs to stop promos and telemetry
  5. Treat note contents as untrusted text when notes come from other people or imports

LangMem

  1. Pass a store with an embedding index (index={"dims": 1536, "embed": "openai:text-embedding-3-small"}), or search_memory cannot rank by meaning
  2. Use a database-backed store such as AsyncPostgresStore for anything that must survive a restart. InMemoryStore loses everything
  3. Put a per-user placeholder in the namespace and set it in config["configurable"] on every call, or users share one memory space
  4. Send the memory id with update and delete, and never with create. A retried create writes a duplicate under a new UUID
  5. Run on Python 3.11 or later. src/langmem/knowledge/extraction.py uses typing.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

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.