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.
xerj
Elasticsearch-compatible search server that auto-indexes folders for coding agents
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
| What we compare | xerj | qmd |
|---|---|---|
| Score parts, out of 100 | ||
| Adoption | 82, widely used | 89, widely used |
| Freshness | 100, active | 100, active |
| Maintenance | 97, healthy | 63, fair |
| Agent-ready | 30, minimal | 40, minimal |
| Facts from GitHub and the README | ||
| Stars | 18.6k | 30.8k |
| License | Apache-2.0 (permissive) | MIT (permissive) |
| Last commit | Nov 2026 | Oct 2026 |
| Last release | Oct 2026 | Aug 2026 |
| Language | Rust | TypeScript |
| Docker | No | No |
| GPU | Not needed | Optional |
| arm64 or Apple Silicon | Mentioned | Not 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.