// the take
QMD is a local-first search engine for markdown notes, docs, and meeting transcripts, combining BM25 full-text search, vector embeddings, and LLM reranking, all running on-device through node-llama-cpp. It's aimed at developers who want a searchable personal/team knowledge base without sending content to a cloud API, and it ships a CLI, an SDK, and an MCP server so agents (Claude Code, Claude Desktop) can query it directly.
The RRF fusion strategy is actually reasoned through rather than just bolted on: a top-rank bonus protects exact matches from being diluted by expanded queries, and the reranker's weight increases for lower-ranked candidates instead of being applied uniformly. The HTTP MCP transport validates Origin and Host headers against DNS rebinding, which is a real threat model most localhost tools ignore entirely. The metadata filter is a genuinely typed AST (no implicit coercion, explicit case-insensitive text operators, set semantics for array fields) rather than a half-done query-string hack. The trust model for project-local `.qmd/index.yml` is notable: it gates update-hook commands, out-of-project paths, and custom model URIs behind explicit approval, and silently skips them for non-interactive callers (agents, CI) instead of running an untrusted repo's shell command on checkout.
Everything runs through local GGUF models, so a cold start pays for ~2GB of downloads and every hybrid query costs two extra LLM calls (query expansion, then reranking) — CPU-only machines will feel this, and the embedding/reranker models get unloaded after 5 minutes idle with a recreate penalty on the next request. Query quality depends on a custom fine-tuned 1.7B expansion model hosted on the maintainer's own HuggingFace repo; if that artifact regresses or disappears, hybrid search degrades with it and there's no fallback path described. The HTTP MCP server is explicitly unauthenticated beyond origin/host checks — multi-user or networked use means building your own auth layer, which the docs just punt on. It's a single-maintainer project with a large surface area to keep up (CLI, SDK, MCP stdio and HTTP, a fine-tuning pipeline, three model roles), which is a lot of moving parts for one person to carry long-term.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →