All docs

Features & Workflows

A deeper look at the tools m-notes provides for managing context and workflows.

Note editor

The editor is built on CodeMirror 6 with full markdown syntax highlighting and optional vim keybindings. Three view modes are available:

  • Editor — full-screen markdown editing with syntax highlighting
  • Preview — rendered markdown output with proper formatting
  • Split — side-by-side editor and preview for real-time feedback

Autosave is enabled by default — your changes are persisted automatically after a short debounce. You can also save manually with Cmd+S.

Full-text and semantic search

m-notes supports three search modes, accessible from the search bar or command palette (Cmd+K):

  • Full-text — keyword matching using PostgreSQL full-text search. Fast and precise for exact terms
  • Semantic — meaning-based search using AI embeddings. Finds related content even when exact words differ
  • Hybrid — combines both modes with relevance scoring for the best overall results. This is the default

Wikilinks and backlinks

Link notes together with [[Note Title]] syntax. Wikilinks are resolved by title (case-insensitive) and rendered as clickable links in preview mode.

  • Clicking a wikilink navigates to the linked note, or creates it if it does not exist
  • The backlinks panel (below the editor) shows all notes that link to the current note
  • Use get_note_links via MCP to programmatically traverse links

Graph view

The graph view visualizes your notes as an interactive network. Nodes represent notes and edges represent wikilink connections between them.

  • Access the graph from the sidebar or via the graph icon in the toolbar
  • Click a node to navigate to that note. Hover to see the title and connection count
  • Zoom and pan to explore clusters of related notes

Knowledge graph

Beyond the wikilink-based graph view, m-notes maintains a structured knowledge graph with typed entities and relationships. This allows AI agents and advanced queries to traverse your knowledge base by meaning, not just by links.

  • Nodes represent entities (people, projects, concepts, technologies) extracted from your notes or created manually
  • Edges are typed relationships between nodes (e.g., “uses”, “depends on”, “authored by”)
  • Use query_graph via MCP to search the knowledge graph by node type, label, or relationship
  • graph_traverse walks the graph from a starting node, and find_path discovers connections between two nodes
  • populate_graph builds graph nodes and edges from an existing note

Entity extraction

m-notes can automatically extract structured entities (people, organizations, technologies, concepts) from your note content using AI.

  • Use extract_entities via MCP to analyze a note and discover entities
  • Extracted entities are added to the knowledge graph as nodes with typed relationships
  • Useful for building a structured knowledge base from unstructured notes

Importance scoring

Assign importance scores to notes to help prioritize information and surface the most critical knowledge first.

  • Use set_importance via MCP to set a note's importance level
  • Importance scores influence search ranking and knowledge retrieval
  • Combine with the knowledge decay feature to automatically reduce relevance of aging content

Tags system

Tags live in YAML frontmatter and provide cross-folder categorization:

  • Add tags in the frontmatter tags array or via the tag editor in the note panel
  • Tags are synced between frontmatter and the database automatically
  • Filter notes by tag in the sidebar, or search with tag filters in the search bar
  • Via MCP, use manage_tags to add/remove and search_by_tags to query

Version history

m-notes automatically creates snapshots of your notes so you can review and restore previous versions.

  • Open the version history panel from the note toolbar to see all saved snapshots
  • Preview any snapshot to see the content at that point in time
  • Restore a snapshot to revert the note to a previous state

Starred and pinned notes

Keep important notes within easy reach:

  • Star a note to add it to your starred section in the sidebar for quick access
  • Pin a note to keep it at the top of the note list in its folder
  • Toggle both from the note context menu (right-click) or the note toolbar

Command palette

Press Cmd+K (Ctrl+K on Windows/Linux) to open the command palette. From there you can:

  • Search for notes by title
  • Run quick actions (create note, toggle theme, open settings)
  • Navigate to any page in the app

See Keyboard Shortcuts for the full list of available shortcuts.

Smart folders

Smart folders are dynamic, rule-based folders that automatically collect notes matching specific criteria. Unlike regular folders, smart folders update in real time as your notes change.

  • Define filter rules based on tags, note type, content keywords, or date ranges
  • Smart folders appear in the sidebar alongside regular folders
  • Via MCP, use create_smart_folder to define rules and list_smart_folders to see all smart folders

Object types

Object types let you define custom schemas for your notes with typed properties. This turns notes into structured data objects while keeping the flexibility of markdown content.

  • Define object types with custom property fields (text, number, date, select, etc.)
  • Assign a type to any note to add structured metadata alongside its content
  • Via MCP, use list_object_types to see available types, set_note_type to assign a type to a note, and query_by_type to find notes of a specific type

Real-time updates

m-notes uses Server-Sent Events (SSE) to push changes to your browser in real time. When a note is created, updated, or deleted — whether by you, another device, or an AI agent via MCP — the UI updates immediately without requiring a manual refresh.

  • The sidebar note list, folder counts, and search results update live
  • If an AI agent creates or modifies notes via MCP, you see the changes instantly
  • No polling — updates are pushed as they happen via a persistent SSE connection

Chat with AI

Ask questions about your notes directly within m-notes using the built-in AI chat panel. The chat uses your knowledge base as context to provide grounded, relevant answers.

  • Open the chat panel from the toolbar to start a conversation
  • The AI searches your notes for relevant context before answering
  • Via MCP, agents can use ask_notes to query the knowledge base programmatically

Note templates

Templates let you define reusable starting points for new notes. Use them for recurring note types like meeting notes, project specs, or daily journals.

  • Create and manage templates from Settings > Templates
  • When creating a new note, choose a template to pre-fill the content and frontmatter
  • Templates support variables and default tags for consistent note structure

Session traces

When AI agents interact with your knowledge base via MCP, m-notes records session traces showing every tool call, its parameters, and results.

  • View session traces from the Sessions page to see what your AI agents have been doing
  • Each trace shows the sequence of tool calls, timing, and outcomes
  • Via MCP, use list_sessions and get_session_replay to review traces programmatically

Image upload

Add images to your notes with drag-and-drop or paste:

  • Drag an image file into the editor or paste from clipboard
  • Images are uploaded automatically and a markdown image link is inserted
  • Supported formats include PNG, JPEG, GIF, and WebP

Workspaces

Workspaces let you isolate different projects or contexts. Each workspace has its own set of notes, folders, and tags. Switch between workspaces from the sidebar or settings.

Learn more in the Workspaces guide.