xerj vs qmd

Two of the top projects in RAG and search, side by side: who leads on each score part and who each one suits, then setup, license, activity and what each review found.

11st of 14 in RAG and search

xerj

Elasticsearch-compatible search server that auto-indexes folders for coding agents

22nd of 14 in RAG and search

qmd

Local hybrid search over markdown notes and docs, with CLI and MCP server

Verdict

xerj ranks higher, 87 to 80. Of the 4 score parts we measure for both, xerj leads on 1, qmd on 2 and 1 is even.

  • Adoptionqmd leads by 7 points, 89 to 82.
  • FreshnessEven at 100.
  • Maintenancexerj leads by 34 points, 97 to 63: a wide gap.
  • Agent-readyqmd leads by 10 points, 40 to 30.

Pick xerj if you are

Developers giving coding agents local code and document search or memory

  • Single static binary, no JVM; prebuilt for Linux, macOS and Windows on x86-64 and arm64
  • Works with existing Elasticsearch clients pointed at localhost:9200; 1366/1369 ES-YAML conformance tests

Pick qmd if you are

Developers who want local search over notes and docs for agents

  • 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
xerj vs qmd: score parts and facts
What we comparexerjqmd
Score parts, out of 100
Adoption82, widely used89, widely used
Freshness100, active100, active
Maintenance97, healthy63, fair
Agent-ready30, minimal40, minimal
Facts from GitHub and the README
Stars18.6k30.8k
LicenseApache-2.0 (permissive)MIT (permissive)
Last commitNov 2026Oct 2026
Last releaseOct 2026Aug 2026
LanguageRustTypeScript
DockerNoNo
GPUNot neededOptional
arm64 or Apple SiliconMentionedNot stated

xerj

XERJ is a single Rust binary that speaks the Elasticsearch API. `xerj autoindex <folder>` infers datasets from code, docs, logs, PDFs, SQLite and CSV, and creates one typed index per dataset, with tree-sitter symbols and line numbers for code. It supports BM25, kNN and hybrid search, a `/_memory` agent memory API, and a `xerj mcp` stdio server exposing 13 tools. Its main pitch is cutting agent token use by retrieving passages instead of reading files.

Who it is for: Developers giving coding agents local code and document search or memory

Strengths

  • Single static binary, no JVM; prebuilt for Linux, macOS and Windows on x86-64 and arm64
  • Works with existing Elasticsearch clients pointed at localhost:9200; 1366/1369 ES-YAML conformance tests
  • Autoindex needs no schema; handles code, PDF, DOCX, XLSX, SQLite, mail and logs
  • Default lexical embedder runs offline; air-gapped deployment recipe is documented

Weaknesses

  • Token savings come from the project's own 16-run study; neutral to negative on popular libraries
  • Default embedder is lexical feature-hashing; neural mode is opt-in and downloads about 90 MB
  • `--insecure` quick start disables TLS and auth; every caller becomes a superuser
  • Optional Jev rerank sends result text to TypeSafe's servers
  • Rust, lexical embedder (default, offline), neural embedder (opt-in, ~90 MB download), Jev reranker (optional, external service)

qmd

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
  • TypeScript, GGUF, qwen3-reranker
  • Needs Node.js or Bun, node-llama-cpp, SQLite

More in RAG and search

Building with these?

We help teams pick an open-source AI stack and run it in production. Client work never changes a rank.