This is an optional document that can be copy/pasted into the project knowledge for an LLM to provide a full description of how it can work with Basic Memory. It is provided as a helpful resource. The tools contain extensive usage description prompts with enable the LLM to understand them.You can download the contents of this file from GitHub
Quick Reference
Essential Tools
write_note()- Create/update notes (primary tool)read_note()- Read existing contentsearch_notes()- Find informationedit_note()- Modify existing notes incrementally (v0.13.0)move_note()- Organize files with database consistency (v0.13.0)
Project Management (v0.13.0)
list_projects()- Show available projectsswitch_project()- Change active projectget_current_project()- Current project info
Key Principles:
- Build connections - Rich knowledge graphs > isolated notes
- Ask permission - “Would you like me to record this?”
- Use exact titles - For accurate
[[WikiLinks]] - Leverage v0.13.0 - Edit incrementally, organize proactively, switch projects contextually
Overview
Basic Memory allows you and users to record context in local Markdown files, building a rich knowledge base through natural conversations. The system automatically creates a semantic knowledge graph from simple text patterns.- Local-First: All data is stored in plain text files on the user’s computer
- Real-Time: Users see content updates immediately
- Bi-Directional: Both you and users can read and edit notes
- Semantic: Simple patterns create a structured knowledge graph
- Persistent: Knowledge persists across sessions and conversations
The Importance of the Knowledge Graph
Basic Memory’s value comes from connections between notes, not just the notes themselves. When writing notes, your primary goal should be creating a rich, interconnected knowledge graph. When creating content, focus on:- Increasing Semantic Density: Add multiple observations and relations to each note
- Using Accurate References: Aim to reference existing entities by their exact titles
- Creating Forward References: Feel free to reference entities that don’t exist yet - Basic Memory will resolve these when they’re created later
- Creating Bidirectional Links: When appropriate, connect entities from both directions
- Using Meaningful Categories: Add semantic context with appropriate observation categories
- Choosing Precise Relations: Use specific relation types that convey meaning
Core Tools Reference
Essential Content Management
Writing knowledge (most important tool):Project Management (v0.13.0)
Search & Discovery
memory:// URLs Explained
Basic Memory uses a special URL format to reference entities in the knowledge graph:Semantic Markdown Format
Knowledge is encoded in standard markdown using simple patterns:- Observations
- Relations
Facts about an entity:
- Categories:
[idea],[decision],[question],[fact],[requirement],[technique],[recipe],[preference] - Relations:
relates_to,implements,requires,extends,part_of,pairs_with,inspired_by,originated_from
When to Record Context
Always consider recording context when
- Users make decisions or reach conclusions
- Important information emerges during conversation
- Multiple related topics are discussed
- The conversation contains information that might be useful later
- Plans, tasks, or action items are mentioned
- Identify valuable information in the conversation
- Ask the user: “Would you like me to record our discussion about [topic] in Basic Memory?”
- If they agree, use
write_noteto capture the information - If they decline, continue without recording
- Let the user know when information has been recorded: “I’ve saved our discussion about [topic] to Basic Memory.”
Understanding User Interactions
Users will interact with Basic Memory in patterns like:Creating knowledge
Creating knowledge
Referencing existing knowledge
Referencing existing knowledge
Finding information
Finding information
Editing existing notes (v0.13.0)
Editing existing notes (v0.13.0)
Project management (v0.13.0)
Project management (v0.13.0)
File organization (v0.13.0)
File organization (v0.13.0)
Key Things to Remember
Files are Truth
- All knowledge lives in local files on the user’s computer
- Users can edit files outside your interaction
- Changes need to be synced by the user (usually automatic)
- Always verify information is current with
recent_activity()
Building Context Effectively
- Start with specific entities
- Follow meaningful relations
- Check recent changes
- Build context incrementally
- Combine related information
Writing Knowledge Wisely
- Same title+folder overwrites existing notes
- Structure with clear headings and semantic markup
- Use tags for searchability (v0.13.0: frontmatter tags indexed)
- Keep files organized in logical folders
Leverage v0.13.0 Features
- Edit incrementally: Use
edit_note()for small changes vs rewriting - Switch projects: Change context when user mentions different work areas
- Organize proactively: Move old content to archive folders
- Cross-project operations: Create notes in specific projects while maintaining context
Common Knowledge Patterns
Capturing Decisions
Recording Project Structure
Technical Discussions
v0.13.0 Workflow Examples
Multi-Project Conversations
User: “I need to update my work documentation and also add a personal recipe note.” Workflow:list_projects()- Check available projectswrite_note(title="Sprint Planning", project="work-notes")- Work contentwrite_note(title="Weekend Recipes", project="personal")- Personal content
Incremental Note Building
User: “Add a troubleshooting section to my setup guide.” Workflow:edit_note(identifier="Setup Guide", operation="append", content="\n## Troubleshooting\n...")
edit_note(identifier="API Documentation", operation="replace_section", section="## Authentication")
Smart File Organization
User: “My notes are getting messy in the main folder.” Workflow:move_note("Old Meeting Notes", "archive/2024/old-meetings.md")move_note("Project Notes", "projects/client-work/notes.md")
Creating Effective Relations
When creating relations:- Reference existing entities by their exact title:
[[Exact Title]] - Create forward references to entities that don’t exist yet - they’ll be linked automatically when created
- Search first to find existing entities to reference
- Use meaningful relation types:
implements,requires,part_ofvs genericrelates_to
search_notes("travel")to find existing travel-related notes- Reference found entities:
- part_of [[Japan Travel Guide]] - Add forward references:
- located_in [[Tokyo]](even if Tokyo note doesn’t exist yet)
Common Issues & Solutions
Missing Content
Missing Content
- Try
search_notes()with broader terms ifread_note()fails - Use fuzzy matching: search for partial titles
Forward References
Forward References
- These are normal! Basic Memory links them automatically when target notes are created
- Inform users: “I’ve created forward references that will be linked when you create those notes”
Sync Issues
Sync Issues
- If information seems outdated, suggest
basic-memory sync - Use
recent_activity()to check if content is current
Strict Mode for Edit/Move Operations
Strict Mode for Edit/Move Operations
edit_note()andmove_note()require exact identifiers (no fuzzy matching for safety)- If identifier not found: use
search_notes()first to find the exact title/permalink - Error messages will guide you to find correct identifiers
Best Practices
1. Proactively Record Context
Link to related topics
Ask for permission first: “Would you like me to save our discussion about [topic]?”
2. Create a Rich Semantic Graph
Graph Building Guidelines
- Add meaningful observations: Include at least 3-5 categorized observations in each note
- Create deliberate relations: Connect each note to at least 2-3 related entities
- Use existing entities: Before creating a new relation, search for existing entities
- Verify wikilinks: When referencing
[[Entity]], use exact titles of existing notes - Check accuracy: Use
search_notes()orrecent_activity()to confirm entity titles - Use precise relation types: Choose specific relation types that convey meaning (e.g., “implements” instead of “relates_to”)
- Consider bidirectional relations: When appropriate, create inverse relations in both entities
3. Structure Content Thoughtfully
4. Navigate Knowledge Effectively
- Start with specific searches
- Follow relation paths
- Combine information from multiple sources
- Verify information is current
- Build a complete picture before responding
5. Help Users Maintain Their Knowledge
- Suggest organizing related topics
- Identify potential duplicates
- Recommend adding relations between topics
- Offer to create summaries of scattered information
- Suggest potential missing relations: “I notice this might relate to [topic], would you like me to add that connection?”
Built with ♥️ by Basic Machines

