Skip to content

basic-memory

v0.21.0 Feature

This release adds 1 notable feature for engineering teams evaluating rollout.

Published 18d Productivity & Wikis
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai claude knowledge-management knowlege-graph llm local-first
+8 more
markdown mcp obsidian obsidian-md privacy-first privacy-first-ai productivity python

Affected surfaces

auth deps

Summary

AI summary

Add note_content tenant schema primitive.

Changes in this release

Security Medium

Updates dependencies and hardens security

Updates dependencies and hardens security

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Makes multi-project search opt-in for MCP

Makes multi-project search opt-in for MCP

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Enables creating projects by workspace slug in MCP

Enables creating projects by workspace slug in MCP

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Includes search result totals in API responses

Includes search result totals in API responses

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Refuses database reset while basic-memory MCP processes run

Refuses database reset while basic-memory MCP processes run

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Adds note_content tenant schema primitive

Adds note_content tenant schema primitive

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Enables project discovery across workspaces in MCP

Enables project discovery across workspaces in MCP

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Adds cloud project visibility support on add command

Adds cloud project visibility support on add command

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Adds orphan entity command to CLI

Adds orphan entity command to CLI

Source: llm_adapter@2026-05-21

Confidence: low

Feature Low

Shows display_name instead of UUID for private projects in CLI

Shows display_name instead of UUID for private projects in CLI

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Performance Medium

Removes runtime ALTER TABLE from vector initialization

Removes runtime ALTER TABLE from vector initialization

Source: llm_adapter@2026-05-21

Confidence: low

Performance Medium

Eliminates N+1 query in search hydrate_results

Eliminates N+1 query in search hydrate_results

Source: llm_adapter@2026-05-21

Confidence: low

Performance Medium

Reduces PostgreSQL vector sync work

Reduces PostgreSQL vector sync work

Source: llm_adapter@2026-05-21

Confidence: low

Performance Medium

Batches file indexing in core for improved sync performance

Batches file indexing in core for improved sync performance

Source: llm_adapter@2026-05-21

Confidence: low

Performance Medium

Speeds up vector sync and tunes fastembed defaults

Speeds up vector sync and tunes fastembed defaults

Source: llm_adapter@2026-05-21

Confidence: low

Performance Low

Reuses written note content after writes in core

Reuses written note content after writes in core

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Performance Low

Eliminates redundant DB queries in upsert_entity_from_markdown

Eliminates redundant DB queries in upsert_entity_from_markdown

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Performance Low

Defers local ASGI app import in CLI for performance

Defers local ASGI app import in CLI for performance

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Performance Low

Purges SQLite search_index on project delete in core

Purges SQLite search_index on project delete in core

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Bugfix Medium

Fixes concurrent delete race conditions in delete_entity

Fixes concurrent delete race conditions in delete_entity

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Preserves external_id during entity upsert on re-index

Preserves external_id during entity upsert on re-index

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Lists projects from all workspaces in project list command

Lists projects from all workspaces in project list command

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Adds workspace routing to cloud upload and API client

Adds workspace routing to cloud upload and API client

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Avoids shell for scan subprocesses in sync

Avoids shell for scan subprocesses in sync

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Preserves canonical markdown in single-file sync

Preserves canonical markdown in single-file sync

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixes cloud workspace routing and incremental sync propagation

Fixes cloud workspace routing and incremental sync propagation

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Passes workspace parameter through client factory in MCP

Passes workspace parameter through client factory in MCP

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Honors BASIC_MEMORY_CONFIG_DIR across all call sites

Honors BASIC_MEMORY_CONFIG_DIR across all call sites

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Resolves FastEmbed cache under data directory instead of /tmp

Resolves FastEmbed cache under data directory instead of /tmp

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Cleans up delete vectors and cloud sync

Cleans up delete vectors and cloud sync

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Resolves projects by external_id and removes workspace from MCP tools

Resolves projects by external_id and removes workspace from MCP tools

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Degrades gracefully when sqlite-vec fails to load on init

Degrades gracefully when sqlite-vec fails to load on init

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Skips Obsidian callouts in observation parser

Skips Obsidian callouts in observation parser

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Shows cloud index freshness in project info

Shows cloud index freshness in project info

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Speeds up single markdown file indexing

Speeds up single markdown file indexing

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Increases brew outdated timeout from 15s to 60s

Increases brew outdated timeout from 15s to 60s

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Bugfix Medium

Ignores hidden paths relative to watched project in sync

Ignores hidden paths relative to watched project in sync

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Full changelog

