- #698: CLI cloud commands now use API key when configured
get_authenticated_headers()only checked OAuth tokens, ignoringconfig.cloud_api_key- All CLI cloud commands (
upload,status,snapshot,restore, etc.) failed for API-key-only users while MCP tools worked fine - Now mirrors the same credential priority as MCP: API key first, OAuth fallback
- Fixes
bm cloud upload --projectreturning "project does not exist" when authenticated withbmc_*API key
- Fix auto-update Homebrew detection:
brew outdatedexits 1 when a formula is outdated, not on error- Previously treated exit code 1 as a failure, causing "Automatic update check failed" instead of detecting the available update
- #661: Fix
bm project listMCP column to show transport type (stdio/https) instead of DB presence- Renamed "MCP (stdio)" column to "MCP"
- Shows actual routing mode:
stdiofor local,httpsfor cloud projects - Clears local path display for cloud-mode projects
- #662: Invalidate config cache when file is modified by another process
- Adds mtime-based cache validation to
ConfigManager.load_config() - Long-lived processes (MCP stdio server) now detect external config changes
- Fixes
bm project set-cloudhaving no effect on running MCP server
- Adds mtime-based cache validation to
- #643: Default-on auto-update system and
bm updatecommand- Automatic background update checks for CLI installs (uv tool, Homebrew)
- Install-source detection (homebrew, uv_tool, uvx, unknown) with uvx skip behavior
- Periodic check gating via
auto_update_last_checked_at+update_check_intervalconfig - Manager-specific update flows: Homebrew (
brew upgrade) and uv tool (uv tool upgrade) - Silent, non-blocking MCP behavior via daemon thread before server run
- Manual commands:
bm update(force check + apply) andbm update --check(check only) - New config fields:
auto_update,update_check_interval,auto_update_last_checked_at
- #657: Coerce string params to list/dict in MCP tools
- MCP clients that serialize
list/dictarguments as JSON strings no longer fail Pydantic validation - Adds
BeforeValidatorcoercion tosearch_notes(entity_types,note_types,tags,metadata_filters),write_note(metadata), andcanvas(nodes,edges)
- MCP clients that serialize
- #655: Handle SQLite and Windows semantic search regressions
- Fix embedding status query for non-semantic SQLite databases
- Windows-safe log file rotation with per-process log filenames
- Robust
setup_loggingthat handles all environments cleanly
- #649: Enforce strict entity resolution in destructive MCP tools (
edit_note,move_note,delete_note)- Prevents fuzzy-match fallback from silently editing/moving/deleting the wrong note
- DST-related timeframe validation fix (round instead of truncate days)
- #648: Add
insert_before_sectionandinsert_after_sectionedit operations - Add
GET /knowledge/graphendpoint for full graph visualization
- Bump authlib from 1.6.6 to 1.6.7
- Semantic vector search for SQLite and Postgres with FastEmbed embeddings
- Schema system for validating and inferring knowledge base structure
- Per-project cloud routing with API key authentication
- Upgraded to FastMCP 3.0 with tool annotations
- CLI overhaul with JSON output, workspace awareness, and project dashboard
-
#550: Add semantic vector search for SQLite and Postgres
- FastEmbed-based embeddings with automatic backfill
- Hybrid search combining full-text and vector similarity
- Score-based fusion replacing RRF for better ranking
min_similarityoverride for tuning search precision- Semantic dependencies are now default, with optional extras fallback
-
#549: Schema system for Basic Memory
schema_infer— infer schema from existing notesschema_validate— validate notes against a schema definitionschema_diff— compare schemas across projects- Frontmatter validation support (#597)
- Read schema definitions from file instead of stale DB metadata (#635)
-
#555: Per-project local/cloud routing with API key auth
- Individual projects route through cloud while others stay local
basic-memory cloud set-keyandbasic-memory project set-cloud/set-local- Stdio MCP honors per-project cloud routing (#590)
-
#598: Upgrade FastMCP 2.12.3 to 3.0.1 with tool annotations
-
#585: Add JSON output mode for MCP tools (default text)
--jsonoutput for CLI commands for scripting and CI
-
#576: Add workspace selection flow for MCP and CLI
- Workspace-aware cloud project listing
- CLI refactoring for workspace support
-
#544: Project-prefixed permalinks and memory URL routing
-
#632: Add overwrite guard to
write_notetool -
#614:
edit_noteappend/prepend auto-creates note if not found -
#609: Richer content context in search results
- Return matched chunk text in search results (#601)
- Improved content hit rate
-
#602: Add
created_byandlast_updated_byuser tracking to Entity -
#600: Rename
entity_typetonote_typeacross codebase -
#574: Add
display_nameandis_privateto ProjectItem -
#569: Expose
external_idin EntityResponse and link resolver -
#567: Isolate default SQLite DB by config dir
-
#560: Enable
default_project_modeby default -
#559: Add
basic-memory watchCLI command -
#546: Add cloud discovery touchpoints to CLI and MCP
-
#572: CLI analytics via Umami event collector
-
Replace project info with htop-inspired dashboard
-
Merge
search_by_metadataintosearch_noteswith optional query -
Add
--strip-frontmattertobasic-memory tool read-note -
Add
destination_folderparameter tomove_notetool
-
#644: Fix default project resolution in cloud mode
- ChatGPT search/fetch tools broken in cloud mode
resolve_project_parameterfalls back to projects API
-
#638: Restore API backward compatibility for v0.18.x clients
-
#637: Create backup before config migration overwrites old format
-
#636:
list_workspacesbypasses factory pattern on cloud MCP server -
#631:
build_contextrelated_results schema validation failure -
#613: Reduce excessive log volume by demoting per-request noise to DEBUG
-
#612: Handle quoted picoschema enum strings in YAML frontmatter
-
#607: Guard against closed streams in promo and missing vector tables
-
#606: Accept null for
expected_replacementsinedit_note -
#595:
recent_activitydedup and pagination across MCP tools -
#593: Backend-specific distance-to-similarity conversion
-
#582: Use LinkResolver fallback in
build_contextfor flexible identifier matching -
#577: Replace RRF with score-based fusion in hybrid search
-
#575: Remove hardcoded "main" default from
default_project -
#534: Speed up
bm --versionstartup -
Fix semantic embeddings not generated on fresh DB or upgrade
-
Clarify
search_notesparameter naming and fixnote_typescase sensitivity -
Parse
tag:prefix at MCP tool level to avoid hybrid search failure -
Cap sqlite-vec knn k parameter at 4096 limit
-
Parameterize SQL queries in search repository type filters
-
Coerce list frontmatter values to strings for title and type fields
-
Avoid
Post(**metadata)crash when frontmatter contains 'content' or 'handler' keys -
Upgrade cryptography and python-multipart for security advisories
- #594: Add
tyas supplemental type checker - Batched vector sync orchestration across repositories
- FastEmbed parallel guardrails and provider caching
- Improved cloud CLI status and error messages
- CI coverage and Postgres test fixes
- Strip NUL bytes from content before PostgreSQL search indexing
(
ec9b2c4)
- Use global
--headerflag for Tigris consistency on all rclone transactions (0eae0e1)--header-download/--header-uploadonly apply to GET/PUT requests, missing S3 ListObjectsV2 calls that bisync issues first. Non-US users saw stale edge-cached metadata.--headerapplies to ALL HTTP transactions (list, download, upload), fixing bisync for users outside the Tigris origin region.
- #562: Use VIRTUAL instead of STORED columns in SQLite migration
(
344e651)- Fixes compatibility issue with SQLite STORED generated columns
-
#552: Add
--format jsonto CLI tool commands (a47c9c0)- CLI tool commands now support
--format jsonfor machine-readable output
- CLI tool commands now support
-
#535: Support
tag:query shorthand in search (f1d50c2)- Use
tag:mytagas a convenient shorthand in search queries
- Use
-
#532: Fast edit entities, refactors for webui, enhanced search (
530cbac)- Performance improvements for entity editing and search operations
-
#558: Add X-Tigris-Consistent headers to all rclone commands (
8489a3d)- Ensures consistent reads from Tigris object storage during sync
-
#541: Handle EntityCreationError as conflict (
343a6e1) -
#536: Stabilize metadata filters on Postgres (
009e849) -
#533: Fix recent_activity prompt defaults (
24ca5f6) -
#530: Prevent spurious
metadata: {}in frontmatter output (e3ced49) -
Add POST legacy compat routes for v0.18.0 CLI (
c46d7a6) -
Restore legacy
/projects/projectsendpoint for older CLI versions (a0e754b)
- #538: Add fast feedback loop tooling (
just fast-check,just doctor,just testmon) (8072449)
-
#527: Add context-aware wiki link resolution with source_path support (
0023e73)- Add
source_pathparameter toresolve_link()for context-aware resolution - Relative path resolution:
[[nested/note]]fromfolder/file.md→folder/nested/note.md - Proximity-based resolution for duplicate titles (prefers notes in same folder)
- Strict mode to disable fuzzy search fallback for wiki links
- Add
-
#518: Add directory support to move_note and delete_note tools (
0b20801)- Add
is_directoryparameter tomove_noteanddelete_noteMCP tools - New
POST /move-directoryand delete directory API endpoints - Rename
folder→directoryparameter across codebase for consistency
- Add
-
#522: Local MCP cloud mode routing (
8730067)- Add
--localand--cloudCLI routing flags - Local MCP server (
basic-memory mcp) automatically uses local routing - Enables simultaneous use of local Claude Desktop and cloud-based clients
- Environment variable
BASIC_MEMORY_FORCE_LOCAL=truefor global override
- Add
- #524: Fix MCP prompt rendering errors
(
e14ba92)- Fix "Error rendering prompt recent_activity" error
- Change
TimeFrametostrin prompt type annotations for FastMCP compatibility
- #523: Fix
remove_project()checking stale config in cloud mode (17c0e0a)- In cloud mode, only check database
is_defaultfield (source of truth) - Config file can become stale when users set default project via v2 API
- In cloud mode, only check database
- #521: Fix
get_default_project()returning multiple results (6888eff)- Query incorrectly matched any project with non-NULL
is_default(both True and False) - Now correctly checks for
is_default=Trueonly
- Query incorrectly matched any project with non-NULL
-
#476: Add SPEC-29 Phase 3 bucket snapshot CLI commands (
369ad37)- New
basic-memory cloud snapshotcommands for managing cloud snapshots - Commands:
create,list,delete,show,browse
- New
-
#515: Add MCP registry publication files (
7a502e6)
-
#520: Read default project from database in cloud mode (
38616c3) -
#513: Ensure external_id is set on entity creation (
c7835a9)
-
#514: Remove OpenPanel telemetry (
85835ae) -
Update README links to point to basicmemory.com (
2aaee73)
- #510: Fix Docker container Python symlink broken at runtime
(
1799c94)
- Remove logfire config and specs docs, reduce lifespan and sync logging to debug level
(
d1d433d,803f3ef)
- #505: Prevent CLI commands from hanging on exit (Python 3.14 compatibility)
(
863e0a4)- Skip
nest_asyncioon Python 3.14+ where it causes event loop issues - Simplify CLI test infrastructure for cross-version compatibility
- Update pyright to 1.1.408 for Python 3.14 support
- Fix SQLAlchemy rowcount typing for Python 3.14
- Skip
- #503: Preserve search index across server restarts
(
26f7e98)- Fixes critical bug where search index was wiped on every MCP server restart
- Bug was introduced in v0.16.3, affecting v0.16.3-v0.17.3
- User action: Run
basic-memory resetonce after updating to rebuild search index
- #502: Major architecture refactor with composition roots and typed API clients
(
5947f04)- Add composition roots for API, MCP, and CLI entrypoints
- Split deps.py into feature-scoped modules (config, db, projects, repositories, services, importers)
- Add ProjectResolver for unified project selection
- Add SyncCoordinator for centralized sync/watch lifecycle
- Introduce typed API clients for MCP tools (KnowledgeClient, SearchClient, MemoryClient, etc.)
- #485: Add stable external_id (UUID) to Project and Entity models
(
a4000f6)- Projects and entities now have immutable UUID identifiers
- API v2 endpoints use external_id for stable references
- Directory responses include external_id for entities
-
#501: Update mcp dependency to support protocol version 2025-11-25 (
c6baf58)- Fixes "Unsupported protocol version" error when using Claude Code
- Bump mcp from >=1.2.0 to >=1.23.1
-
#499: Fix route ordering for cloud deployments (
53c4c20) -
#486: Skip config file update for set_default_project in cloud mode (
fd732aa) -
#484: Make RelationResponse.from_id optional to handle null permalinks (
537e58a) -
Use upsert to prevent IntegrityError during parallel search indexing (
4ce2198) -
Use relative file paths in importers for cloud storage compatibility (
8adf1f4)
-
Refactor importers to use FileService for cloud compatibility (
45ce181) -
Strengthen integration test coverage, remove stdlib mocks (
b4486d2)
- Allow recent_activity discovery mode in cloud mode
(
0bcda4a)- Add
allow_discoveryparameter toresolve_project_parameter() - Tools like
recent_activitycan now work across all projects in cloud mode - Fix circular import in project_context module
- Add
- Optimize release workflow by running lint/typecheck only (skip full tests)
(
0b5425f)
- #482: Only set BASIC_MEMORY_ENV=test during pytest runs
(
98fbd60)- Fixes environment variable pollution affecting alembic migrations
- Test environment detection now scoped to pytest execution only
-
#478: Add anonymous usage telemetry with Homebrew-style opt-out (
856737f)- Privacy-respecting anonymous usage analytics
- Easy opt-out via
BASIC_MEMORY_NO_ANALYTICS=1environment variable - Helps improve Basic Memory based on real usage patterns
-
#474: Add auto-format files on save with built-in Python formatter (
1fd680c)- Automatic markdown formatting on file save
- Built-in Python formatter for consistent code style
- Configurable formatting options
-
#447: Complete Phase 2 of API v2 migration - MCP tools use v2 endpoints (
1a74d85)- All MCP tools now use optimized v2 API endpoints
- Improved performance for knowledge graph operations
- Foundation for future API enhancements
-
Fix UTF-8 BOM handling in frontmatter parsing (
85684f8)- Handles files with UTF-8 byte order marks correctly
- Prevents frontmatter parsing failures
-
#475: Handle null titles in ChatGPT import (
14ce5a3)- Gracefully handles conversations without titles
- Improved import robustness
-
Remove MaxLen constraint from observation content (
45d6caf)- Allows longer observation content without truncation
- Removes arbitrary 2000 character limit
-
Handle FileNotFoundError gracefully during sync (
1652f86)- Prevents sync failures when files are deleted during sync
- More resilient file watching
-
Use canonical project names in API response messages (
c23927d)- Consistent project name formatting in all responses
-
Suppress CLI warnings for cleaner output (
d71c6e8)- Cleaner terminal output without spurious warnings
-
Prevent DEBUG logs from appearing on CLI stdout (
63b9849)- Debug logging no longer pollutes CLI output
-
#473: Detect rclone version for --create-empty-src-dirs support (
622d37e)- Automatic rclone version detection for compatibility
- Prevents errors on older rclone versions
-
#471: Prevent CLI commands from hanging on exit (
916baf8)- Fixes CLI hang on shutdown
- Proper async cleanup
-
Add cloud_mode check to initialize_app() (
ef7adb7)- Correct initialization for cloud deployments
-
Centralize test environment detection in config.is_test_env (
3cd9178)- Unified test environment detection
- Disables analytics in test environments
-
Make test-int-postgres compatible with macOS (
95937c6)- Cross-platform PostgreSQL testing support
-
#439: Add PostgreSQL database backend support (
fb5e9e1)- Full PostgreSQL/Neon database support as alternative to SQLite
- Async connection pooling with asyncpg
- Alembic migrations support for both backends
- Configurable via
BASIC_MEMORY_DATABASE_BACKENDenvironment variable
-
#441: Implement API v2 with ID-based endpoints (Phase 1) (
28cc522)- New ID-based API endpoints for improved performance
- Foundation for future API enhancements
- Backward compatible with existing endpoints
-
Add project_id to Relation and Observation for efficient project-scoped queries (
a920a9f)- Enables faster queries in multi-project environments
- Improved database schema for cloud deployments
-
Add bulk insert with ON CONFLICT handling for relations (
0818bda)- Faster relation creation during sync operations
- Handles duplicate relations gracefully
- Lightweight permalink resolution to avoid eager loading
(
6f99d2e)- Reduces database queries during entity lookups
- Improved response times for read operations
-
#464: Pin FastMCP to 2.12.3 to fix MCP tools visibility (
f227ef6)- Fixes issue where MCP tools were not visible to Claude
- Reverts to last known working FastMCP version
-
#458: Reduce watch service CPU usage by increasing reload interval (
897b1ed)- Lowers CPU usage during file watching
- More efficient resource utilization
-
#456: Await background sync task cancellation in lifespan shutdown (
efbc758)- Prevents hanging on shutdown
- Clean async task cleanup
-
#434: Respect --project flag in background sync (
70bb10b)- Background sync now correctly uses specified project
- Fixes multi-project sync issues
-
#446: Fix observation parsing and permalink limits (
73d940e)- Handles edge cases in observation content
- Prevents permalink truncation issues
-
#424: Handle periods in kebab_filenames mode (
b004565)- Fixes filename handling for files with multiple periods
- Improved kebab-case conversion
-
Fix Postgres/Neon connection settings and search index dedupe (
b5d4fb5)- Optimized connection pooling for Postgres
- Prevents duplicate search index entries
-
Replace py-pglite with testcontainers for Postgres testing (
c462faf)- More reliable Postgres testing infrastructure
- Uses Docker-based test containers
-
Add PostgreSQL testing to GitHub Actions workflow (
66b91b2)- CI now tests both SQLite and PostgreSQL backends
- Ensures cross-database compatibility
-
#416: Add integration test for read_note with underscored folders (
0c12a39)- Verifies folder name handling edge cases
- Cloud compatibility fixes and performance improvements (#454)
- Remove logfire instrumentation for cleaner production deployments
- Truncate content_stems to fix Postgres 8KB index row limit
-
#429: Use platform-native path separators in config.json (
6517e98)- Fixes config.json path separator issues on Windows
- Uses os.path.join for platform-native path construction
- Ensures consistent path handling across platforms
-
#427: Add rclone installation checks for Windows bisync commands (
1af0539)- Validates rclone installation before running bisync commands
- Provides clear error messages when rclone is not installed
- Improves user experience on Windows
-
#421: Main project always recreated on project list command (
cad7019)- Fixes issue where main project was recreated unnecessarily
- Improves project list command reliability
- Reduces unnecessary file system operations
- #422: Handle Windows line endings in rclone bisync
(
e9d0a94)- Added
--compare=modtimeflag to rclone bisync to ignore size differences from line ending conversions - Fixes issue where LF→CRLF conversion on Windows was treated as file corruption
- Resolves "corrupted on transfer: sizes differ" errors during cloud sync on Windows
- Users will need to run
--resynconce after updating to establish new baseline
- Added
-
#417: Add run_in_background parameter to sync endpoint (
7ccec7e)- New
run_in_backgroundparameter for async sync operations - Improved API flexibility for long-running sync tasks
- Comprehensive test coverage for background sync behavior
- New
-
#405: SPEC-20 Simplified Project-Scoped Rclone Sync (
0b3272a)- Simplified and more reliable cloud synchronization
- Project-scoped rclone configuration
- Better error handling and status reporting
-
#384: Streaming Foundation & Async I/O Consolidation (SPEC-19) (
e78345f)- Foundation for streaming support in future releases
- Consolidated async I/O patterns across codebase
- Improved performance and resource management
-
#364: Add circuit breaker for file sync failures (
434cdf2)- Prevents cascading failures during sync operations
- Automatic recovery from transient errors
- Better resilience in cloud sync scenarios
-
#362: Add --verbose and --no-gitignore options to cloud upload (
7f9c1a9)- Enhanced upload control with verbose logging
- Option to bypass gitignore filtering when needed
- Better debugging and troubleshooting capabilities
-
#391: Add delete_notes parameter to remove project endpoint (
c9946ec)- Option to delete notes when removing projects
- Safer project cleanup workflows
- Prevents accidental data loss
-
#420: Skip archive files during cloud upload (
49b2adc)- Prevents uploading of zip, tar, gz and other archive files
- Reduces storage usage and upload time
- Better file filtering during cloud operations
-
#419: Rename write_note entity_type to note_type for clarity (
1646572)- Clearer parameter naming in write_note tool
- Improved API consistency and documentation
- Better developer experience
-
#418: Quote string values in YAML frontmatter to handle special characters (
f0d7398)- Fixes YAML parsing errors with special characters
- More robust frontmatter handling
- Prevents data corruption in edge cases
-
#415: Handle dict objects in write_resource endpoint (
4614fd0)- Fixes errors when writing dictionary resources
- Better type handling in resource endpoints
- Improved API robustness
-
#414: Replace Unicode arrows with ASCII for Windows compatibility (
fc01f6a)- Fixes display issues on Windows terminals
- Better cross-platform compatibility
- Improved CLI user experience on Windows
-
#411: Windows CLI Unicode encoding errors (
0ba6f21)- Resolves Unicode encoding issues on Windows
- Better handling of international characters
- Improved Windows platform support
-
#410: Various rclone fixes for cloud sync on Windows (
c9946ec)- Fixes cloud sync reliability on Windows
- Better path handling for Windows filesystem
- Improved rclone integration on Windows
-
#402: Normalize YAML frontmatter types to prevent AttributeError (
a7d7cc5)- Fixes AttributeError when reading frontmatter
- More robust type normalization
- Better error handling in markdown parsing
-
#396: Strip duplicate headers in edit_note replace_section (
021af74)- Prevents duplicate headers when replacing sections
- Cleaner note editing behavior
- Better content consistency
-
#395: Simplify search_notes schema by removing Optional wrappers (
d775f7b)- Cleaner API schema definition
- Better type safety and validation
- Improved developer experience
-
#394: Add explicit type annotations to MCP tool parameters (
581b7b1)- Better type safety in MCP tools
- Improved IDE support and autocomplete
- Clearer tool documentation
-
#389: Handle null, empty, and string 'None' title in markdown frontmatter (
bb8da31)- Fixes errors with malformed frontmatter titles
- More robust title handling
- Better error recovery
-
#380: Optimize sync memory usage to prevent OOM on large projects (
4fd6d0c)- Prevents out-of-memory errors on large knowledge bases
- Better memory management during sync
- Improved scalability
-
#379: Handle YAML parsing errors gracefully in update_frontmatter (
32236cd)- Better error handling for malformed YAML
- Graceful degradation instead of crashes
- Improved robustness
-
#377: Preserve mtime on WebDAV upload (
e6c8e36)- Maintains file modification times during upload
- Better sync accuracy
- Prevents unnecessary re-syncing
-
#370: Prevent deleted projects from being recreated by background sync (
449b62d)- Fixes race condition with project deletion
- Better lifecycle management
- Prevents unwanted project recreation
-
#369: Use filesystem timestamps for entity sync instead of database operation time (
b7497d7)- More accurate sync detection
- Better handling of external file modifications
- Improved sync reliability
-
#368: Handle YAML parsing errors and missing entity_type in markdown files (
d1431bd)- Better error handling for malformed markdown
- Graceful handling of missing metadata
- Improved robustness
-
#367: Resolve UNIQUE constraint violation in entity upsert with observations (
171bef7)- Fixes database constraint errors during sync
- Better handling of duplicate observations
- Improved data integrity
-
#366: Terminate sync immediately when project is deleted (
729a5a3)- Faster project deletion
- Better resource cleanup
- Improved user experience
-
#357: Make project creation endpoint idempotent (
53fb13b)- Prevents errors when creating existing projects
- Better API reliability
- Improved cloud integration
-
#353: Handle None text values in Claude conversations importer (
bd6c834)- Fixes import errors with empty messages
- Better error handling in importers
- Improved data migration
- Force full database sync after project sync/bisync operations
(
2ad0ee9)- Ensures database consistency after cloud operations
- Better sync reliability
- Improved data integrity
-
Add free trial information to README (
a7d7cc5,8aaddb6)- Updated README with Basic Memory Cloud trial info
- Better onboarding experience
- Clearer pricing information
-
Announce Basic Memory Cloud launch in README (
d756531)- Official cloud service announcement
- Updated documentation for cloud features
- Improved product positioning
No manual migration required. Upgrade with:
# Update via uv
uv tool upgrade basic-memory
# Or install fresh
uv tool install basic-memoryWhat's New in v0.16.0:
- Streaming foundation and consolidated async I/O (SPEC-19)
- Simplified project-scoped rclone sync (SPEC-20)
- Circuit breaker for sync failure resilience
- Enhanced Windows platform support
- Improved cloud upload with verbose and gitignore options
- Better error handling across YAML parsing and frontmatter
- Memory optimization for large projects
- Archive file filtering during upload
Breaking Changes:
write_noteparameter renamed:entity_type→note_typefor clarity
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory
# Docker
docker pull ghcr.io/basicmachines-co/basic-memory:v0.16.0- #356: Add WebDAV upload command for cloud projects
(
5258f45)- New
bm cloud uploadcommand for uploading local files/directories to cloud projects - WebDAV-based file transfer with automatic directory creation
- Support for
.gitignoreand.bmignorepattern filtering - Automatic project creation with
--create-projectflag - Optional post-upload sync with
--syncflag (enabled by default) - Human-readable file size reporting (bytes, KB, MB)
- Comprehensive test coverage (28 unit tests)
- New
No manual migration required. Upgrade with:
# Update via uv
uv tool upgrade basic-memory
# Or install fresh
uv tool install basic-memoryWhat's New:
- Upload local files to cloud projects with
bm cloud upload - Streamlined cloud project creation and management
- Better file filtering with gitignore integration
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory
# Docker
docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.2-
#352: Optimize sync/indexing for 43% faster performance (
c0538ad)- Significant performance improvements to file synchronization and indexing operations
- 43% reduction in sync time for large knowledge bases
- Optimized database queries and file processing
-
#350: Optimize directory operations for 10-100x performance improvement (
00b73b0)- Dramatic performance improvements for directory listing operations
- 10-100x faster directory traversal depending on knowledge base size
- Reduced memory footprint for large directory structures
- Exclude null fields from directory endpoint responses for smaller payloads
-
#355: Update view_note and ChatGPT tools for Claude Desktop compatibility (
2b7008d)- Fix view_note tool formatting for better Claude Desktop rendering
- Update ChatGPT tool integration for improved compatibility
- Enhanced artifact display in Claude Desktop interface
-
#348: Add permalink normalization to project lookups in deps.py (
a09066e)- Fix project lookup failures due to case sensitivity
- Normalize permalinks consistently across project operations
- Improve project switching reliability
-
#345: Project deletion failing with permalink normalization (
be352ab)- Fix project deletion errors related to permalink handling
- Ensure proper cleanup of project resources
- Improve error messages for deletion failures
-
#341: Correct ProjectItem.home property to return path instead of name (
3e876a7)- Fix ProjectItem.home to return correct project path
- Resolve configuration issues with project paths
- Improve project path resolution consistency
-
#339: Prevent nested project paths to avoid data conflicts (
795e339)- Block creation of nested project paths that could cause data conflicts
- Add validation to prevent project path hierarchy issues
- Improve error messages for invalid project configurations
-
#338: Normalize paths to lowercase in cloud mode to prevent case collisions (
07e304c)- Fix path case sensitivity issues in cloud deployments
- Normalize paths consistently across cloud operations
- Prevent data loss from case-insensitive filesystem collisions
-
#336: Cloud mode path validation and sanitization (bmc-issue-103) (
2a1c06d)- Enhanced path validation for cloud deployments
- Improved path sanitization to prevent security issues
- Better error handling for invalid paths in cloud mode
-
#332: Cloud mode path validation and sanitization (
7616b2b)- Additional cloud mode path fixes and improvements
- Comprehensive path validation for cloud environments
- Security enhancements for path handling
-
#344: Async client context manager pattern for cloud consolidation (SPEC-16) (
8d2e70c)- Refactor async client to use context manager pattern
- Improve resource management and cleanup
- Enable better dependency injection for cloud deployments
- Foundation for cloud platform consolidation
-
#343: Add SPEC-15 for configuration persistence via Tigris (
53438d1)- Design specification for persistent configuration storage
- Foundation for cloud configuration management
- Tigris S3-compatible storage integration planning
-
#334: Introduce BASIC_MEMORY_PROJECT_ROOT for path constraints (
ccc4386)- Add environment variable for constraining project paths
- Improve security by limiting project creation locations
- Better control over project directory structure
-
#335: v0.15.0 assistant guide updates (
c6f93a0)- Update AI assistant guide for v0.15.0 features
- Improve documentation for new MCP tools
- Better examples and usage patterns
-
#339: Add tool use documentation to write_note for root folder usage (
73202d1)- Document how to use empty string for root folder in write_note
- Clarify folder parameter usage
- Improve tool documentation clarity
-
Fix link in ai_assistant_guide resource (
2a1c06d)- Correct broken documentation links
- Improve resource accessibility
- Add SPEC-17 and SPEC-18 documentation
(
962d88e)- New specification documents for future features
- Architecture planning and design documentation
None - This release maintains full backward compatibility with v0.15.0
No manual migration required. Upgrade with:
# Update via uv
uv tool upgrade basic-memory
# Or install fresh
uv tool install basic-memoryWhat's Fixed:
- Significant performance improvements (43% faster sync, 10-100x faster directory operations)
- Multiple cloud deployment stability fixes
- Project path validation and normalization issues resolved
- Better Claude Desktop and ChatGPT integration
What's New:
- Context manager pattern for async clients (foundation for cloud consolidation)
- BASIC_MEMORY_PROJECT_ROOT environment variable for path constraints
- Enhanced cloud mode path handling and security
- SPEC-15 and SPEC-16 architecture documentation
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory
# Docker
docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.1- Permalink Collision Data Loss Prevention - Fixed critical bug where creating similar entity names would overwrite existing files
(
2a050ed)- Issue: Creating "Node C" would overwrite "Node A.md" due to fuzzy search incorrectly matching similar file paths
- Solution: Added
strict=Trueparameter to link resolution, disabling fuzzy search fallback during entity creation - Impact: Prevents data loss from false positive path matching like "edge-cases/Node A.md" vs "edge-cases/Node C.md"
- Testing: Comprehensive integration tests and MCP-level permalink collision tests added
- Status: Manually verified fix prevents file overwrite in production scenarios
-
#330: Remove .env file loading from BasicMemoryConfig (
f3b1945)- Clean up configuration initialization to prevent unintended environment variable loading
-
#329: Normalize underscores in memory:// URLs for build_context (
f5a11f3)- Fix URL normalization to handle underscores consistently in memory:// protocol
- Improve knowledge graph navigation with standardized URL handling
-
#328: Simplify entity upsert to use database-level conflict resolution (
ee83b0e)- Leverage SQLite's native UPSERT for cleaner entity creation/update logic
- Reduce application-level complexity by using database conflict resolution
-
#312: Add proper datetime JSON schema format annotations for MCP validation (
a7bf42e)- Fix MCP schema validation errors with proper datetime format annotations
- Ensure compatibility with strict MCP schema validators
-
#281: Fix move_note without file extension (
3e168b9)- Allow moving notes by title alone without requiring .md extension
- Improve move operation usability and error handling
-
#310: Remove obsolete update_current_project function and --project flag reference (
17a6733)- Clean up deprecated project management code
- Remove unused CLI flag references
-
#309: Make sync operations truly non-blocking with thread pool (
1091e11)- Move sync operations to background thread pool for improved responsiveness
- Prevent blocking during file synchronization operations
-
#327: CLI Subscription Validation (SPEC-13 Phase 2) (
ace6a0f)- Implement subscription validation for CLI operations
- Foundation for future cloud billing integration
-
#322: Cloud CLI sync via rclone bisync (
99a35a7)- Add bidirectional cloud synchronization using rclone
- Enable local-cloud file sync with conflict detection
-
#315: Implement SPEC-11 API performance optimizations (
5da97e4)- Comprehensive API performance improvements
- Optimized database queries and response times
-
#314: Integrate ignore_utils to skip .gitignored files in sync process (
33ee1e0)- Respect .gitignore patterns during file synchronization
- Prevent syncing build artifacts and temporary files
-
#313: Add disable_permalinks config flag (
9035913)- Optional permalink generation for users who don't need them
- Improves flexibility for different knowledge management workflows
-
#306: Implement cloud mount CLI commands for local file access (
2c5c606)- Mount cloud files locally using rclone for real-time editing
- Three performance profiles: fast (5s), balanced (10-15s), safe (15s+)
- Cross-platform rclone installer with package manager fallbacks
-
#305: ChatGPT tools for search and fetch (
f40ab31)- Add ChatGPT-specific search and fetch tools
- Expand AI assistant integration options
-
#298: Implement SPEC-6 Stateless Architecture for MCP Tools (
a1d7792)- Redesign MCP tools for stateless operation
- Enable cloud deployment with better scalability
-
#296: Basic Memory cloud upload (
e0d8aeb)- Implement file upload capabilities for cloud storage
- Foundation for cloud-hosted Basic Memory instances
-
#291: Merge Cloud auth (
3a6baf8)- OAuth 2.1 authentication with Supabase integration
- JWT-based tenant isolation for multi-user cloud deployments
-
#331: Add Python 3.13 to test matrix (
16d7edd)- Ensure compatibility with latest Python version
- Expand CI/CD testing coverage
-
#316: Enable WAL mode and add Windows-specific SQLite optimizations (
c83d567)- Enable Write-Ahead Logging for better concurrency
- Platform-specific SQLite optimizations for Windows users
-
#320: Rework lifecycle management to optimize cloud deployment (
ea2e93d)- Optimize application lifecycle for cloud environments
- Improve startup time and resource management
-
#319: Resolve entity relations in background to prevent cold start blocking (
324844a)- Move relation resolution to background processing
- Faster MCP server cold starts
-
#318: Enforce minimum 1-day timeframe for recent_activity (
f818702)- Fix timezone-related issues in recent activity queries
- Ensure consistent behavior across time zones
-
#317: Critical cloud deployment fixes for MCP stability (
2efd8f4)- Multiple stability improvements for cloud-hosted MCP servers
- Enhanced error handling and recovery
-
Comprehensive Testing - Extensive test coverage for critical fixes
- New permalink collision test suite with 4 MCP-level integration tests
- Entity service test coverage expanded to reproduce fuzzy search bug
- Manual testing verification of data loss prevention
- All 55 entity service tests passing with new strict resolution
-
Windows Support Enhancements (
7a8b08d,9aa4024)- Fix Windows test failures and add Windows CI support
- Address platform-specific issues for Windows users
- Enhanced cross-platform compatibility
-
Docker Improvements (
105bcaa)- Implement non-root Docker container to fix file ownership issues
- Improved security and compatibility in containerized deployments
-
Code Quality
- Enhanced filename sanitization with optional kebab case support
- Improved character conflict detection for sync operations
- Better error handling across the codebase
- Path traversal security vulnerability fixes
-
#321: Corrected dead links in README (
fc38877)- Fix broken documentation links
- Improve navigation and accessibility
-
#308: Update Claude Code GitHub Workflow (
8c7e29e)- Enhanced GitHub integration documentation
- Better Claude Code collaboration workflow
None - This release maintains full backward compatibility with v0.14.x
All changes are either:
- Bug fixes that correct unintended behavior
- New optional features that don't affect existing functionality
- Internal optimizations that are transparent to users
No manual migration required. Upgrade with:
# Update via uv
uv tool upgrade basic-memory
# Or install fresh
uv tool install basic-memoryWhat's Fixed:
- Data loss bug from permalink collisions is completely resolved
- Cloud deployment stability significantly improved
- Windows platform compatibility enhanced
- Better performance across all operations
What's New:
- Cloud sync capabilities via rclone
- Subscription validation foundation
- Python 3.13 support
- Enhanced security and stability
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory
# Docker
docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.0-
#204: Fix MCP Error with MCP-Hub integration (
3621bb7)- Resolve compatibility issues with MCP-Hub
- Improve error handling in project management tools
- Ensure stable MCP tool integration across different environments
-
Modernize datetime handling and suppress SQLAlchemy warnings (
f80ac0e)- Replace deprecated
datetime.utcnow()with timezone-aware alternatives - Suppress SQLAlchemy deprecation warnings for cleaner output
- Improve future compatibility with Python datetime best practices
- Replace deprecated
-
#203: Constrain fastmcp version to prevent breaking changes (
827f7cf)- Pin fastmcp to compatible version range to avoid API breaking changes
- Ensure stable MCP server functionality across updates
- Improve dependency management for production deployments
-
#190: Fix Problems with MCP integration
(bd4f551)- Resolve MCP server initialization and communication issues
- Improve error handling and recovery in MCP operations
- Enhance stability for AI assistant integrations
-
Add Cursor IDE integration button - One-click setup for Cursor IDE users (
5360005)- Direct installation button for Cursor IDE in README
- Streamlined setup process for Cursor users
- Enhanced developer experience for AI-powered coding
-
Add Homebrew installation instructions - Official Homebrew tap support (
39f811f)- Official Homebrew formula in basicmachines-co/basic-memory tap
- Simplified installation process for macOS users
- Package manager integration for easier dependency management
-
Docker Container Registry Migration - Switch from Docker Hub to GitHub Container Registry for better security and integration
(616c1f0)- Automated Docker image publishing via GitHub Actions CI/CD pipeline
- Enhanced container security with GitHub's integrated vulnerability scanning
- Streamlined container deployment workflow for production environments
-
Enhanced Search Documentation - Comprehensive search syntax examples for improved user experience (
a589f8b)- Detailed examples for Boolean search operators (AND, OR, NOT)
- Advanced search patterns including phrase matching and field-specific queries
- User-friendly documentation for complex search scenarios
-
Cross-Project File Management - Intelligent move operations with project boundary detection (
db5ef7d)- Automatic detection of cross-project move attempts with helpful guidance
- Clear error messages when attempting unsupported cross-project operations
-
#184: Preserve permalinks when editing notes without frontmatter permalinks (
c2f4b63)- Fix permalink preservation during note editing operations
- Ensure consistent permalink handling across different note formats
- Maintain note identity and searchability during incremental edits
-
#183: Implement project-specific sync status checks for MCP tools (
12b5152)- Fix sync status reporting to correctly reflect current project state
- Resolve inconsistencies where sync status showed global instead of project-specific information
- Improve project isolation for sync operations and status reporting
-
#180: Handle Boolean search syntax with hyphenated terms (
546e3cd)- Fix search parsing issues with hyphenated terms in Boolean queries
- Improve search query tokenization for complex term structures
- Enhanced search reliability for technical documentation and multi-word concepts
-
#174: Respect BASIC_MEMORY_HOME environment variable in Docker containers (
9f1db23)- Fix Docker container configuration to properly honor custom home directory settings
- Improve containerized deployment flexibility with environment variable support
- Ensure consistent behavior between local and containerized installations
-
#168: Scope entity queries by project_id in upsert_entity method (
2a3adc1)- Fix entity isolation issues in multi-project setups
- Prevent cross-project entity conflicts during database operations
- Strengthen project boundary enforcement at the database level
-
#166: Handle None from_entity in Context API RelationSummary (
8a065c3)- Fix null pointer exceptions in relation processing
- Improve error handling for incomplete relation data
- Enhanced stability for knowledge graph traversal operations
-
#164: Remove log level configuration from mcp_server.run() (
224e4bf)- Simplify MCP server startup by removing redundant log level settings
- Fix potential logging configuration conflicts
- Streamline server initialization process
-
#162: Ensure permalinks are generated for entities with null permalinks during move operations (
f506507)- Fix move operations for entities without existing permalinks
- Automatic permalink generation during file move operations
- Maintain database consistency during file reorganization
-
Comprehensive Test Coverage - Extensive test suites for new features and edge cases
- Enhanced test coverage for project-specific sync status functionality
- Additional test scenarios for search syntax validation and edge cases
- Integration tests for Docker CI workflow and container publishing
- Comprehensive move operations testing with project boundary validation
-
Docker CI/CD Pipeline - Production-ready automated container publishing (
74847cc)- Automated Docker image building and publishing on release
- Multi-architecture container support for AMD64 and ARM64 platforms
- Integrated security scanning and vulnerability assessments
- Streamlined deployment pipeline for production environments
-
Release Process Improvements - Enhanced automation and quality gates (
a52ce1c)- Homebrew formula updates limited to stable releases only
- Improved release automation with better quality control
- Enhanced CI/CD pipeline reliability and error handling
-
Code Quality Enhancements - Improved error handling and validation
- Better null safety in entity and relation processing
- Enhanced project isolation validation throughout the codebase
- Improved error messages and user guidance for edge cases
- Strengthened database consistency guarantees across operations
-
GitHub Container Registry Integration - Modern container infrastructure
- Migration from Docker Hub to GitHub Container Registry (ghcr.io)
- Improved security with integrated vulnerability scanning
- Better integration with GitHub-based development workflow
- Enhanced container versioning and artifact management
-
Enhanced CI/CD Workflows - Robust automated testing and deployment
- Automated Docker image publishing on releases
- Comprehensive test coverage validation before deployment
- Multi-platform container building and publishing
- Integration with GitHub's security and monitoring tools
This release includes several behind-the-scenes improvements and fixes. All changes are backward compatible:
- Docker Users: Container images now served from
ghcr.io/basicmachines-co/basic-memoryinstead of Docker Hub - Search Users: Enhanced search syntax handling - existing queries continue to work unchanged
- Multi-Project Users: Improved project isolation - all existing projects remain fully functional
- All Users: Enhanced stability and error handling - no breaking changes to existing workflows
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory
# Docker (new registry)
docker pull ghcr.io/basicmachines-co/basic-memory:latest- Homebrew Integration - Automatic Homebrew formula updates
- Documentation - Add git sign-off reminder to development guide
-
Custom Entity Types - Support for custom entity types in write_note (
7789864)- Fixed
entity_typeparameter forwrite_noteMCP tool to respect value passed in - Frontmatter
typefield automatically respected when no explicit parameter provided - Maintains backward compatibility with default "note" type
- Fixed
-
#139: Fix "UNIQUE constraint failed: entity.permalink" database error (
c6215fd)- Implement SQLAlchemy UPSERT strategy to handle permalink conflicts gracefully
- Eliminates crashes when creating notes with existing titles in same folders
- Seamlessly updates existing entities instead of failing with constraint errors
-
Database Migration Performance - Eliminate redundant migration initialization (
84d2aaf)- Fix duplicate migration calls that slowed system startup
- Improve performance with multiple projects (tested with 28+ projects)
- Add migration deduplication safeguards with comprehensive test coverage
-
User Experience - Correct spelling error in continue_conversation prompt (
b4c26a6)- Fix "Chose a folder" → "Choose a folder" in MCP prompt instructions
- Improve grammar and clarity in user-facing prompt text
-
Website Updates - Add new website and community links to README (
3fdce68) -
Project Documentation - Update README.md and CLAUDE.md with latest project information (
782cb2d)
-
Comprehensive Test Coverage - Add extensive test suites for new features
- Custom entity type validation with 8 new test scenarios
- UPSERT behavior testing with edge case coverage
- Migration deduplication testing with 6 test scenarios
- Database constraint handling validation
-
Code Quality - Enhanced error handling and validation
- Improved SQLAlchemy patterns with modern UPSERT operations
- Better conflict resolution strategies for entity management
- Strengthened database consistency guarantees
- Database Operations - Faster startup and improved scalability
- Reduced migration overhead for multi-project setups
- Optimized conflict resolution for entity creation
- Enhanced performance with growing knowledge bases
This release includes automatic database improvements. No manual migration required:
- Existing notes and entity types continue working unchanged
- New
entity_typeparameter is optional and backward compatible - Database performance improvements apply automatically
- All existing MCP tool behavior preserved
# Latest stable release
uv tool install basic-memory
# Update existing installation
uv tool upgrade basic-memory- MCP Tools: Renamed
create_projecttool tocreate_memory_projectfor namespace isolation - Namespace: Continued namespace isolation effort to prevent conflicts with other MCP servers
- Tool functionality remains identical - only the name changed from
create_projecttocreate_memory_project - All integration tests updated to use the new tool name
- Completes namespace isolation for project management tools alongside
list_memory_projects
- MCP Tools: Renamed
list_projectstool tolist_memory_projectsto avoid naming conflicts with other MCP servers - Namespace: Improved tool naming specificity for better MCP server integration and isolation
- Tool functionality remains identical - only the name changed from
list_projectstolist_memory_projects - All integration tests updated to use the new tool name
- Better namespace isolation for Basic Memory MCP tools
- Projects: Fixed case-insensitive project switching where switching succeeded but subsequent operations failed due to session state inconsistency
- Config: Enhanced config manager with case-insensitive project lookup using permalink-based matching
- MCP Tools: Updated project management tools to store canonical project names from database instead of user input
- API: Improved project service to handle both name and permalink lookups consistently
- Added comprehensive case-insensitive project switching test coverage with 5 new integration test scenarios
- Fixed permalink generation inconsistencies where different case inputs could generate different permalinks
- Enhanced project URL construction to use permalinks consistently across all API calls
- Improved error handling and session state management for project operations
- Project switching now preserves canonical project names from database in session state
- All project operations use permalink-based lookups for case-insensitive matching
- Enhanced test coverage ensures reliable case-insensitive project operations
- Release Management: Added automated release management system with version control in
__init__.py - Automation: Implemented justfile targets for
releaseandbetacommands with comprehensive quality gates - CI/CD: Enhanced release process with automatic version updates, git tagging, and GitHub release creation
- Added
.claude/commands/release/directory with automation documentation - Implemented release validation including lint, type-check, and test execution
- Streamlined release workflow from manual process to single-command automation
- Updated package version management to use actual version numbers instead of dynamic versioning
- Added release process documentation and command references
- Enhanced justfile with comprehensive release automation targets
- CLI: Fixed
basic-memory projectproject management commands that were not working in v0.13.0 (#129) - Projects: Resolved case sensitivity issues when switching between projects that caused "Project not found" errors (#127)
- API: Standardized CLI project command endpoints and improved error handling
- Core: Implemented consistent project name handling using permalinks to avoid case-related conflicts
- Renamed
basic-memory project synccommand tobasic-memory project sync-configfor clarity - Improved project switching reliability across different case variations
- Removed redundant server status messages from CLI error outputs
Basic Memory v0.13.0 is a major release that transforms Basic Memory into a true multi-project knowledge management system. This release introduces fluid project switching, advanced note editing capabilities, robust file management, and production-ready OAuth authentication - all while maintaining full backward compatibility.
What's New for Users:
- 🎯 Switch between projects instantly during conversations with Claude
- ✏️ Edit notes incrementally without rewriting entire documents
- 📁 Move and organize notes with full database consistency
- 📖 View notes as formatted artifacts for better readability in Claude Desktop
- 🔍 Search frontmatter tags to discover content more easily
- 🔐 OAuth authentication for secure remote access
- ⚡ Development builds automatically published for beta testing
Key v0.13.0 Accomplishments:
- ✅ Complete Project Management System - Project switching and project-specific operations
- ✅ Advanced Note Editing - Incremental editing with append, prepend, find/replace, and section operations
- ✅ View Notes as Artifacts in Claude Desktop/Web - Use the view_note tool to view a note as an artifact
- ✅ File Management System - Full move operations with database consistency and rollback protection
- ✅ Enhanced Search Capabilities - Frontmatter tags now searchable, improved content discoverability
- ✅ Unified Database Architecture - Single app-level database for better performance and project management
Switch between projects instantly during conversations:
💬 "What projects do I have?"
🤖 Available projects:
• main (current, default)
• work-notes
• personal-journal
• code-snippets
💬 "Switch to work-notes"
🤖 ✓ Switched to work-notes project
Project Summary:
• 47 entities
• 125 observations
• 23 relations
💬 "What did I work on yesterday?"
🤖 [Shows recent activity from work-notes project]
Key Capabilities:
- Instant Project Switching: Change project context mid-conversation without restart
- Project-Specific Operations: Operations work within the currently active project context
- Project Discovery: List all available projects with status indicators
- Session Context: Maintains active project throughout conversation
- Backward Compatibility: Existing single-project setups continue to work seamlessly
Edit notes incrementally without rewriting entire documents:
# Append new sections to existing notes
edit_note("project-planning", "append", "\n## New Requirements\n- Feature X\n- Feature Y")
# Prepend timestamps to meeting notes
edit_note("meeting-notes", "prepend", "## 2025-05-27 Update\n- Progress update...")
# Replace specific sections under headers
edit_note("api-spec", "replace_section", "New implementation details", section="## Implementation")
# Find and replace with validation
edit_note("config", "find_replace", "v0.13.0", find_text="v0.12.0", expected_replacements=2)Key Capabilities:
- Append Operations: Add content to end of notes (most common use case)
- Prepend Operations: Add content to beginning of notes
- Section Replacement: Replace content under specific markdown headers
- Find & Replace: Simple text replacements with occurrence counting
- Smart Error Handling: Helpful guidance when operations fail
- Project Context: Works within the active project with session awareness
Move and organize notes:
# Simple moves with automatic folder creation
move_note("my-note", "work/projects/my-note.md")
# Organize within the active project
move_note("shared-doc", "archive/old-docs/shared-doc.md")
# Rename operations
move_note("old-name", "same-folder/new-name.md")Key Capabilities:
- Database Consistency: Updates file paths, permalinks, and checksums automatically
- Search Reindexing: Maintains search functionality after moves
- Folder Creation: Automatically creates destination directories
- Project Isolation: Operates within the currently active project
- Link Preservation: Maintains internal links and references
Find content more easily with improved search capabilities:
- Frontmatter Tag Search: Tags from YAML frontmatter are now indexed and searchable
- Improved Content Discovery: Search across titles, content, tags, and metadata
- Project-Scoped Search: Search within the currently active project
- Better Search Quality: Enhanced FTS5 indexing with tag content inclusion
Example:
---
title: Coffee Brewing Methods
tags: [coffee, brewing, equipment]
---Now searchable by: "coffee", "brewing", "equipment", or "Coffee Brewing Methods"
Single app-level database for better performance and project management:
- Migration from Per-Project DBs: Moved from multiple SQLite files to single app database
- Project Isolation: Proper data separation with project_id foreign keys
- Better Performance: Optimized queries and reduced file I/O
list_projects()- Discover and list all available projects with statusswitch_project(project_name)- Change active project context during conversationsget_current_project()- Show currently active project with statisticsset_default_project(project_name)- Update default project configurationsync_status()- Check file synchronization status and background operations
edit_note()- Incremental note editing (append, prepend, find/replace, section replace)move_note()- Move notes with database consistency and search reindexingview_note()- Display notes as formatted artifacts for better readability in Claude Desktop
All existing tools now support:
- Session context awareness (operates within the currently active project)
- Enhanced error messages with project context metadata
- Improved response formatting with project information footers
- Project isolation ensures operations stay within the correct project boundaries
Multiple ways to install and test Basic Memory:
# Stable release
uv tool install basic-memory
# Beta/pre-releases
uv tool install basic-memory --preMajor issues resolved in v0.13.0:
- #118: Fixed YAML tag formatting to follow standard specification
- #110: Fixed
--projectflag consistency across all CLI commands - #107: Fixed write_note update failures with existing notes
- #93: Fixed custom permalink handling in frontmatter
- #52: Enhanced search capabilities with frontmatter tag indexing
- FTS5 Search: Fixed special character handling in search queries
- Error Handling: Improved error messages and validation across all tools
Automatic Migration: First run will automatically migrate existing data to the new unified database structure. No manual action required.
What Changes:
- Database location: Moved to
~/.basic-memory/memory.db(unified across projects) - Configuration: Projects defined in
~/.basic-memory/config.jsonare synced with database
What Stays the Same:
- All existing notes and data remain unchanged
- Default project behavior maintained for single-project users
- All existing MCP tools continue to work without modification
- Project Management Guide - Multi-project workflows
- Note Editing Guide - Advanced editing techniques
- README.md - Installation options and beta build instructions
- CONTRIBUTING.md - Release process and version management
- CLAUDE.md - Development workflow and CI/CD documentation
- Claude.ai Integration - Updated MCP tool examples
Project Switching:
💬 "Switch to my work project and show recent activity"
🤖 [Calls switch_project("work") then recent_activity()]
Note Editing:
💬 "Add a section about deployment to my API docs"
🤖 [Calls edit_note("api-docs", "append", "## Deployment\n...")]
File Organization:
💬 "Move my old meeting notes to the archive folder"
🤖 [Calls move_note("meeting-notes", "archive/old-meetings.md")]
- Add extra logic for permalink generation with mixed Latin unicode and Chinese characters
(
73ea91f)
Signed-off-by: phernandez [email protected]
- Modify recent_activity args to be strings instead of enums
(
3c1cc34)
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
-
[bug]
#character accumulation in markdown frontmatter tags prop (#79,6c19c9e) -
[bug] Some notes never exit "modified" status (#77,
7930ddb) -
[bug] write_note Tool Fails to Update Existing Files in Some Situations. (#80,
9bff1f7) -
Write_note preserves frontmatter fields in content (#84,
3f4d9e4)
-
Avoiding "useless permalink values" for files without metadata - Enable permalinks to be updated on move via config setting
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
- Make set_default_project also activate project for current session to fix #37
(
cbe72be)
This change makes the 'basic-memory project default ' command both: 1. Set the default project for future invocations (persistent change) 2. Activate the project for the current session (immediate change)
Added tests to verify this behavior, which resolves issue #37 where the project name and path weren't changing properly when the default project was changed.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
- Make set_default_project also activate project for current session to fix #37
(
46c4fd2)
This change makes the 'basic-memory project default ' command both: 1. Set the default project for future invocations (persistent change) 2. Activate the project for the current session (immediate change)
Added tests to verify this behavior, which resolves issue #37 where the project name and path weren't changing properly when the default project was changed.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
Signed-off-by: phernandez [email protected]
- Move ai_assistant_guide.md into package resources to fix #39
(
390ff9d)
This change relocates the AI assistant guide from the static directory into the package resources directory, ensuring it gets properly included in the distribution package and is accessible when installed via pip/uv.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
- Move ai_assistant_guide.md into package resources to fix #39
(
cc2cae7)
This change relocates the AI assistant guide from the static directory into the package resources directory, ensuring it gets properly included in the distribution package and is accessible when installed via pip/uv.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
Signed-off-by: phernandez [email protected]
- Preserve custom frontmatter fields when updating notes
(
78f234b)
Fixes #36 by modifying entity_service.update_entity() to read existing frontmatter from files before updating them. Custom metadata fields such as Status, Priority, and Version are now preserved when notes are updated through the write_note MCP tool.
Added test case that verifies this behavior by creating a note with custom frontmatter and then updating it.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
- Preserve custom frontmatter fields when updating notes
(
e716946)
Fixes #36 by modifying entity_service.update_entity() to read existing frontmatter from files before updating them. Custom metadata fields such as Status, Priority, and Version are now preserved when notes are updated through the write_note MCP tool.
Added test case that verifies this behavior by creating a note with custom frontmatter and then updating it.
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
Signed-off-by: phernandez [email protected]
- Remove duplicate code in entity_service.py from bad merge
(
681af5d)
Signed-off-by: phernandez [email protected]
- Add help docs to mcp cli tools
(
731b502)
Signed-off-by: phernandez [email protected]
- Add mcp badge, update cli reference, llms-install.md
(
b26afa9)
Signed-off-by: phernandez [email protected]
fix spelling in CLAUDE.md: enviroment -> environment Signed-off-by: Ikko Eltociear Ashimine [email protected]
- Move project stats into projct subcommand
(
2a881b1)
Signed-off-by: phernandez [email protected]
- Ai_resource_guide.md path
(
da97353)
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
Fixes #30
Signed-off-by: phernandez [email protected]
- Drop search_index table on db reindex
(
31cca6f)
Signed-off-by: phernandez [email protected]
fixes #29
Signed-off-by: phernandez [email protected]
- Remove logfire
(
9bb8a02)
Signed-off-by: phernandez [email protected]
Signed-off-by: phernandez [email protected]
This PR updates the CLAUDE.md file to document the GitHub integration capabilities that enable Claude to participate directly in the development workflow.
This PR adds support for deploying Basic Memory on the Smithery platform.
Signed-off-by: bm-claudeai [email protected]
fix: drop search_index table on db reindex
fix: ai_resource_guide.md path
chore: remove logfire
Signed-off-by: phernandez [email protected]
- Update README.md and CLAUDE.md
(
182ec78)
Signed-off-by: phernandez [email protected]
feat: Add multiple projects support
feat: enhanced read_note for when initial result is not found
fix: merge frontmatter when updating note
fix: handle directory removed on sync watch
detailed contextual output formatting - Implement consistent logging and docstring patterns across prompt utilities - Fix type checking in prompt modules
next steps - recent_activity.py: Enhanced with better metadata handling and documentation -
continue_conversation.py: Improved context management
understand how to use the tools
and usage - Enhanced the search prompt with rich contextual output that helps LLMs understand results - Created a consistent pattern for formatting output across prompts - Improved error handling in metadata extraction - Standardized import organization and naming conventions - Fixed various type checking issues across the codebase
This PR is part of our ongoing effort to improve the MCP's interaction quality with LLMs, making the system more helpful and intuitive for AI assistants to navigate knowledge bases.
🤖 Generated with Claude Code
Co-authored-by: phernandez [email protected]
Add new canvas tool to create json canvas files in obsidian.
Co-authored-by: phernandez [email protected]
-
incremental sync on watch - sync non-markdown files in knowledge base - experimental
read_resourcetool for reading non-markdown files in raw form (pdf, image)
-
Add logfire instrumentation to tools (
3e8e3e8) -
Add logfire spans to cli (
00d23a5) -
Add logfire spans to cli (
812136c) -
Search query pagination params (
bc9ca07)
-
Add cli commands for mcp tools (
f5a7541) -
Add pagination to build_context and recent_activity (
0123544) -
Add pagination to read_notes (
02f8e86)
- Re-add sync status console on watch
(
66b57e6)
Co-authored-by: phernandez [email protected]
Co-authored-by: phernandez [email protected]
Co-authored-by: phernandez [email protected]
Co-authored-by: phernandez [email protected]
Import Claude.ai conversation and project data to basic-memory Markdown format.
Co-authored-by: phernandez [email protected]
- Refactor db schema migrate handling
(
ca632be)
-
Fix osx installer github action (
65ebe5d) -
Handle memory:// url format in read_note tool (
e080373) -
Remove create schema from init_db (
674dd1f)
- Set version in var, output version at startup
(
a91da13)
- Fix installer artifact
(
8de84c0)
- Get app artifact for installer
(
fe8c3d8)
- Don't zip app on release
(
8664c57)
- Fix app zip in installer release
(
8fa197e)
- Debug inspect build on ci
(
1d6054d)
- Debug installer ci
(
dab9573)
- Fix cx_freeze options for installer
(
854cf83)
- Ci installer app fix #37
(
2e215fe)
- Fix build on github ci for app installer
(
29a2594)
- Fix installer on ci, maybe
(
edbc04b)
- Try to fix installer ci
(
230738e)
- Refix vitual env in installer build
(
052f491)
- Workaround unsigned app
(
41d4d81)
- Fix path to intaller app artifact
(
53d220d)
-
feat(ci): build installer via github action
-
enforce conventional commits in PR titles
-
feat: add icon to installer
Co-authored-by: phernandez [email protected]
-
Fix installer for mac (
dde9ff2) -
Remove unused FileChange dataclass (
eb3360c) -
Update uv installer url (
2f9178b)
-
Create virtual env in test workflow (
8092e6d) -
Fix permalink uniqueness violations on create/update/sync (
135bec1) -
Fix recent activity bug (
3d2c0c8) -
Install fastapi deps after removing basic-foundation (
51a741e) -
Recreate search index on db reset (
1fee436) -
Remove basic-foundation from deps (
b8d0c71) -
Run tests via uv (
4eec820)
- Rename import tool
(
af6b7dc)
- Add memory-json importer, tweak observation content
(
3484e26)
- Fix versioning for 0.0.1 release
(
ba1e494)
- Remove basic-foundation src ref in pyproject.toml
(
29fce8b)