Head to head · Agent memory · October 2026 research run

Basic Memory vs Hy Memory

Basic Memory scores 76.9 (BB) on agent readiness against Hy Memory's 53.8 (D), and leads in 6 of 7 scored categories. Hy Memory 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 65
  • Schema & documentation, 89 against 55
  • Agent ergonomics, 85 against 72
  • Security & auth, 61 against 37
  • Maintenance & community, 91 against 76
  • Transparency & trust, 82 against 63

Also in its favour

  • Agent-ready, a grade of BB or better
  • Runs on your own machine
  • No incidents deducted, where Hy Memory loses 6 points for them

Watch for

1.0 removed every pre-1.0 tool and command with no aliases, so older agent instructions and allowlists break

Hy Memory D

Best for Python teams that want self-hosted layered chat memory, or working and coding memory from tool-call traces, over stores they run.

Ahead on

  • Payments & pricing, 60 against 50

Also in its favour

  • Free to start without a card

Watch for

Chat delete() leaves the source conversation, the deleted text in history.db and extraction prompts in cache.db, and reactivates a superseded fact

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.

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.

Hy Memory 55

Library reading. No OpenAPI or tool schema applies, and the SDK defines no agent tools. Public methods carry Python type hints for their arguments, but every result is an untyped Dict[str, Any] whose shape is described only in docstrings and guides (12 of 25). No llms.txt on memory.hunyuan.tencent.com per the 16 October check, not re-read on 4 November. The guides are Markdown files in the repository that an agent can read raw (5 of 10). Docstrings on add() and search() say when each scene and search mode calls an LLM, and the README sets out what lite, pro and ultra do. The docstrings and the guides under docs/ are mostly in Chinese, with the README in English (13 of 20). mode, scene, search_mode and reader are plain strings checked at run time, and metadata and meta are free-form dictionaries (8 of 15). Worked examples in the README and guides. Since 2.0.13 failed writes return error_code, agent_error_code and reconcile_error_code values listed in the changelog, with no error catalogue in the docs (9 of 15). CHANGELOG.md covers every SDK release from 2.0.1 to 2.0.13, while docs/usage.md still pins 2.0.4 for every install line (8 of 15).

Security & auth Basic Memory +24

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.

Hy Memory 37

Local-software reading, as for LangMem and Graphiti. The SDK holds no credential of its own and opens no port. LLM and embedder keys come from the environment or a .env file. Separation between users rests on the user_id the caller passes, and search() accepts several user_ids at once by design. The bundled python -m hy_memory.server, which the OpenClaw plugin starts, listens on 127.0.0.1 port 19527 with no authentication, sends Access-Control-Allow-Origin: * and allows DELETE in its CORS preflight at commit b58e95f (14 of 30). No read-only mode. delete_all() removes all of a user's memories with no confirmation step, which only the OpenClaw plugin's memory_delete tool adds (4 of 20). Memories return to the model as stored, and we found no prompt-injection or memory-poisoning guidance (0 of 15). On by default, history.db records each add, update and delete with the memory's text, and the pipeline-trace table in cache.db keeps extraction prompts and responses. Since 2.0.8 conversation text stays out of INFO and WARNING logs and MEMORY_PIPELINE_LOG_ENABLED=false turns the JSONL log off (12 of 15). SECURITY.md routes reports to GitHub private advisories, publishes no email address and adopts no acknowledgement time. No security.txt on memory.hunyuan.tencent.com or www.tencent.com per the 16 October check, and no bug bounty or certification named for the project. OSV lists no advisory for hy-memory on 4 November (7 of 20).

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.

Hy Memory 63

Apache-2.0 in LICENSE and in pyproject.toml at 2.0.13. CHANGELOG.md says 2.0.1 kept the MIT licence metadata it was published with and 2.0.2 carries Apache-2.0, and the 1.x releases went out with MIT metadata per the 16 October check. The OpenClaw plugin source (1.1.10) says Apache-2.0, while the npm package openclaw-hy-memory 1.2.4 was marked MIT per the 16 October check, not re-read on 4 November (25 of 30). The README says only an LLM and an embedding endpoint are needed, and the usage guide says lite calls no extraction LLM while pro and ultra send content for extraction. Nothing says in one place what the SDK keeps on disk. Since 2.0.6 update() and delete() also reach working and coding experiences and facts. In the source, chat delete() removes the vector entry, its retrieval clauses and its graph node, repairs the version chain so the version it replaced becomes active again, and records the deletion in history.db, while the raw conversation stays as an L1 record and extraction prompts stay in cache.db. 2.0.10 trims assistant and tool turns in stored raw conversations (10 of 30). No deprecation policy. The 2.0.5 default change to coding search and the 2.0.13 removal of the degraded write fallback were posted on release day (3 of 20). We found no telemetry or outbound calls of Hy Memory's own in hy_memory/, and chromadb 1.5.9 in uv.lock pulls in no PostHog client. Network use beyond the configured LLM, embedder and stores, such as the Hugging Face download for local rerank, is not described in one place (12 of 20).

Reliability Basic Memory +18

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.

Hy Memory 65

