basic-memory 0.9.0__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- basic_memory-0.10.0/.github/dependabot.yml +12 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.gitignore +5 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CHANGELOG.md +70 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CLAUDE.md +39 -1
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CONTRIBUTING.md +38 -34
- basic_memory-0.10.0/Dockerfile +16 -0
- basic_memory-0.10.0/PKG-INFO +386 -0
- basic_memory-0.10.0/README.md +352 -0
- basic_memory-0.10.0/SECURITY.md +13 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/AI Assistant Guide.md +1 -1
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/Getting Started with Basic Memory.md +106 -15
- basic_memory-0.10.0/docs/Technical Information.md +243 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/User Guide.md +64 -26
- basic_memory-0.10.0/docs/Welcome to Basic memory.md +68 -0
- basic_memory-0.10.0/docs/attachments/Claude-Obsidian-Demo.mp4 +0 -0
- basic_memory-0.10.0/docs/attachments/disk-ai-logo.png +0 -0
- basic_memory-0.10.0/docs/publish.js +5 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/pyproject.toml +1 -1
- basic_memory-0.10.0/smithery.yaml +15 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/project_info_router.py +3 -4
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_chatgpt.py +5 -6
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_claude_conversations.py +5 -6
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_claude_projects.py +5 -6
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/config.py +3 -4
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/file_utils.py +3 -3
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/markdown_processor.py +1 -1
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +5 -4
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/file_service.py +3 -5
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/sync/watch_service.py +23 -13
- basic_memory-0.10.0/tests/sync/test_tmp_files.py +181 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/uv.lock +12 -11
- basic_memory-0.9.0/PKG-INFO +0 -736
- basic_memory-0.9.0/README.md +0 -702
- basic_memory-0.9.0/docs/.obsidian/app.json +0 -1
- basic_memory-0.9.0/docs/.obsidian/appearance.json +0 -1
- basic_memory-0.9.0/docs/.obsidian/core-plugins.json +0 -31
- basic_memory-0.9.0/docs/.obsidian/publish.json +0 -6
- basic_memory-0.9.0/docs/.obsidian/workspace.json +0 -167
- basic_memory-0.9.0/docs/Technical Information.md +0 -99
- basic_memory-0.9.0/docs/Welcome to Basic memory.md +0 -181
- basic_memory-0.9.0/docs/attachments/Obsidian-CoffeeKnowledgeBase-examples-overlays.gif +0 -0
- basic_memory-0.9.0/docs/attachments/Obsidian-CoffeeKnowledgeBase-examples.gif +0 -0
- basic_memory-0.9.0/examples/.basic-memory/memory.db +0 -0
- basic_memory-0.9.0/examples/.obsidian/app.json +0 -3
- basic_memory-0.9.0/examples/.obsidian/appearance.json +0 -1
- basic_memory-0.9.0/examples/.obsidian/community-plugins.json +0 -3
- basic_memory-0.9.0/examples/.obsidian/core-plugins.json +0 -31
- basic_memory-0.9.0/examples/.obsidian/graph.json +0 -22
- basic_memory-0.9.0/examples/.obsidian/plugins/optimize-canvas-connections/main.js +0 -158
- basic_memory-0.9.0/examples/.obsidian/plugins/optimize-canvas-connections/manifest.json +0 -10
- basic_memory-0.9.0/examples/.obsidian/publish.json +0 -6
- basic_memory-0.9.0/examples/.obsidian/workspace.json +0 -186
- basic_memory-0.9.0/examples/Untitled.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/workflows/release.yml +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.github/workflows/test.yml +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/.python-version +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CITATION.cff +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CLA.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/LICENSE +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/Makefile +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/basic-memory.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/CLI Reference.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/Canvas.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/Knowledge Format.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/Obsidian Integration.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/Canvas.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/Prompt.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/prompt 1.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/prompt2.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/prompt3.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/docs/attachments/prompt4.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Brewing Equipment.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Coffee Bean Origins.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Coffee Brewing Methods.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Coffee Flavor Map.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Coffee Knowledge Base.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Flavor Extraction.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Perfect Pour Over Coffee Method.canvas +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/examples/Coffee Notes/Tasting Notes.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/Basic.icns +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/README.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/icon.svg +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/installer.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/make_icons.sh +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/installer/setup.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/memory.json +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/scripts/install.sh +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/knowledge_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/app.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/project.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/project_info.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/status.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/sync.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/cli/main.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/db.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/main.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/server.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/build_context.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/canvas.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/delete_note.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/project_info.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/read_content.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/read_note.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/write_note.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/repository/search_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/base.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/memory.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/project_info.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/entity_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/sync/sync_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/src/basic_memory/utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/static/ai_assistant_guide.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/static/json_canvas_spec_1_0.md +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/Screenshot.png +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/conftest.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/test_project_info_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/conftest.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_project_commands.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_project_info.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_status.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_sync.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/cli/test_version.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/conftest.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/edit_file_test.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_memory.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_notes.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_project_info.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_read_note.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/schemas/test_schemas.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/services/test_entity_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/sync/test_sync_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/test_basic_memory.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/test_config.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.9.0 → basic_memory-0.10.0}/tests/utils/test_permalink_formatting.py +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "" # See documentation for possible values
|
|
9
|
+
directory: "/" # Location of package manifests
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "weekly"
|
|
12
|
+
|
|
@@ -1,6 +1,76 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.10.0 (2025-03-15)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- Ai_resource_guide.md path
|
|
9
|
+
([`da97353`](https://github.com/basicmachines-co/basic-memory/commit/da97353cfc3acc1ceb0eca22ac6af326f77dc199))
|
|
10
|
+
|
|
11
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
12
|
+
|
|
13
|
+
- Ai_resource_guide.md path
|
|
14
|
+
([`c4732a4`](https://github.com/basicmachines-co/basic-memory/commit/c4732a47b37dd2e404139fb283b65556c81ce7c9))
|
|
15
|
+
|
|
16
|
+
- Ai_resource_guide.md path
|
|
17
|
+
([`2e9d673`](https://github.com/basicmachines-co/basic-memory/commit/2e9d673e54ad6a63a971db64f01fc2f4e59c2e69))
|
|
18
|
+
|
|
19
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
20
|
+
|
|
21
|
+
- Don't sync *.tmp files on watch ([#31](https://github.com/basicmachines-co/basic-memory/pull/31),
|
|
22
|
+
[`6b110b2`](https://github.com/basicmachines-co/basic-memory/commit/6b110b28dd8ba705ebfc0bcb41faf2cb993da2c3))
|
|
23
|
+
|
|
24
|
+
Fixes #30
|
|
25
|
+
|
|
26
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
27
|
+
|
|
28
|
+
- Drop search_index table on db reindex
|
|
29
|
+
([`31cca6f`](https://github.com/basicmachines-co/basic-memory/commit/31cca6f913849a0ab8fc944803533e3072e9ef88))
|
|
30
|
+
|
|
31
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
32
|
+
|
|
33
|
+
- Improve utf-8 support for file reading/writing
|
|
34
|
+
([#32](https://github.com/basicmachines-co/basic-memory/pull/32),
|
|
35
|
+
[`eb5e4ec`](https://github.com/basicmachines-co/basic-memory/commit/eb5e4ec6bd4d2fe757087be030d867f4ca1d38ba))
|
|
36
|
+
|
|
37
|
+
fixes #29
|
|
38
|
+
|
|
39
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
40
|
+
|
|
41
|
+
### Chores
|
|
42
|
+
|
|
43
|
+
- Remove logfire
|
|
44
|
+
([`9bb8a02`](https://github.com/basicmachines-co/basic-memory/commit/9bb8a020c3425a02cb3a88f6f02adcd281bccee2))
|
|
45
|
+
|
|
46
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
47
|
+
|
|
48
|
+
### Documentation
|
|
49
|
+
|
|
50
|
+
- Add glama badge. Fix typos in README.md
|
|
51
|
+
([#28](https://github.com/basicmachines-co/basic-memory/pull/28),
|
|
52
|
+
[`9af913d`](https://github.com/basicmachines-co/basic-memory/commit/9af913da4fba7bb4908caa3f15f2db2aa03777ec))
|
|
53
|
+
|
|
54
|
+
Signed-off-by: phernandez <paul@basicmachines.co>
|
|
55
|
+
|
|
56
|
+
- Update CLAUDE.md with GitHub integration capabilities
|
|
57
|
+
([#25](https://github.com/basicmachines-co/basic-memory/pull/25),
|
|
58
|
+
[`fea2f40`](https://github.com/basicmachines-co/basic-memory/commit/fea2f40d1b54d0c533e6d7ee7ce1aa7b83ad9a47))
|
|
59
|
+
|
|
60
|
+
This PR updates the CLAUDE.md file to document the GitHub integration capabilities that enable
|
|
61
|
+
Claude to participate directly in the development workflow.
|
|
62
|
+
|
|
63
|
+
### Features
|
|
64
|
+
|
|
65
|
+
- Add Smithery integration for easier installation
|
|
66
|
+
([#24](https://github.com/basicmachines-co/basic-memory/pull/24),
|
|
67
|
+
[`eb1e7b6`](https://github.com/basicmachines-co/basic-memory/commit/eb1e7b6088b0b3dead9c104ee44174b2baebf417))
|
|
68
|
+
|
|
69
|
+
This PR adds support for deploying Basic Memory on the Smithery platform.
|
|
70
|
+
|
|
71
|
+
Signed-off-by: bm-claudeai <claude@basicmachines.co>
|
|
72
|
+
|
|
73
|
+
|
|
4
74
|
## v0.9.0 (2025-03-07)
|
|
5
75
|
|
|
6
76
|
### Chores
|
|
@@ -130,4 +130,42 @@ of using AI just for code generation, we've developed a true collaborative workf
|
|
|
130
130
|
5. Results improve through iterative collaboration and shared understanding
|
|
131
131
|
|
|
132
132
|
This approach has allowed us to tackle more complex challenges and build a more robust system than either humans or AI
|
|
133
|
-
could achieve independently.
|
|
133
|
+
could achieve independently.
|
|
134
|
+
|
|
135
|
+
## GitHub Integration
|
|
136
|
+
|
|
137
|
+
Basic Memory has taken AI-Human collaboration to the next level by integrating Claude directly into the development workflow through GitHub:
|
|
138
|
+
|
|
139
|
+
### GitHub MCP Tools
|
|
140
|
+
|
|
141
|
+
Using the GitHub Model Context Protocol server, Claude can now:
|
|
142
|
+
|
|
143
|
+
- **Repository Management**:
|
|
144
|
+
- View repository files and structure
|
|
145
|
+
- Read file contents
|
|
146
|
+
- Create new branches
|
|
147
|
+
- Create and update files
|
|
148
|
+
|
|
149
|
+
- **Issue Management**:
|
|
150
|
+
- Create new issues
|
|
151
|
+
- Comment on existing issues
|
|
152
|
+
- Close and update issues
|
|
153
|
+
- Search across issues
|
|
154
|
+
|
|
155
|
+
- **Pull Request Workflow**:
|
|
156
|
+
- Create pull requests
|
|
157
|
+
- Review code changes
|
|
158
|
+
- Add comments to PRs
|
|
159
|
+
|
|
160
|
+
This integration enables Claude to participate as a full team member in the development process, not just as a code generation tool. Claude's GitHub account ([bm-claudeai](https://github.com/bm-claudeai)) is a member of the Basic Machines organization with direct contributor access to the codebase.
|
|
161
|
+
|
|
162
|
+
### Collaborative Development Process
|
|
163
|
+
|
|
164
|
+
With GitHub integration, the development workflow includes:
|
|
165
|
+
|
|
166
|
+
1. **Direct code review** - Claude can analyze PRs and provide detailed feedback
|
|
167
|
+
2. **Contribution tracking** - All of Claude's contributions are properly attributed in the Git history
|
|
168
|
+
3. **Branch management** - Claude can create feature branches for implementations
|
|
169
|
+
4. **Documentation maintenance** - Claude can keep documentation updated as the code evolves
|
|
170
|
+
|
|
171
|
+
This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Contributing to Basic Memory
|
|
2
2
|
|
|
3
|
-
Thank you for considering contributing to Basic Memory! This document outlines the process for contributing to the
|
|
3
|
+
Thank you for considering contributing to Basic Memory! This document outlines the process for contributing to the
|
|
4
|
+
project and how to get started as a developer.
|
|
4
5
|
|
|
5
6
|
## Getting Started
|
|
6
7
|
|
|
@@ -65,61 +66,64 @@ Thank you for considering contributing to Basic Memory! This document outlines t
|
|
|
65
66
|
|
|
66
67
|
This project is designed for collaborative development between humans and LLMs (Large Language Models):
|
|
67
68
|
|
|
68
|
-
1. **CLAUDE.md**: The repository includes a `CLAUDE.md` file that serves as a project guide for both humans and LLMs.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
1. **CLAUDE.md**: The repository includes a `CLAUDE.md` file that serves as a project guide for both humans and LLMs.
|
|
70
|
+
This file contains:
|
|
71
|
+
- Key project information and architectural overview
|
|
72
|
+
- Development commands and workflows
|
|
73
|
+
- Code style guidelines
|
|
74
|
+
- Documentation standards
|
|
73
75
|
|
|
74
76
|
2. **AI-Human Collaborative Workflow**:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
- We encourage using LLMs like Claude for code generation, reviews, and documentation
|
|
78
|
+
- When possible, save context in markdown files that can be referenced later
|
|
79
|
+
- This enables seamless knowledge transfer between different development sessions
|
|
80
|
+
- Claude can help with implementation details while you focus on architecture and design
|
|
79
81
|
|
|
80
82
|
3. **Adding to CLAUDE.md**:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
- If you discover useful project information or common commands, consider adding them to CLAUDE.md
|
|
84
|
+
- This helps all contributors (human and AI) maintain consistent knowledge of the project
|
|
83
85
|
|
|
84
86
|
## Pull Request Process
|
|
85
87
|
|
|
86
88
|
1. **Create a Pull Request**: Open a PR against the `main` branch with a clear title and description.
|
|
87
|
-
2. **Sign the Developer Certificate of Origin (DCO)**: All contributions require signing our DCO, which certifies that
|
|
89
|
+
2. **Sign the Developer Certificate of Origin (DCO)**: All contributions require signing our DCO, which certifies that
|
|
90
|
+
you have the right to submit your contributions. This will be automatically checked by our CLA assistant when you
|
|
91
|
+
create a PR.
|
|
88
92
|
3. **PR Description**: Include:
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
+
- What the PR changes
|
|
94
|
+
- Why the change is needed
|
|
95
|
+
- How you tested the changes
|
|
96
|
+
- Any related issues (use "Fixes #123" to automatically close issues)
|
|
93
97
|
4. **Code Review**: Wait for code review and address any feedback.
|
|
94
98
|
5. **CI Checks**: Ensure all CI checks pass.
|
|
95
99
|
6. **Merge**: Once approved, a maintainer will merge your PR.
|
|
96
100
|
|
|
97
101
|
## Developer Certificate of Origin
|
|
98
102
|
|
|
99
|
-
By contributing to this project, you agree to the [Developer Certificate of Origin (DCO)](CLA.md). This means you
|
|
103
|
+
By contributing to this project, you agree to the [Developer Certificate of Origin (DCO)](CLA.md). This means you
|
|
104
|
+
certify that:
|
|
105
|
+
|
|
100
106
|
- You have the right to submit your contributions
|
|
101
107
|
- You're not knowingly submitting code with patent or copyright issues
|
|
102
108
|
- Your contributions are provided under the project's license (AGPL-3.0)
|
|
103
109
|
|
|
104
|
-
This is a lightweight alternative to a Contributor License Agreement and helps ensure that all contributions can be
|
|
110
|
+
This is a lightweight alternative to a Contributor License Agreement and helps ensure that all contributions can be
|
|
111
|
+
properly incorporated into the project and potentially used in commercial applications.
|
|
105
112
|
|
|
106
113
|
### Signing Your Commits
|
|
107
114
|
|
|
108
|
-
|
|
115
|
+
Sign your commit:
|
|
109
116
|
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
git commit -s -m "Your commit message"
|
|
113
|
-
```
|
|
114
|
-
This adds a `Signed-off-by` line to your commit message, certifying that you adhere to the DCO.
|
|
117
|
+
**Using the `-s` or `--signoff` flag**:
|
|
115
118
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
```bash
|
|
120
|
+
git commit -s -m "Your commit message"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This adds a `Signed-off-by` line to your commit message, certifying that you adhere to the DCO.
|
|
121
124
|
|
|
122
|
-
The sign-off certifies that you have the right to submit your contribution under the project's license and verifies your
|
|
125
|
+
The sign-off certifies that you have the right to submit your contribution under the project's license and verifies your
|
|
126
|
+
agreement to the DCO.
|
|
123
127
|
|
|
124
128
|
## Code Style Guidelines
|
|
125
129
|
|
|
@@ -135,10 +139,10 @@ The sign-off certifies that you have the right to submit your contribution under
|
|
|
135
139
|
|
|
136
140
|
- **Coverage Target**: We aim for 100% test coverage for all code
|
|
137
141
|
- **Test Framework**: Use pytest for unit and integration tests
|
|
138
|
-
- **Mocking**: Use pytest-mock for mocking dependencies
|
|
142
|
+
- **Mocking**: Use pytest-mock for mocking dependencies only when necessary
|
|
139
143
|
- **Edge Cases**: Test both normal operation and edge cases
|
|
140
144
|
- **Database Testing**: Use in-memory SQLite for testing database operations
|
|
141
|
-
- **Fixtures**: Use pytest fixtures for setup and teardown
|
|
145
|
+
- **Fixtures**: Use async pytest fixtures for setup and teardown
|
|
142
146
|
|
|
143
147
|
## Creating Issues
|
|
144
148
|
|
|
@@ -156,4 +160,4 @@ All contributors must follow the [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
|
156
160
|
|
|
157
161
|
## Thank You!
|
|
158
162
|
|
|
159
|
-
Your contributions help make Basic Memory better
|
|
163
|
+
Your contributions help make Basic Memory better. We appreciate your time and effort!
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
|
|
2
|
+
FROM python:3.12-slim
|
|
3
|
+
|
|
4
|
+
WORKDIR /app
|
|
5
|
+
|
|
6
|
+
# Copy the project files
|
|
7
|
+
COPY . .
|
|
8
|
+
|
|
9
|
+
# Install pip and build dependencies
|
|
10
|
+
RUN pip install --upgrade pip \
|
|
11
|
+
&& pip install . --no-cache-dir --ignore-installed
|
|
12
|
+
|
|
13
|
+
# Expose port if necessary (e.g., uv might use a port, but MCP over stdio so not needed here)
|
|
14
|
+
|
|
15
|
+
# Use the basic-memory entrypoint to run the MCP server
|
|
16
|
+
CMD ["basic-memory", "mcp"]
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: basic-memory
|
|
3
|
+
Version: 0.10.0
|
|
4
|
+
Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
|
|
5
|
+
Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
|
|
6
|
+
Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
|
|
7
|
+
Project-URL: Documentation, https://github.com/basicmachines-co/basic-memory#readme
|
|
8
|
+
Author-email: Basic Machines <hello@basic-machines.co>
|
|
9
|
+
License: AGPL-3.0-or-later
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Python: >=3.12.1
|
|
12
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
13
|
+
Requires-Dist: alembic>=1.14.1
|
|
14
|
+
Requires-Dist: dateparser>=1.2.0
|
|
15
|
+
Requires-Dist: fastapi[standard]>=0.115.8
|
|
16
|
+
Requires-Dist: greenlet>=3.1.1
|
|
17
|
+
Requires-Dist: icecream>=2.1.3
|
|
18
|
+
Requires-Dist: loguru>=0.7.3
|
|
19
|
+
Requires-Dist: markdown-it-py>=3.0.0
|
|
20
|
+
Requires-Dist: mcp>=1.2.0
|
|
21
|
+
Requires-Dist: pillow>=11.1.0
|
|
22
|
+
Requires-Dist: pydantic-settings>=2.6.1
|
|
23
|
+
Requires-Dist: pydantic[email,timezone]>=2.10.3
|
|
24
|
+
Requires-Dist: pyright>=1.1.390
|
|
25
|
+
Requires-Dist: python-frontmatter>=1.1.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0.1
|
|
27
|
+
Requires-Dist: qasync>=0.27.1
|
|
28
|
+
Requires-Dist: rich>=13.9.4
|
|
29
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
|
30
|
+
Requires-Dist: typer>=0.9.0
|
|
31
|
+
Requires-Dist: unidecode>=1.3.8
|
|
32
|
+
Requires-Dist: watchfiles>=1.0.4
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
36
|
+
[](https://badge.fury.io/py/basic-memory)
|
|
37
|
+
[](https://www.python.org/downloads/)
|
|
38
|
+
[](https://github.com/basicmachines-co/basic-memory/actions)
|
|
39
|
+
[](https://github.com/astral-sh/ruff)
|
|
40
|
+
[](https://smithery.ai/server/@basicmachines-co/basic-memory)
|
|
41
|
+
|
|
42
|
+
# Basic Memory
|
|
43
|
+
|
|
44
|
+
Basic Memory lets you build persistent knowledge through natural conversations with Large Language Models (LLMs) like
|
|
45
|
+
Claude, while keeping everything in simple Markdown files on your computer. It uses the Model Context Protocol (MCP) to
|
|
46
|
+
enable any compatible LLM to read and write to your local knowledge base.
|
|
47
|
+
|
|
48
|
+
- Website: http://basicmachines.co
|
|
49
|
+
- Documentation: http://memory.basicmachines.co
|
|
50
|
+
|
|
51
|
+
## Pick up your conversation right where you left off
|
|
52
|
+
|
|
53
|
+
- AI assistants can load context from local files in a new conversation
|
|
54
|
+
- Notes are saved locally as Markdown files in real time
|
|
55
|
+
- No project knowledge or special prompting required
|
|
56
|
+
|
|
57
|
+
https://github.com/user-attachments/assets/a55d8238-8dd0-454a-be4c-8860dbbd0ddc
|
|
58
|
+
|
|
59
|
+
## Quick Start
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Install with uv (recommended)
|
|
63
|
+
uv tool install basic-memory
|
|
64
|
+
|
|
65
|
+
# Configure Claude Desktop (edit ~/Library/Application Support/Claude/claude_desktop_config.json)
|
|
66
|
+
# Add this to your config:
|
|
67
|
+
{
|
|
68
|
+
"mcpServers": {
|
|
69
|
+
"basic-memory": {
|
|
70
|
+
"command": "uvx",
|
|
71
|
+
"args": [
|
|
72
|
+
"basic-memory",
|
|
73
|
+
"mcp"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
# Now in Claude Desktop, you can:
|
|
79
|
+
# - Write notes with "Create a note about coffee brewing methods"
|
|
80
|
+
# - Read notes with "What do I know about pour over coffee?"
|
|
81
|
+
# - Search with "Find information about Ethiopian beans"
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
You can view shared context via files in `~/basic-memory` (default directory location).
|
|
86
|
+
|
|
87
|
+
### Alternative Installation via Smithery
|
|
88
|
+
|
|
89
|
+
You can use [Smithery](https://smithery.ai/server/@basicmachines-co/basic-memory) to automatically configure Basic
|
|
90
|
+
Memory for Claude Desktop:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This installs and configures Basic Memory without requiring manual edits to the Claude Desktop configuration file. The
|
|
97
|
+
Smithery server hosts the MCP server component, while your data remains stored locally as Markdown files.
|
|
98
|
+
|
|
99
|
+
### Glama.ai
|
|
100
|
+
|
|
101
|
+
<a href="https://glama.ai/mcp/servers/o90kttu9ym">
|
|
102
|
+
<img width="380" height="200" src="https://glama.ai/mcp/servers/o90kttu9ym/badge" alt="basic-memory MCP server" />
|
|
103
|
+
</a>
|
|
104
|
+
|
|
105
|
+
## Why Basic Memory?
|
|
106
|
+
|
|
107
|
+
Most LLM interactions are ephemeral - you ask a question, get an answer, and everything is forgotten. Each conversation
|
|
108
|
+
starts fresh, without the context or knowledge from previous ones. Current workarounds have limitations:
|
|
109
|
+
|
|
110
|
+
- Chat histories capture conversations but aren't structured knowledge
|
|
111
|
+
- RAG systems can query documents but don't let LLMs write back
|
|
112
|
+
- Vector databases require complex setups and often live in the cloud
|
|
113
|
+
- Knowledge graphs typically need specialized tools to maintain
|
|
114
|
+
|
|
115
|
+
Basic Memory addresses these problems with a simple approach: structured Markdown files that both humans and LLMs can
|
|
116
|
+
read
|
|
117
|
+
and write to. The key advantages:
|
|
118
|
+
|
|
119
|
+
- **Local-first:** All knowledge stays in files you control
|
|
120
|
+
- **Bi-directional:** Both you and the LLM read and write to the same files
|
|
121
|
+
- **Structured yet simple:** Uses familiar Markdown with semantic patterns
|
|
122
|
+
- **Traversable knowledge graph:** LLMs can follow links between topics
|
|
123
|
+
- **Standard formats:** Works with existing editors like Obsidian
|
|
124
|
+
- **Lightweight infrastructure:** Just local files indexed in a local SQLite database
|
|
125
|
+
|
|
126
|
+
With Basic Memory, you can:
|
|
127
|
+
|
|
128
|
+
- Have conversations that build on previous knowledge
|
|
129
|
+
- Create structured notes during natural conversations
|
|
130
|
+
- Have conversations with LLMs that remember what you've discussed before
|
|
131
|
+
- Navigate your knowledge graph semantically
|
|
132
|
+
- Keep everything local and under your control
|
|
133
|
+
- Use familiar tools like Obsidian to view and edit notes
|
|
134
|
+
- Build a personal knowledge base that grows over time
|
|
135
|
+
|
|
136
|
+
## How It Works in Practice
|
|
137
|
+
|
|
138
|
+
Let's say you're exploring coffee brewing methods and want to capture your knowledge. Here's how it works:
|
|
139
|
+
|
|
140
|
+
1. Start by chatting normally:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
I've been experimenting with different coffee brewing methods. Key things I've learned:
|
|
144
|
+
|
|
145
|
+
- Pour over gives more clarity in flavor than French press
|
|
146
|
+
- Water temperature is critical - around 205°F seems best
|
|
147
|
+
- Freshly ground beans make a huge difference
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
... continue conversation.
|
|
151
|
+
|
|
152
|
+
2. Ask the LLM to help structure this knowledge:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
"Let's write a note about coffee brewing methods."
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
LLM creates a new Markdown file on your system (which you can see instantly in Obsidian or your editor):
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
---
|
|
162
|
+
title: Coffee Brewing Methods
|
|
163
|
+
permalink: coffee-brewing-methods
|
|
164
|
+
tags:
|
|
165
|
+
- coffee
|
|
166
|
+
- brewing
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
# Coffee Brewing Methods
|
|
170
|
+
|
|
171
|
+
## Observations
|
|
172
|
+
|
|
173
|
+
- [method] Pour over provides more clarity and highlights subtle flavors
|
|
174
|
+
- [technique] Water temperature at 205°F (96°C) extracts optimal compounds
|
|
175
|
+
- [principle] Freshly ground beans preserve aromatics and flavor
|
|
176
|
+
|
|
177
|
+
## Relations
|
|
178
|
+
|
|
179
|
+
- relates_to [[Coffee Bean Origins]]
|
|
180
|
+
- requires [[Proper Grinding Technique]]
|
|
181
|
+
- affects [[Flavor Extraction]]
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
The note embeds semantic content and links to other topics via simple Markdown formatting.
|
|
185
|
+
|
|
186
|
+
3. You see this file on your computer in real time in the current project directory (default `~/$HOME/basic-memory`).
|
|
187
|
+
|
|
188
|
+
- Realtime sync can be enabled via running `basic-memory sync --watch`
|
|
189
|
+
|
|
190
|
+
4. In a chat with the LLM, you can reference a topic:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
Look at `coffee-brewing-methods` for context about pour over coffee
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
The LLM can now build rich context from the knowledge graph. For example:
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
Following relation 'relates_to [[Coffee Bean Origins]]':
|
|
200
|
+
- Found information about Ethiopian Yirgacheffe
|
|
201
|
+
- Notes on Colombian beans' nutty profile
|
|
202
|
+
- Altitude effects on bean characteristics
|
|
203
|
+
|
|
204
|
+
Following relation 'requires [[Proper Grinding Technique]]':
|
|
205
|
+
- Burr vs. blade grinder comparisons
|
|
206
|
+
- Grind size recommendations for different methods
|
|
207
|
+
- Impact of consistent particle size on extraction
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Each related document can lead to more context, building a rich semantic understanding of your knowledge base.
|
|
211
|
+
|
|
212
|
+
This creates a two-way flow where:
|
|
213
|
+
|
|
214
|
+
- Humans write and edit Markdown files
|
|
215
|
+
- LLMs read and write through the MCP protocol
|
|
216
|
+
- Sync keeps everything consistent
|
|
217
|
+
- All knowledge stays in local files.
|
|
218
|
+
|
|
219
|
+
## Technical Implementation
|
|
220
|
+
|
|
221
|
+
Under the hood, Basic Memory:
|
|
222
|
+
|
|
223
|
+
1. Stores everything in Markdown files
|
|
224
|
+
2. Uses a SQLite database for searching and indexing
|
|
225
|
+
3. Extracts semantic meaning from simple Markdown patterns
|
|
226
|
+
- Files become `Entity` objects
|
|
227
|
+
- Each `Entity` can have `Observations`, or facts associated with it
|
|
228
|
+
- `Relations` connect entities together to form the knowledge graph
|
|
229
|
+
4. Maintains the local knowledge graph derived from the files
|
|
230
|
+
5. Provides bidirectional synchronization between files and the knowledge graph
|
|
231
|
+
6. Implements the Model Context Protocol (MCP) for AI integration
|
|
232
|
+
7. Exposes tools that let AI assistants traverse and manipulate the knowledge graph
|
|
233
|
+
8. Uses memory:// URLs to reference entities across tools and conversations
|
|
234
|
+
|
|
235
|
+
The file format is just Markdown with some simple markup:
|
|
236
|
+
|
|
237
|
+
Each Markdown file has:
|
|
238
|
+
|
|
239
|
+
### Frontmatter
|
|
240
|
+
|
|
241
|
+
```markdown
|
|
242
|
+
title: <Entity title>
|
|
243
|
+
type: <The type of Entity> (e.g. note)
|
|
244
|
+
permalink: <a uri slug>
|
|
245
|
+
|
|
246
|
+
- <optional metadata> (such as tags)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Observations
|
|
250
|
+
|
|
251
|
+
Observations are facts about a topic.
|
|
252
|
+
They can be added by creating a Markdown list with a special format that can reference a `category`, `tags` using a
|
|
253
|
+
"#" character, and an optional `context`.
|
|
254
|
+
|
|
255
|
+
Observation Markdown format:
|
|
256
|
+
|
|
257
|
+
```markdown
|
|
258
|
+
- [category] content #tag (optional context)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Examples of observations:
|
|
262
|
+
|
|
263
|
+
```markdown
|
|
264
|
+
- [method] Pour over extracts more floral notes than French press
|
|
265
|
+
- [tip] Grind size should be medium-fine for pour over #brewing
|
|
266
|
+
- [preference] Ethiopian beans have bright, fruity flavors (especially from Yirgacheffe)
|
|
267
|
+
- [fact] Lighter roasts generally contain more caffeine than dark roasts
|
|
268
|
+
- [experiment] Tried 1:15 coffee-to-water ratio with good results
|
|
269
|
+
- [resource] James Hoffman's V60 technique on YouTube is excellent
|
|
270
|
+
- [question] Does water temperature affect extraction of different compounds differently?
|
|
271
|
+
- [note] My favorite local shop uses a 30-second bloom time
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Relations
|
|
275
|
+
|
|
276
|
+
Relations are links to other topics. They define how entities connect in the knowledge graph.
|
|
277
|
+
|
|
278
|
+
Markdown format:
|
|
279
|
+
|
|
280
|
+
```markdown
|
|
281
|
+
- relation_type [[WikiLink]] (optional context)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Examples of relations:
|
|
285
|
+
|
|
286
|
+
```markdown
|
|
287
|
+
- pairs_well_with [[Chocolate Desserts]]
|
|
288
|
+
- grown_in [[Ethiopia]]
|
|
289
|
+
- contrasts_with [[Tea Brewing Methods]]
|
|
290
|
+
- requires [[Burr Grinder]]
|
|
291
|
+
- improves_with [[Fresh Beans]]
|
|
292
|
+
- relates_to [[Morning Routine]]
|
|
293
|
+
- inspired_by [[Japanese Coffee Culture]]
|
|
294
|
+
- documented_in [[Coffee Journal]]
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Using with Claude Desktop
|
|
298
|
+
|
|
299
|
+
Basic Memory is built using the MCP (Model Context Protocol) and works with the Claude desktop app (https://claude.ai/):
|
|
300
|
+
|
|
301
|
+
1. Configure Claude Desktop to use Basic Memory:
|
|
302
|
+
|
|
303
|
+
Edit your MCP configuration file (usually located at `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
304
|
+
for OS X):
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"mcpServers": {
|
|
309
|
+
"basic-memory": {
|
|
310
|
+
"command": "uvx",
|
|
311
|
+
"args": [
|
|
312
|
+
"basic-memory",
|
|
313
|
+
"mcp"
|
|
314
|
+
]
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
If you want to use a specific project (see [Multiple Projects](#multiple-projects) below), update your Claude Desktop
|
|
321
|
+
config:
|
|
322
|
+
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"mcpServers": {
|
|
326
|
+
"basic-memory": {
|
|
327
|
+
"command": "uvx",
|
|
328
|
+
"args": [
|
|
329
|
+
"basic-memory",
|
|
330
|
+
"mcp",
|
|
331
|
+
"--project",
|
|
332
|
+
"your-project-name"
|
|
333
|
+
]
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
2. Sync your knowledge:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# One-time sync of local knowledge updates
|
|
343
|
+
basic-memory sync
|
|
344
|
+
|
|
345
|
+
# Run realtime sync process (recommended)
|
|
346
|
+
basic-memory sync --watch
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
3. In Claude Desktop, the LLM can now use these tools:
|
|
350
|
+
|
|
351
|
+
```
|
|
352
|
+
write_note(title, content, folder, tags) - Create or update notes
|
|
353
|
+
read_note(identifier, page, page_size) - Read notes by title or permalink
|
|
354
|
+
build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
|
|
355
|
+
search(query, page, page_size) - Search across your knowledge base
|
|
356
|
+
recent_activity(type, depth, timeframe) - Find recently updated information
|
|
357
|
+
canvas(nodes, edges, title, folder) - Generate knowledge visualizations
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
5. Example prompts to try:
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
"Create a note about our project architecture decisions"
|
|
364
|
+
"Find information about JWT authentication in my notes"
|
|
365
|
+
"Create a canvas visualization of my project components"
|
|
366
|
+
"Read my notes on the authentication system"
|
|
367
|
+
"What have I been working on in the past week?"
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## Futher info
|
|
371
|
+
|
|
372
|
+
See the [Documentation](https://memory.basicmachines.co/) for more info, including:
|
|
373
|
+
|
|
374
|
+
- [Complete User Guide](https://memory.basicmachines.co/docs/user-guide)
|
|
375
|
+
- [CLI tools](https://memory.basicmachines.co/docs/cli-reference)
|
|
376
|
+
- [Managing multiple Projects](https://memory.basicmachines.co/docs/cli-reference#project)
|
|
377
|
+
- [Importing data from OpenAI/Claude Projects](https://memory.basicmachines.co/docs/cli-reference#import)
|
|
378
|
+
|
|
379
|
+
## License
|
|
380
|
+
|
|
381
|
+
AGPL-3.0
|
|
382
|
+
|
|
383
|
+
Contributions are welcome. See the [Contributing](CONTRIBUTING.md) guide for info about setting up the project locally
|
|
384
|
+
and submitting PRs.
|
|
385
|
+
|
|
386
|
+
Built with ♥️ by Basic Machines
|