22nd of 14 in RAG and search
qmd
Local hybrid search over markdown notes and docs, with CLI and MCP server
- Stars
- 30.8k
- License
- MIT
- Last commit
- Oct 2026
- Last release
- Aug 2026
- Language
- TypeScript
20,444 on 10 Apr 202630,792 on 30 Oct 2026
From GitHub's daily star counts.
Checked on GitHub.
Overview
QMD indexes markdown notes, transcripts and docs into a SQLite store and searches them with BM25 (FTS5), vector search and LLM reranking. Models run locally as GGUF through node-llama-cpp. It ships a CLI with JSON and file-list output for agents, an MCP server over stdio or HTTP (default port 8181), and a Node/Bun SDK.
Who it is for: Developers who want local search over notes and docs for agents
Strengths
- Hybrid pipeline: query expansion, BM25 plus vector search, RRF fusion, then LLM reranking
- Runs on-device with GGUF models via node-llama-cpp; no hosted API needed
- CLI, MCP server (stdio or HTTP) and TypeScript SDK available
- HTTP server rejects non-loopback Origin and Host headers to block DNS rebinding
Weaknesses
- HTTP endpoints are unauthenticated; off-host use needs your own auth in front
- Built around markdown and text; other document formats are not mentioned
- Embedding step must run before semantic search works
What it needs
- TypeScript, GGUF, qwen3-reranker
- Needs Node.js or Bun, node-llama-cpp, SQLite
Quick answers
Is qmd open source?
Yes. Its code is on GitHub under the MIT license.
Head to head
Also in RAG and search
See all 14| Rank | Project | Score |
|---|---|---|
| 1 | xerjElasticsearch-compatible search server that auto-indexes folders for coding agents | 87 out of 100 |
| 3 | llm-appYAML-configured RAG server that keeps a vector database synced with a document folder | 74 out of 100 |
| #4 | azure-search-openai-demoAzure RAG chat reference on AI Search and Azure OpenAI | 74 out of 100 |
| #5 | chat-langchainLangChain docs Q&A agent with a Next.js chat frontend | 65 out of 100 |
| #6 | rag-postgres-openai-pythonRAG over Postgres table rows with hybrid search and SQL filters | 55 out of 100 |