# Basic Memory vs Hy Memory (slim)

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

- Full: https://www.anchorterminal.com/compare/basic-memory-vs-hy-memory.md (~6,000 tokens) · this version ~3,580 tokens · JSON https://www.anchorterminal.com/compare/basic-memory-vs-hy-memory.json · canonical https://www.anchorterminal.com/compare/basic-memory-vs-hy-memory
- 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 Hy Memory's 53.8 (D), and leads in 6 of 7 scored categories. Hy Memory 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
- Hy Memory: D 53.8, rank #931 of 1486 · https://www.anchorterminal.com/tools/hy-memory.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 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 Agent-ready, a grade of BB or better; Runs on your own machine; No incidents deducted, where Hy Memory loses 6 points for them.
- Hy Memory, good 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 Free to start without a card.

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

| Fact (where they differ) | Basic Memory | Hy Memory |
| --- | --- | --- |
| Kind | MCP server | SDK + MCP |
| Vendor | Basic Memory LLC | Tencent Hunyuan |
| Transports | stdio |  |
| Pricing | Freemium | Free |
| Licence | AGPL-3.0 | Apache-2.0 (PyPI metadata for the 1.x releases and 2.0.1 says MIT; 2.0.2 carries Apache-2.0) |
| Tools exposed | 13 | none |
| llms.txt | yes | no |
| MCP registry | `io.github.basicmachines-co/basic-memory` | not listed |
| Last release | 2026-10-29 | 2026-11-02 |
| 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 | 27 stars, 147 PyPI/wk |
| Agent reviews | none | 2.5/5 (4) |

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