Signed-off-by: phernandez <paul@basicmachines.co>
8.6 KiB
title, type, permalink
| title | type | permalink |
|---|---|---|
| Technical Information | note | docs/technical-information |
Technical Information
This document provides technical details about Basic Memory's implementation, licensing, and integration with the Model Context Protocol (MCP).
Architecture
Basic Memory consists of:
- Core Knowledge Engine: Parses and indexes Markdown files
- SQLite Database: Provides fast querying and search
- MCP Server: Implements the Model Context Protocol
- CLI Tools: Command-line utilities for management
- Sync Service: Monitors file changes and updates the database
The system follows a file-first architecture where all knowledge is represented in standard Markdown files and the database serves as a secondary index.
Model Context Protocol (MCP)
Basic Memory implements the Model Context Protocol, an open standard for enabling AI models to access external tools:
- Standardized Interface: Common protocol for tool integration
- Tool Registration: Basic Memory registers as a tool provider
- Asynchronous Communication: Enables efficient interaction with AI models
- Standardized Schema: Structured data exchange format
Integration with Claude Desktop uses the MCP to grant Claude access to your knowledge base through a set of specialized tools that search, read, and write knowledge.
Licensing
Basic Memory is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0):
- Free Software: You can use, study, share, and modify the software
- Copyleft: Derivative works must be distributed under the same license
- Network Use: Network users must be able to receive the source code
- Commercial Use: Allowed, subject to license requirements
The AGPL license ensures Basic Memory remains open source while protecting against proprietary forks.
Source Code
Basic Memory is developed as an open-source project:
- GitHub Repository: https://github.com/basicmachines-co/basic-memory
- Issue Tracker: Report bugs and request features on GitHub
- Contributions: Pull requests are welcome following the contributing guidelines
- Documentation: Source for this documentation is also available in the repository
Data Storage and Privacy
Basic Memory is designed with privacy as a core principle:
- Local-First: All data remains on your local machine
- No Cloud Dependency: No remote servers or accounts required
- Telemetry: Optional and disabled by default
- Standard Formats: All data is stored in standard file formats you control
Implementation Details
Knowledge in Basic Memory is organized as a semantic graph:
- Entities - Distinct concepts represented by Markdown documents
- Observations - Categorized facts and information about entities
- Relations - Connections between entities that form the knowledge graph
This structure emerges from simple text patterns in standard Markdown:
---
title: Coffee Brewing Methods
type: note
permalink: coffee/coffee-brewing-methods
tags:
- '#coffee'
- '#brewing'
- '#methods'
- '#demo'
---
# Coffee Brewing Methods
An exploration of different coffee brewing techniques, their characteristics, and how they affect flavor extraction.
## Overview
Coffee brewing is both an art and a science. Different brewing methods extract different compounds from coffee beans,
resulting in unique flavor profiles, body, and mouthfeel. The key variables in any brewing method are:
- Grind size
- Water temperature
- Brew time
- Coffee-to-water ratio
- Agitation/turbulence
## Observations
- [principle] Coffee extraction follows a predictable pattern: acids extract first, then sugars, then bitter compounds
#extraction
- [method] Pour over methods generally produce cleaner, brighter cups with more distinct flavor notes #clarity
## Relations
- requires [[Proper Grinding Technique]]
- affects [[Flavor Extraction]]
Becomes
{
"entities": [
{
"permalink": "coffee/coffee-brewing-methods",
"title": "Coffee Brewing Methods",
"file_path": "Coffee Notes/Coffee Brewing Methods.md",
"entity_type": "note",
"entity_metadata": {
"title": "Coffee Brewing Methods",
"type": "note",
"permalink": "coffee/coffee-brewing-methods",
"tags": "['#coffee', '#brewing', '#methods', '#demo']"
},
"checksum": "bfa32a0f23fa124b53f0694c344d2788b0ce50bd090b55b6d738401d2a349e4c",
"content_type": "text/markdown",
"observations": [
{
"category": "principle",
"content": "Coffee extraction follows a predictable pattern: acids extract first, then sugars, then bitter compounds #extraction",
"tags": [
"extraction"
],
"permalink": "coffee/coffee-brewing-methods/observations/principle/coffee-extraction-follows-a-predictable-pattern-acids-extract-first-then-sugars-then-bitter-compounds-extraction"
},
{
"category": "method",
"content": "Pour over methods generally produce cleaner, brighter cups with more distinct flavor notes #clarity",
"tags": [
"clarity"
],
"permalink": "coffee/coffee-brewing-methods/observations/method/pour-over-methods-generally-produce-cleaner-brighter-cups-with-more-distinct-flavor-notes-clarity"
}
],
"relations": [
{
"from_id": "coffee/coffee-bean-origins",
"to_id": "coffee/coffee-brewing-methods",
"relation_type": "pairs_with",
"permalink": "coffee/coffee-bean-origins/pairs-with/coffee/coffee-brewing-methods",
"to_name": "Coffee Brewing Methods"
},
{
"from_id": "coffee/flavor-extraction",
"to_id": "coffee/coffee-brewing-methods",
"relation_type": "affected_by",
"permalink": "coffee/flavor-extraction/affected-by/coffee/coffee-brewing-methods",
"to_name": "Coffee Brewing Methods"
}
],
"created_at": "2025-03-06T14:01:23.445071",
"updated_at": "2025-03-06T13:34:48.563606"
}
]
}
Basic Memory understands how to build context via its semantic graph.
Entity Model
Basic Memory's core data model consists of:
- Entities: Documents in your knowledge base
- Observations: Facts or statements about entities
- Relations: Connections between entities
- Tags: Additional categorization for entities and observations
The system parses Markdown files to extract this structured information while preserving the human-readable format.
Files as Source of Truth
Plain Markdown files store all knowledge, making it accessible with any text editor and easy to version with git.
flowchart TD
User((User)) <--> |Conversation| Claude["Claude or other LLM"]
Claude <-->|API Calls| BMCP["Basic Memory MCP Server"]
subgraph "Local Storage"
KnowledgeFiles["Markdown Files - Source of Truth"]
KnowledgeIndex[(Knowledge Graph SQLite Index)]
end
BMCP <-->|"write_note() read_note()"| KnowledgeFiles
BMCP <-->|"search() build_context()"| KnowledgeIndex
KnowledgeFiles <-.->|Sync Process| KnowledgeIndex
KnowledgeFiles <-->|Direct Editing| Editors((Text Editors & Git))
User -.->|"Complete control, Privacy preserved"| KnowledgeFiles
class Claude primary
class BMCP secondary
class KnowledgeFiles tertiary
class KnowledgeIndex quaternary
class User,Editors user`;
Sqlite Database
A local SQLite database maintains the knowledge graph topology for fast queries and semantic traversal without cloud dependencies. It contains:
- db tables for the knowledge graph schema
- a search index table enabling full text search across the knowledge base
Sync Process
The sync process:
- Detects changes to files in the knowledge directory
- Parses modified files to extract structured data
- Updates the SQLite database with changes
- Resolves forward references when new entities are created
- Updates the search index for fast querying
Search Engine
The search functionality:
- Uses a combination of full-text search and semantic matching
- Indexes observations, relations, and content
- Supports wildcards and pattern matching in memory:// URLs
- Traverses the knowledge graph to follow relationships
- Ranks results by relevance to the query
Relations
- relates_to Welcome to Basic memory (Overview)
- relates_to CLI Reference (Command line tools)
- implements Knowledge Format (File structure and format)