Content
# Tool List
**Millisecond file search for Windows, built for humans and AI agents.**
- Everything-class speed without admin rights (parallel walker, no MFT reading)
- Compact arena index: ~60 MB per million files, queries < 20 ms
- Full query language: substring / glob / regex / size / date / kind / path / `content:` grep
- Quick Look-style preview (Space), keyboard-first UI
- Same engine, three faces: **GUI** (Tauri 2) + **CLI** (`pts`, `--json` for scripts) + **MCP server** (`pts mcp`) so agents like Claude Code query your disk in one tool call instead of burning tokens on recursive `ls`
## Download
[**Releases Page**](https://github.com/GG-hmg/search-everything/releases/latest)
Directly download the exe without installation, admin rights, or runtime dependencies:
- `pts-app.exe` (about 6MB) — Desktop application, double-click to use, automatically builds index on first launch
- `pts.exe` (about 2MB) — Command line + MCP server
> If you encounter a Windows SmartScreen prompt on the first run, click "More information → Run anyway" (personal project, no code signing).
## Why It's Worth Trying
| | Actual Data |
|---|---|
| 🔍 Search latency | Million-level file index, query **< 20ms** |
| 🧠 Memory usage | About **60 MB** per million files, GUI overall resident **~36 MB** |
| ⚡ Indexing speed | Parallel scanning, 24,000 files **0.1 seconds** (NVMe full disk about 1-2 minutes, only for the first time) |
| 🔐 Permissions | **No admin rights**, ordinary users run directly (do not read MFT, do not install services) |
| 📦 Volume | Single exe, about 5 MB, no runtime dependencies (UI uses Windows built-in WebView2) |
Index persists to disk, starts in seconds; real-time file system monitoring (new / delete / rename automatically updated), no need to repeatedly scan.
## Features
- **Instant Search** — Input and search, virtual list smoothly scrolls through 100,000 results
- **Query Language** — Substring, wildcard, regex, size, date, type, path, exclude, all combinable
- **Content Search** — `content:TODO` directly searches file content (automatically skips binary)
- **Quick Preview** — Press `Space` for Quick Look-style preview of pictures and text, no need to open the application
- **Keyboard Priority** — `↑↓` select, `Enter` open, `Ctrl+Enter` show in file explorer, `Ctrl+C` copy path
- **One-Click Positioning** — Mouse hover over the result line, a positioning button appears at the end, click (or right-click the line) to open the file location in file explorer
- **Filter Chips** — One-click filter documents / pictures / videos / audio / code / archives
- **Three Forms** — Same index engine: GUI desktop application + `pts` command line + MCP server
## Query Language
Conditions separated by spaces are in **AND** relationship:
| Syntax | Meaning |
|---|---|
| `report` | File name contains report (case-insensitive) |
| `*.pdf` `foo?.txt` | Wildcard |
| `re:^log\d+` | Regular expression |
| `-draft` | Exclude: file name does not contain draft |
| `ext:pdf,docx` | Extension filter |
| `size:>10mb` `size:1mb..100mb` | Size filter |
| `modified:today` `modified:>2024-01-01` | Modification date (supports today/week/month/year/interval) |
| `kind:file` / `kind:folder` | Only files / only folders |
| `path:src` `-path:node_modules` | Path contains / excludes |
| `content:keyword` | File content contains |
| `hidden:yes` | Includes hidden files |
| `"two words"` | Quotes preserve spaces |
**Combination Example**: `invoice ext:pdf modified:month size:>100kb` — Modified in the last month, larger than 100KB, PDF invoices.
## Usage
### 1. Desktop Application
Run `pts-app.exe`. Automatically indexes all local disks on the first launch (can be set to specify directories in settings).
### 2. Command Line
```bash
pts invoice ext:pdf modified:month # Human-readable output
pts q "*.rs path:src" --json --limit 20 # JSON output, pipeline-friendly
pts grep "fn main" ext:rs # Content search, with line numbers
pts index status # Index statistics
pts index rebuild # Full rebuild
```
### 3. AI Agent (MCP)
`pts mcp` is a standard MCP stdio server, index resident in memory, file changes synchronized in real-time, each query is millisecond-level.
**Claude Code One-Line Access**:
```bash
claude mcp add pts -- C:\path\to\pts.exe mcp
```
**Other MCP Clients (Cursor, Cline, etc.)**:
```json
{
"mcpServers": {
"pts": { "command": "C:\\path\\to\\pts.exe", "args": ["mcp"] }
}
}
```
Agent gets 4 tools:
| Tool | Purpose |
|---|---|
| `search` | Complete query language search, returns JSON (path/size/time/type) |
| `content_matches` | View matching lines in a file (with line numbers) |
| `index_status` | Index statistics |
| `rebuild_index` | Forced rebuild |
From now on, agents do not need to `dir /s` or recursively `ls` to burn tokens — one tool call directly leads to the result.
**Typical Task for Agent**:
> “Help me find all video files larger than 500MB and not modified in half a year on drive D” → `search("kind:file ext:mp4,mkv size:>500mb -modified:month path:d:\\")`
## Build
Requires Rust (MSVC toolchain):
```bash
cargo build --release
# Output:
# target/release/pts.exe CLI + MCP server
# target/release/pts-app.exe Desktop application
```
## Architecture
```
crates/pts-core Index + search engine (library)
├─ File names uniformly stored in continuous byte arena (original + ASCII lowercase)
│ Search uses memchr SIMD substring matching, zero allocation, cache-friendly
├─ Columnar metadata (parent/size/mtime/flags), each entry ~45 bytes
├─ Rayon parallel directory scanning (one lock per directory, DirEntry metadata zero additional syscall)
├─ notify file monitoring incremental update
└─ bincode persistence, atomic replacement write
crates/pts-cli pts.exe: CLI subcommands + hand-written MCP JSON-RPC server
src-tauri Tauri 2 desktop application (system WebView2)
ui Native HTML/CSS/JS, zero framework zero build steps
```
## License
MIT