🌐 English · 简体中文
Instant, whole‑disk semantic file search that runs 100% offline. Type what you mean — not the exact words — and find the file. Your files never leave your machine.
全盘语义搜索 · 秒懂你要找什么 · 纯本地、不联网、隐私零外泄
Windows · 100+ languages · CPU or GPU · no cloud, no account, no telemetry
⬇ Download Scry for Windows — unzip, double‑click the .exe. No Python, no install, 100% offline (~477 MB).
Unsigned build, so Windows may ask you to confirm — verify the SHA‑256 if you like.
You remember what a file was about. You don't remember its name, or which of five drives it's on, or whether you wrote "invoice" or "发票" or "billing". Keyword search fails you exactly there.
Scry searches by meaning. At its core is a purpose‑built multilingual semantic model — a compact 118‑million‑parameter embedding network that understands what text means across 100+ languages, not a bloated multi‑gigabyte local LLM bolted onto a search box. It re‑ranks whole‑disk candidates with that model in milliseconds, and — when you want the very best quality — it builds a complete deep semantic index of the folders you choose, embedding every passage so it can match your idea against files that share zero words with your query — even in a different language (search 中文, find English files, and vice versa).
A real semantic engine, not a keyword matcher with a marketing label — and its model is 235 MB, lightweight, and 100% on your machine.
It's the search Everything should have grown into: same instant, whole‑disk reflex — but it understands you.
| ⚡ ~8 ms to semantically search 100,000 files | comfortably interactive; the model is tiny, not an LLM |
| 🌐 ~0.1 s whole‑disk semantic results | zero pre‑indexing — rides the OS content index |
| 🪶 118M params · 235 MB multilingual model | vs the 4–8 GB local LLMs other "AI search" tools ship |
| 🌍 100+ languages · cross‑language | search 中文 → find English files: measured 1/10 → 10/10 vs an English‑only model |
| 🔁 ~35 s to index 100k files, ~0.1 s to re‑scan | incremental diff measured 235× faster than a full scan |
| 🎯 matches paraphrases with zero shared words | exact FAISS + BM25 hybrid, fp16 — half the RAM/disk |
| 🔒 0 bytes leave your machine | fully offline · binds 127.0.0.1 · no account, no telemetry |
| 📄 10 formats (txt·md·pdf·docx·xlsx·pptx·csv·html·rtf) · no Docker | single .exe · optional add‑on packs (DLC) |
| 🖼️ Reads images too — opt‑in OCR | screenshots / scans / photos searchable by meaning · Windows built‑in engine · no model download |
Speeds measured on a modern GPU (embedding) + FAISS; CPU stays well under the 100 ms interactive bar.
| Mode | What it does | Setup |
|---|---|---|
| 🌐 Whole‑disk Semantic | Search the content of every file on the machine by meaning. Rides the Windows Search content index, then re‑ranks the hits with a neural model. | None. Open and go. |
| ⚡ Filename | Instant whole‑disk filename search, the way you already know it. | None. |
| 🎯 Deep Semantic (Control Mode) | Point it at folders (or a whole drive) and it builds its own deep index — the highest quality, catches paraphrases with zero word overlap. First scan is full; after that it only touches what changed, and keeps itself up to date in the background. | One click per folder. |
New here? Pick the right mode for your first try. Whole‑disk Semantic is instant and needs zero setup, but it draws its candidates from the Windows index — so a pure paraphrase or cross‑language query with no shared words (exactly the "wow" demo) can come up empty there. For that, use Deep Semantic: add the folder once, let it index, and it matches meaning even when nothing overlaps. Rule of thumb — Whole‑disk = broad & instant; Deep = deepest meaning.
Plus: bilingual UI (中文 / English, one‑click toggle), keyboard‑driven (Enter to search, ↑/↓ to move, Enter to open), live‑highlighted snippets that show why a file matched, and a portable build that runs on any Windows PC with no Python install.
Optional add‑on packs (DLC). The base stays tiny and 100% offline; heavier extras (starting with a larger multilingual model) download only when you click, from this repo's releases, SHA‑256‑verified — see Add‑ons in the app.
Read text inside images (opt‑in OCR). Flip on OCR in Control mode and Scry reads the text in your screenshots, scans, and photos with the Windows built‑in OCR engine — so a screenshotted receipt or a scanned contract becomes searchable by meaning, in whatever languages your Windows has OCR packs for (English + 中文 out of the box on most PCs). It downloads no model (Windows provides the engine and language data), stays 100% offline, adds only ~4 MB to the app, and is off by default — turn it on and rescan. It's for finding, not perfect transcription: stylized or low‑res text can come out noisy, but semantic search shrugs that off.
The more you use Scry, the better it fits you: the files and folders you actually open float toward the top for similar searches, weighted toward your recent habits. It's a gentle re‑rank — a fresh query is never hijacked, and it never buries the more relevant result. And it's personalization with nothing to give up: it learns only from your own clicks, on your own disk, and never trains the model or sends anything anywhere. Toggle it off or hit Forget me whenever you like.
- Read‑only. Scry only ever reads your files to index them — it never modifies, moves, renames, or deletes them. Your originals are untouched.
- Zero outbound connections. The base app never talks to the network: it binds
127.0.0.1only (not even your LAN), bundles the model, and has no server to call — no accounts, no telemetry, no "anonymous usage stats." Unplug the network and everything still works. The only time Scry reaches the internet is if you click to download an optional add‑on pack, from this repo's GitHub Releases, SHA‑256‑verified. (Image OCR uses a local Windows API — it doesn't go online either.) - Fully local storage. Your index and settings live in
~/.localsearch_indexon your own disk; delete that folder to wipe everything. - Light footprint. CPU‑only (no GPU required); the bundled model is ~235 MB, and a 100k‑file deep index is ~154 MB on disk. Whole‑disk Semantic and Filename modes keep no index at all.
⬇ Download the latest release, unzip anywhere, and double‑click 本地语义搜索器.exe (or Run 运行.bat). A console window opens — keep it open; your browser opens the search page in a few seconds. That's it: any Windows 10/11 PC, fully offline, nothing to install.
Is it safe to run? Yes, and here's how to check rather than take my word for it:
- It's an unsigned build, so Windows SmartScreen may say "Windows protected your PC." Click More info → Run anyway.
- Antivirus false positives are expected. This is an unsigned, PyInstaller‑packaged app, and the PyInstaller bootloader is a byte pattern that some heuristic/ML antivirus engines flag on sight — regardless of what the code does. A VirusTotal scan will likely show a handful of ~70 engines flagging it (usually minor ones, rarely Microsoft Defender). That's normal for legit Python apps built this way and is not evidence of malware. Your real assurances: the whole thing is open source — read it, or build the
.exeyourself; the SHA‑256 above; and its read‑only, offline behavior. Want more certainty? Run it in Windows Sandbox. - Verify the download is exactly the file I published — the SHA‑256 of
Scry-v1.4-win64-portable.zipis:
967e132346c158eaeea8e07871184a39795e73c3d4e7e083a9521c5b9ee21162
Get-FileHash Scry-v1.4-win64-portable.zip -Algorithm SHA256 # should match the line above- It only reads your files and never phones home — see The privacy stance below.
Run from source (developers)
pip install -r requirements.txt
python -m localsearch.app # opens http://127.0.0.1:8731 in your browseror double‑click run.bat (Windows). Packaging recipe: localsearch/README.md.
your query ("the reservoir that hit a record low")
│
┌─────────────────────┼───────────────────────────┐
Whole‑disk Filename Deep Semantic
(Windows Search → (Everything‑style, (own FAISS index of
content index) MFT filename) your chosen folders)
│ │
└──────────────► neural re‑rank · Scry semantic model ◄─┘
│
ranked files + the exact matching sentence, highlighted
- Scry's semantic model: a compact 118M‑param multilingual embedding network (
multilingual-e5-small, 384‑dim, 100+ languages), purpose‑built to represent meaning — not a text‑generating LLM. Runs on CPU, no GPU required, and never trains on your files. - Retrieval: exact FAISS (fp16 scalar‑quantized — half the RAM/disk, still exhaustive) fused with a BM25 lexical arm; CJK‑aware chunking + bigram tokenizer so Chinese documents are fully searchable.
- Instant mode: queries the OS content index via the
Search.CollatorDSOprovider, then embeds and re‑ranks the candidates — global content search with zero pre‑indexing. - Robust by design: crash‑durable index writes (fsync + generation‑stamped, torn saves detected and quarantined), save‑on‑exit, live progress and search during indexing, and a single‑thread watcher that survives bulk file copies.
Scry is multilingual — one model covering 100+ languages, so you can search in one language and find files written in another (Chinese and English are both first‑class). Cross‑language retrieval is strong but not magic: a query can occasionally lose to a topically‑adjacent same‑language file. The promise isn't to beat a datacenter on a benchmark — it's cloud‑grade convenience with zero privacy cost.
localsearch/ the engine + local web UI (this is the product)
├─ engine.py orchestrator: scan → parse → chunk → embed → index → search
├─ index.py dual index: fp16 FAISS dense + BM25, crash‑durable persistence
├─ winsearch.py the "instant whole‑disk" breakthrough (Windows content index)
├─ search.py hybrid retrieval + best‑sentence snippets
├─ watcher.py debounced background re‑indexing
├─ personalize.py local, training‑free re‑rank from what you open
├─ app.py Flask backend (127.0.0.1 only) + JSON API
└─ web/index.html single‑page UI, bilingual, zero build step
demo_*.py runnable end‑to‑end examples (incl. demo_personalize.py)
run.bat double‑click launcher
PolyForm Noncommercial 1.0.0 — free to use, study, modify, and share for any noncommercial purpose (personal use, research, education, nonprofits). Commercial use is not granted by this license; reach out if you want to talk.
Scry stands on excellent open source: its embedding weights come from the open multilingual‑e5 model (intfloat, MIT), retrieval uses FAISS (MIT), and filename mode talks to Everything (es.exe, voidtools — download it yourself). These remain under their own terms.