Search Intelligence

IndexDesk

Index a tree once, then ask which of the hits are .go files under 100 KB.

Free right now — no account, no card

Get IndexDesk free Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design IndexDesk, 1 of 1
Screenshot IndexDesk running on Windows today

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

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