You remember the idea, not the filename. Somewhere on disk there’s that
podcast about why AI won’t kill SaaS — but the file is called
ai-saas.html, the word “kill” appears nowhere in it, and your keyword
search returns zero results. This is the gap semantic search closes: it
matches meaning, so “software is only part of the cost” finds the file
even though you never typed those words into it.
Semantic search across local files means indexing the folders on your disk so you can query them by meaning: the files stay where they are, and meaning-based and exact keyword matching both run against the same local index.
Getting that for cloud documents is easy — every SaaS notes app sells it. Getting it for the files already sitting in your folders, without moving them into someone’s workspace, is the interesting problem.
What “semantic search over local files” actually involves
Three things have to happen to a folder before meaning-based search works:
- The files have to become text. Markdown and HTML are text already; PDFs, DOCX files, scans, and recordings are not. Something has to extract or transcribe them first — otherwise your “search” silently skips half your library.
- The text gets embedded — turned into vectors that represent meaning — and stored in a local index.
- Queries search both ways. Semantic matching is magic when you half-remember an idea; plain keyword matching is still better when you know the exact term, an error code, or a person’s name. You want both, not a religion.
How StashBase does it
StashBase is an open-source desktop app built around exactly this loop. You open a folder — the files stay where they are — and preparation runs in the background: PDFs and DOCX files gain extracted text and images gain OCR text, all computed on your machine. Recordings play but aren’t transcribed; a transcript you save as a text file is searchable like any other note.
- Keyword search works immediately, fully offline, no API key.
- Semantic search is opt-in: add your own OpenAI or OpenRouter key in Settings. To be precise about the data flow: your files never move, but the extracted text is sent to the provider whose key you added to compute vectors. If that trade-off doesn’t fit a folder, skip it — browsing, editing, and keyword search don’t depend on it.
- Results are files, not fragments. Every hit points back to the source file on disk — a page hint for a PDF — and opening the result opens your file, not a copy in someone’s cloud.
The index is derived state: rebuildable from your files at any time, never the other way around.
The part search engines don’t have: your agents
The same index is exposed over MCP, so Claude Desktop, Claude Code, Codex — any MCP client — can run the same hybrid search against the same library, scoped to the folders you’ve authorized and nothing else. Ask Claude for “my notes about local-first sync trade-offs” and it retrieves the actual files instead of guessing from filenames. If that’s the part you care about, the five ways to give Claude your local files comparison covers where an indexed library beats raw file access.
Where this shines, honestly
A meaning-based index earns its keep when the corpus is big, mixed-format, and revisited — research folders, a semester of lecture transcripts, a shelf of papers, a folder of PDFs and scans, years of notes. For a dozen tidy Markdown files, keyword search and a good memory are genuinely enough — start there, and add the key when your folder outgrows you.
If you want to try this before pointing it at your own work, we measured GitHub knowledge bases worth cloning — books, courses, skills, and reference material, all free to clone and far too large to read.
StashBase is open source (Apache-2.0) and runs on macOS, Windows, and Linux. Install it, open the folder you can never find anything in, and see what comes back.