IndexDesk
Index a tree once, then ask which of the hits are .go files under 100 KB.
Free right now — no account, no card
Preview
1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.
Free while we’re in preview
Get IndexDesk
Index a tree once, then ask which of the hits are .go files under 100 KB.
The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.
One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.
Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.
- One file — no installer
- Runs on your machine, offline
- Source code published below
Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, IndexDesk is included in every plan along with the rest of the range.
The facets are the reason it exists
Plenty of things grep a directory. IndexDesk stores each document’s extension, size and modification time next to the term postings, so once the index exists you can narrow a text query by metadata and ask for counts before drilling in. How many hits are .md. How many land in each size band. How many haven’t been touched in a year.
Build once, query from anywhere
indexdesk build ~/projects --index projects.json walks the tree and writes a single JSON file. query and facets open it read-only and never modify it, so as many shells and scripts as you like can hit it at once. Move it, copy it, diff it, delete it. It’s just a file.
Files over --max-size, known binary extensions, anything with NUL bytes in its first 8 KiB, and .git are skipped. Everything else goes in, dotfiles included.
What it is not
There is no relevance ranking of any kind, no TF-IDF and no scoring. A document matches or it doesn’t, and results come out in alphabetical path order. No phrase search, no OR, no wildcards, no stemming. PDFs and DOCX files are skipped rather than parsed. And there’s no incremental update: when files change, you rebuild.
Reading on the job itself
- How to search your files by what is inside them Two approaches, and the right one depends on how often you will search. Reading the disk each time is alway...
Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams
A working CLI prototype of the faceted-search engine: a persistent inverted index that also stores per-document extension, size and mtime, so queries can be narrowed by facet and the tool can report the shape of a result set before you drill in. Verified that facet filters genuinely subset results and that querying never rewrites the index. PDF/DOCX extraction and phrase queries are on the roadmap.
Naming status
Working name only — brand verdict **CAUTION** (Medium). Collision: IndexDesk. Possible with formal clearance; don't depend on exact .com.
What it draws on
Existing paid software whose best ideas shaped this program: dtSearch Desktop, FileLocator Pro, Listary Pro, Copernic Desktop Search.
Command line
There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.
indexdesk 1.0.0 — faceted full-text search for local file trees
USAGE
indexdesk build <dir> --index <file> [--max-size 5MB] [--verbose]
indexdesk query <terms...> --index <file> [filters] [--facets] [--json]
indexdesk facets --index <file> [--json]
indexdesk help | --help | -h
indexdesk version
BUILD
Walks <dir> recursively, tokenizes text files (split on non-alphanumerics,
lowercased) into an inverted index, and records the facets of every
document: extension, size and modification time.
--max-size N skip files larger than N (default 5MB). Accepts 900, 64K,
5MB, 2GiB. Binary files are detected and skipped.
--verbose list each skipped file and why.
QUERY
Matches documents containing ALL terms (AND), then applies facet filters.
--ext .go,.md keep only these extensions ("none" = no extension)
--min-size N keep only documents at least N bytes
--max-size N keep only documents at most N bytes
--newer-than 7d keep only documents modified within the window
(30m, 12h, 7d, 2w)
--facets print per-extension / per-size / per-age counts
for the result set
--limit N print at most N results (facet counts still cover all)
--json machine readable output
Exit 0 with a "no matches" message when nothing matches.
FACETS
Prints the facet distribution of the whole index without querying.
NOTES
Flags may appear before or after positional arguments.
The index is written only by build; query and facets open it read-only.
Recorded from the shipped binary, not written by hand.
Source
Every file the program is built from:
console.go · console_test.go · guided.go · main.go
SHA-256 checksums · build instructions & scope notes · full build plan