A local-first Markdown memory workspace that lets AI agents store, search, and consolidate long-term knowledge as editable files.
tobi/qmd
A local, on-device CLI search engine for markdown notes, meeting transcripts and docs, combining BM25, vector search and LLM reranking.
- Stars
- 30,493
- Forks
- 1,916
- Open issues
- 231
- Last commit
- 5 days ago
What is it?
QMD (Query Markup Documents) is an on-device search engine for personal and team knowledge: markdown notes, meeting transcripts, documentation and knowledge bases. You organize sources into named collections, and search them by keyword or natural language from the command line, a TypeScript SDK, or an MCP server.
QMD combines BM25 full-text search, vector semantic search and LLM re-ranking. Queries can be expanded into typed sub-queries (lexical, vector and HyDE), results are fused with Reciprocal Rank Fusion, and the top candidates are reranked by a local model. All models run locally through node-llama-cpp using GGUF files that are downloaded on first use.
QMD exposes JSON, CSV, Markdown and file-list output, an HTTP endpoint, and metadata filtering driven by frontmatter. Users can attach descriptive context to collections and paths, which is returned with matching results to help agents choose documents. Node.js 22+ or Bun is required.
Key features
- 01Hybrid search combining BM25 keyword matching, vector similarity and LLM reranking
- 02Runs fully locally using GGUF models through node-llama-cpp
- 03Named collections with path-based context that is returned with results
- 04MCP server, HTTP endpoints and a TypeScript SDK for integration
- 05JSON and file-list output designed for agent workflows
- 06Metadata filtering using typed YAML frontmatter, and optional AST-aware chunking for code files
Use cases
- Searching a personal Obsidian-style notes folder by meaning rather than exact words
- Looking up past meeting transcripts and decisions across a team's shared folders
- Giving an AI agent a local retrieval tool over project documentation
- Indexing a codebase's docs and source files for semantic search
Quick start
- 1
Install globally with npm
npm install -g @tobilu/qmd - 2
Add a collection of your notes
qmd collection add ~/notes --name notes - 3
Generate embeddings for semantic search
qmd embed - 4
Run a hybrid search with reranking
qmd query "quarterly planning process"
Things to know
- Semantic search and reranking rely on local GGUF models via node-llama-cpp, which need disk space and memory.
- Setup requires adding collections, context and generating embeddings before search gives best results.
Topics
FAQ
- What is qmd?
- A local, on-device CLI search engine for markdown notes, meeting transcripts and docs, combining BM25, vector search and LLM reranking. QMD (Query Markup Documents) is an on-device search engine for personal and team knowledge: markdown notes, meeting transcripts, documentation and knowledge bases. You organize sources into named collections, and search them by keyword or natural language from the command line, a TypeScript SDK, or an MCP server.
- Is qmd free to use? What license does it have?
- qmd is open source under the MIT license. Check the license terms before using it in commercial products.
- Is qmd still maintained?
- Actively maintained. The last commit to qmd was on Oct 15, 2026.
- What can I use qmd for?
- Searching a personal Obsidian-style notes folder by meaning rather than exact words Looking up past meeting transcripts and decisions across a team's shared folders Giving an AI agent a local retrieval tool over project documentation Indexing a codebase's docs and source files for semantic search
- How do I install qmd?
- Install globally with npm: npm install -g @tobilu/qmd Add a collection of your notes: qmd collection add ~/notes --name notes Generate embeddings for semantic search: qmd embed Run a hybrid search with reranking: qmd query "quarterly planning process"
- Where can I get qmd?
- The source code and installation instructions are on GitHub: https://github.com/tobi/qmd
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Local AI search engine that auto-indexes any folder (code, docs, logs, PDFs) and speaks the Elasticsearch API, built in Rust.
Persistent memory for coding agents that captures session activity, compresses it with AI, and injects relevant context into future sessions.
Self-hosted AI chat and knowledge platform that indexes data from 50+ connected apps and works with most LLM providers.
Memory and context engine for AI apps and assistants, offering a single API for persistent memory, RAG, user profiles and connectors.
A local-first, Markdown-native long-term memory layer for AI agents, storing memories as editable files with SQLite and LanceDB indexes.