explaingit

tobi/qmd

📈 Trending25,098TypeScriptAudience · developerComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

A local-first search engine for your Markdown notes that uses keyword matching, semantic search, and AI re-ranking, all on your computer, no cloud.

Mindmap

mindmap
  root((repo))
    What it does
      Search Markdown files
      Three search methods
      Local AI re-ranking
    How it works
      BM25 keyword search
      Vector semantic search
      LLM result ranking
    Setup
      Organize collections
      Generate embeddings
      Query from CLI
    Use cases
      Personal knowledge base
      Meeting notes search
      Documentation lookup
    Tech stack
      TypeScript Node.js
      GGUF models
      MCP protocol

Things people build with this

USE CASE 1

Search through hundreds of personal notes and meeting transcripts without scrolling through files manually.

USE CASE 2

Build a private knowledge base that understands meaning, searching 'deploy' finds docs about 'shipping to production'.

USE CASE 3

Let Claude or other AI assistants look up relevant documents during conversations using the MCP server.

Tech stack

TypeScriptNode.jsBunGGUFMCP

Getting it running

Difficulty · moderate Time to first run · 30min

Requires downloading GGUF model files which can be large and slow depending on internet speed.

Use freely for any purpose including commercial, as long as you keep the copyright notice.

In plain English

QMD (Query Markup Documents) is a command-line search engine that runs entirely on your own computer and lets you search through your personal collection of Markdown files, notes, meeting transcripts, documentation, knowledge bases, or any text files. The core problem it solves is that when you have hundreds of notes scattered across folders, finding what you're looking for by scrolling through files becomes impractical. It combines three different search techniques to give the most relevant results. BM25 is classic keyword matching, similar to how search engines worked before AI, fast and precise for exact phrases. Vector search is semantic search, meaning it understands meaning rather than just matching words, so searching "how to deploy" also finds documents about "shipping to production." LLM re-ranking uses a language model to reorder the top results by relevance after the initial search. All three run locally using GGUF model files (a compact format for running AI models on a laptop), so none of your data ever leaves your machine. You organize your files into named collections (like "notes" or "meetings"), generate search embeddings once, and then query from the command line. QMD is also designed to integrate with AI coding assistants and agents, it exposes an MCP (Model Context Protocol) server so tools like Claude can use it to look up relevant documents during conversations. A developer, researcher, or knowledge worker who takes many notes and wants a fast, private, AI-enhanced way to search them would use QMD. It is written in TypeScript and runs on Node.js or Bun.

Copy-paste prompts

Prompt 1
How do I set up QMD to search my Markdown notes collection and what commands do I run to query it?
Prompt 2
Show me how to integrate QMD with Claude so it can search my notes while we chat.
Prompt 3
How does QMD's vector search work and why would I use it instead of just keyword search?
Prompt 4
I have 500 notes in different folders, how do I organize them into collections and generate embeddings for QMD?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.