- #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 paul@basicmachines.co
- Modify recent_activity args to be strings instead of enums
(
3c1cc34)
Signed-off-by: phernandez paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
-
[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 paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
- 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 noreply@anthropic.com
- 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 noreply@anthropic.com
Signed-off-by: phernandez paul@basicmachines.co
- 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 noreply@anthropic.com
- 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 noreply@anthropic.com
Signed-off-by: phernandez paul@basicmachines.co
- 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 noreply@anthropic.com
- 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 noreply@anthropic.com
Signed-off-by: phernandez paul@basicmachines.co
- Remove duplicate code in entity_service.py from bad merge
(
681af5d)
Signed-off-by: phernandez paul@basicmachines.co
- Add help docs to mcp cli tools
(
731b502)
Signed-off-by: phernandez paul@basicmachines.co
- Add mcp badge, update cli reference, llms-install.md
(
b26afa9)
Signed-off-by: phernandez paul@basicmachines.co
fix spelling in CLAUDE.md: enviroment -> environment Signed-off-by: Ikko Eltociear Ashimine eltociear@gmail.com
- Move project stats into projct subcommand
(
2a881b1)
Signed-off-by: phernandez paul@basicmachines.co
- Ai_resource_guide.md path
(
da97353)
Signed-off-by: phernandez paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
Fixes #30
Signed-off-by: phernandez paul@basicmachines.co
- Drop search_index table on db reindex
(
31cca6f)
Signed-off-by: phernandez paul@basicmachines.co
fixes #29
Signed-off-by: phernandez paul@basicmachines.co
- Remove logfire
(
9bb8a02)
Signed-off-by: phernandez paul@basicmachines.co
Signed-off-by: phernandez paul@basicmachines.co
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 claude@basicmachines.co
fix: drop search_index table on db reindex
fix: ai_resource_guide.md path
chore: remove logfire
Signed-off-by: phernandez paul@basicmachines.co
- Update README.md and CLAUDE.md
(
182ec78)
Signed-off-by: phernandez paul@basicmachines.co
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 phernandez@basicmachines.co
Add new canvas tool to create json canvas files in obsidian.
Co-authored-by: phernandez phernandez@basicmachines.co
-
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 phernandez@basicmachines.co
Co-authored-by: phernandez phernandez@basicmachines.co
Co-authored-by: phernandez phernandez@basicmachines.co
Co-authored-by: phernandez phernandez@basicmachines.co
Import Claude.ai conversation and project data to basic-memory Markdown format.
Co-authored-by: phernandez phernandez@basicmachines.co
- 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 phernandez@basicmachines.co
-
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)