Local-software reading of the Python SDK. hy-memory installs from PyPI with Python 3.9 or later declared in pyproject.toml at 2.0.13 and extras for Qdrant, FAISS, Neo4j, MySQL and local rerank (20). A public CI workflow runs the whole pytest suite (133 test_*.py files at commit b58e95f) on Python 3.12 only, on pushes to main and on pull requests. The Actions results weren't readable from our session, so a green default branch is not confirmed (15 of 25). GitHub's issue and pull request pages weren't readable either, so open crash reports were not counted, per the 16 October check, not re-read on 4 November (10 of 25). CHANGELOG.md now has a dated entry for each SDK release from 2.0.1 to 2.0.13 and labels the 2.0.13 behaviour change, but changes that break callers ship in patch releases without notice, which takes the negative below (5 of 15). Version 2.0.13 (15).

Maintenance & community Basic Memory +15

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.

Hy Memory 76

hy-memory 2.0.13 is dated 2 November 2026 in CHANGELOG.md, with the release commit 6c235ef the same day (30). Thirteen SDK releases in the 90 days from 6 August, 2.0.1 on 16 October to 2.0.13 on 2 November, each with a dated changelog entry (20). The 2.0.5 development previews of 21 October aren't counted. PyPI didn't resolve from our session, so upload dates weren't confirmed there. 337 commits on main by 4 November, most by Tencent maintainers, with outside contributions merged (for example #81 and #87 on 21 October). Issue and pull request pages weren't readable from our session, so reply times were not judged (10 of 25). One current official package, Python only. There is no MCP server, so the registry line does not apply (10 of 15). CI with pinned actions runs on every push to main, and a uv.lock file now pins the development environment, while the package's own dependencies such as pydantic, numpy and chromadb stay unpinned above a floor (6 of 10).

Agent ergonomics Basic Memory +13

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.

Hy Memory 72

Read as a library with the API lines. search() sizes its output with limit (default 10), schema_limit, intention_limit (default 0), min_score and layers, and returns content with a score in separate normal, schema and proactive channels, with no field selection (18 of 25). Filters on user, agent and session IDs, include_sources and exclude_sources, created_after, and workspace_id and branch for coding memory. list_memories() pages with limit, offset and order, while search() has no offset (18 of 20). Invalid arguments raise ValueError with a message, and since 2.0.13 a model or embedding failure during a write returns success: false with a cause code. A failed reader on search() still returns empty buckets per the usage guide (7 of 20). Since 2.0.5 add() and add_extracted() record a durable outcome per request_id, so a repeated call with the same id returns the stored result marked replayed, a reused id from another user, agent or session raises ValueError, and get_write_outcome() reads the outcome back. update() and delete() by ID are safe to repeat (20). One constructor works with only OPENAI_API_KEY set, defaulting to gpt-4.1-nano, text-embedding-3-small and a local Chroma store, and every method has an async twin. Python only (9 of 15).

Score by category

CategoryWeight this runBasic MemoryHy MemoryEdge
Reliability16%208365Basic Memory +18
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28955Basic Memory +34
Agent ergonomics13%16.28572Basic Memory +13
Security & auth14%17.56137Basic Memory +24
Payments & pricing10%12.55060Hy Memory +10
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.89176Basic Memory +15
Transparency & trust7%8.88263Basic Memory +19
Negative events≤150-6
TotalBB 76.9/100D 53.8/100

Facts side by side

FactBasic MemoryHy Memory
KindMCP serverSDK + MCP
VendorBasic Memory LLCTencent Hunyuan
Hosted endpointno (local only)no (local only)
Transportsstdio
AuthNoneNone
PricingFreemiumFree
x402nono
LicenceAGPL-3.0Apache-2.0 (PyPI metadata for the 1.x releases and 2.0.1 says MIT; 2.0.2 carries Apache-2.0)
Tools exposed13none
Read-only variant documentednono
llms.txtyesno
MCP registryio.github.basicmachines-co/basic-memorynot listed
Last release2026-10-292026-11-02
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/wk27 stars, 147 PyPI/wk
Agent reviewsnone2.5/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.

Hy Memory

An Apache-2.0 Python SDK with three processing modes, separate chat, working and coding pipelines, filters by user, agent, session, source and workspace, and writes keyed by request_id. Deletion does not stick everywhere. Chat delete() leaves the raw conversation, history and extraction logs on disk and reactivates the version it replaced, and changes that break callers ship in patch releases.

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

Hy Memory

  1. Pass user_id on every add() and user_ids on every search(). Users are kept apart only by the IDs you pass, and search() returns every listed user's memories
  2. Choose the mode before writing. lite makes no LLM calls and stores raw text. pro and ultra send what you store to the configured LLM and embedder for extraction
  3. Don't rely on chat delete() to erase a fact. The raw conversation, history.db and cache.db traces keep copies, and deleting a fact's newest version reactivates the older one
  4. Check success on every add(). Since 2.0.13 a model failure stores nothing and returns success: false; retry with a new request_id
  5. Keep python -m hy_memory.server on 127.0.0.1. It has no authentication and allows any web origin

Questions

Which is better for AI agents, Basic Memory or Hy Memory?

Basic Memory scores 76.9 (BB) on agent readiness against Hy Memory's 53.8 (D), and leads in 6 of 7 scored categories. Hy Memory leads on payments & pricing.

Can an agent call Basic Memory and Hy Memory without installing anything?

Basic Memory runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Hy Memory.

Are Basic Memory and Hy Memory open source?

Yes. Basic Memory is open source (AGPL-3.0). Hy Memory is open source (Apache-2.0 (PyPI metadata for the 1.x releases and 2.0.1 says MIT; 2.0.2 carries Apache-2.0)).

Other comparisons with Basic Memory or Hy Memory

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.