Point XERJ at a folder — source code, a stack of PDFs, a wiki of Markdown — and it indexes everything locally in seconds. Then your team, or your agent, asks in plain English and gets the exact files back. No model runs to search, so nothing leaves the machine and not one token is spent finding the answer. Three real runs below, same one command each time: xerj autoindex <folder>.
A new engineer, or a coding agent, needs the line that reads the API key. Instead of grepping guesses or pulling the whole tree into a model's context, ask for it.
2.1 MB of Rust · reading it all into an agent to find the answer costs ~541k tokens; the query costs none.
A folder of court PDFs lands on your desk. Somewhere in it is the founder who threatened to walk off with the source code. XERJ reads the PDFs — not their filenames — and ranks the ones that match the accusation.
Sample filings with fictional parties, for illustration. The PDF text is extracted and indexed locally; no document is uploaded and no model is called to search.
Your team's second brain is hundreds of Markdown notes — feature requests, customer threads, release logs. "When did a customer first ask for this, and how long did it take us to ship?" is buried across three of them. XERJ finds them.
Sample product knowledge base, for illustration. Same one command, a different kind of folder.
xerj autoindex <folder> sniffs each file by content, extracts text from code, PDFs, and Markdown, and indexes it — no schema, no pipeline, no config.
Search is BM25 + semantic retrieval over a local index, the same engine that speaks the _search API. Deterministic, private, and free — zero tokens to find an answer.
Hidden files like .env and .ssh are skipped by construction, not by a rule you have to remember. Nothing you index leaves the machine.