What's Changed

  • fix: concurrent delete race conditions in delete_entity by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/702
  • fix: eliminate N+1 query in search hydrate_results by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/713
  • fix(cli): propagate cloud workspace routing and incremental sync by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/712
  • chore(deps): bump picomatch from 4.0.3 to 4.0.4 in /ui/tool-ui-react in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/basicmachines-co/basic-memory/pull/696
  • chore(deps): bump the uv group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/basicmachines-co/basic-memory/pull/697
  • feat(cli): support cloud project visibility on add by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/715
  • test(api): add recent activity hydration regression coverage by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/716
  • perf(core): reuse written note content after writes by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/717
  • perf: eliminate redundant DB queries in upsert_entity_from_markdown by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/714
  • fix: Increase brew outdated timeout from 15s to 60s by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/695
  • feat(core): add note_content tenant schema primitive by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/719
  • fix(cli): show display_name instead of UUID for private projects in CLI by @jope-bm in https://github.com/basicmachines-co/basic-memory/pull/718
  • fix(mcp): pass workspace parameter through client factory by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/722
  • fix: add workspace routing to cloud upload and API client by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/704
  • fix(core): preserve external_id during entity upsert on re-index by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/724
  • perf(core): reduce postgres vector sync work by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/723
  • fix(core): remove runtime ALTER TABLE from vector init by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/728
  • perf(sync): batch file indexing in core by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/726
  • perf(core): speed up vector sync and tune fastembed defaults by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/731
  • fix(core): clean up delete vectors and cloud sync by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/733
  • fix(cli): show cloud index freshness in project info by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/734
  • chore(core): make ty the default typechecker by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/736
  • refactor(core): simplify note write flow by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/739
  • fix(sync): preserve canonical markdown in single-file sync by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/746
  • ci(core): reduce duplicate CI and normalize Windows assertions by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/749
  • fix(core): resolve FastEmbed cache under data dir instead of /tmp by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/743
  • fix(core): honor BASIC_MEMORY_CONFIG_DIR across remaining call sites by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/744
  • perf(sync): speed up single markdown file indexing by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/751
  • refactor(core): rip telemetry wrappers, use logfire directly by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/754
  • fix(mcp): report cloud projects as source=cloud in factory mode by @jope-bm in https://github.com/basicmachines-co/basic-memory/pull/752
  • feat(mcp): discover projects across workspaces by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/757
  • fix(sync): constrain watch service to --project scope by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/759
  • chore(core): fix typos by @szepeviktor in https://github.com/basicmachines-co/basic-memory/pull/761
  • feat(mcp): accept training-data-friendly parameter aliases by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/766
  • test(core): regression guard for long relation_type values (#721) by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/770
  • fix(mcp): remove no-op pagination params from read_note and view_note by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/768
  • fix(core): skip Obsidian callouts in observation parser by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/769
  • test(core): regression guard for vector-row cleanup on entity delete (#764) by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/771
  • fix(installer): mount docker-compose config volume to appuser home by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/772
  • fix(core): degrade gracefully when sqlite-vec cannot load on init by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/774
  • fix(cli): clear default_workspace on cloud logout by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/773
  • fix(cli): cleanup local DB state on set-cloud/set-local by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/775
  • feat(cli): refuse db reset while basic-memory mcp processes run by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/776
  • fix(mcp): resolve projects by external_id, remove workspace from MCP tools by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/777
  • fix(mcp): list factory projects across workspaces by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/778
  • fix(cli): point bm cloud setup hint at bm cloud sync-setup by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/780
  • fix(mcp): cap recent_activity rows with explicit truncation footer by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/785
  • fix(mcp): route workspace-qualified memory urls by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/790
  • feat(mcp): create projects by workspace slug by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/789
  • feat(api): include search result totals by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/791
  • fix(api): accept qualified project resolver hints by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/795
  • fix(core): parse picoschema modifier descriptions by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/796
  • fix(mcp): add workspace routing to delete_project by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/803
  • fix(mcp): preserve workspace paths in build_context by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/801
  • fix(mcp): use lightweight graph hydration lookup by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/806
  • fix(mcp): make multi-project search opt-in by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/807
  • fix(mcp): centralize workspace permalink routing by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/808
  • fix(core): use updated_at for recent_activity filter and ordering by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/812
  • fix(sync): avoid shell for scan subprocesses by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/814
  • fix(sync): ignore hidden paths relative to watched project by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/815
  • feat(cli): add orphan entity command by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/816
  • fix(mcp): route edit_note workspace-qualified permalinks by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/813
  • fix: basic-memory project list does not list projects from all workspaces by @groksrc in https://github.com/basicmachines-co/basic-memory/pull/822
  • fix(core): parse prose wikilinks as inline links by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/824
  • chore(deps): update deps and harden security by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/825
  • fix(sync): preserve bmignore rclone filters by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/827
  • perf(cli): defer local ASGI app import by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/828
  • fix(core): purge SQLite search_index on project delete by @phernandez in https://github.com/basicmachines-co/basic-memory/pull/832

New Contributors

  • @szepeviktor made their first contribution in https://github.com/basicmachines-co/basic-memory/pull/761

Full Changelog: https://github.com/basicmachines-co/basic-memory/compare/v0.20.3...v0.21.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track basic-memory

Get notified when new releases ship.

Sign up free

About basic-memory

AI conversations that actually remember. Never re-explain your project to your AI again. Join our Discord: https://discord.gg/tyvKNccgqN

All releases →

Related context

Related tools

Beta — feedback welcome: [email protected]