Skip to main content
AI tutorials

Search Millions of Local Files from AI Agents with Everything Search Skill

Learn how to connect AI coding agents to the Voidtools Everything index through HTTP or native Win32 IPC. This tutorial covers host setup, installation, container configuration, scoped searches, JSON output, search filters, pagination, and advanced query examples.

Search Millions of Local Files from AI Agents with Everything Search Skill

What Everything Search Skill Does

Everything Search Skill gives AI coding agents ultra-fast access to files indexed by Voidtools Everything. It can search millions of files across NTFS drives with reported response times below 15 milliseconds, making it useful for locating source files, configuration files, logs, assets, and project directories.

The project addresses a common limitation of es.exe. The native command-line client communicates with the Everything desktop application through Windows messaging and Win32 IPC. Agents running in Docker, WSL2, Windows Sandbox, isolated runners, or background sessions may therefore receive the following error:

Error 8: Everything IPC window not found. Please make sure Everything is running.

This failure can occur because Windows User Interface Privilege Isolation and Session 0 Isolation prevent processes in different desktop sessions from exchanging the required window messages.

How the Dual-Mode Architecture Works

The skill supports two ways to communicate with the Everything engine:

  1. HTTP REST mode: The preferred mode for sandboxes, containers, WSL2, remote environments, Linux, and macOS. Requests reach the HTTP server running on the Windows host and avoid Win32 session restrictions.
  2. CLI IPC mode: The fallback for an agent running inside a native Windows desktop session. In this mode, the helper calls es.exe through Everything's standard IPC mechanism.

In automatic mode, the Python helper attempts HTTP first and falls back to the CLI when appropriate. The Python implementation uses only standard-library modules, so it has no third-party Python dependencies.

Key Features

  • Fast indexed searches: Find files across indexed NTFS drives without recursively scanning directories.
  • Container support: Connect Docker, WSL2, Windows Sandbox, and isolated agent runners to the host HTTP endpoint.
  • Scoped searching: Search all indexed drives or constrain results to a workspace.
  • Context-safe limits: Use options such as -n 20 to prevent large result sets from consuming an AI agent's context window.
  • Structured results: Request JSON output from the Python and PowerShell helpers.
  • Agent integration: Install the skill for Cursor, Codex, PI-Desktop, or custom agent environments.

Prerequisites

You need a Windows host with Voidtools Everything running and its indexes available. For native desktop use, the skill can communicate through es.exe. For Docker, WSL2, sandboxed, or remote use, enable Everything's HTTP server on the host.

Step 1: Enable the Everything HTTP Server

On the Windows host, open Everything and complete these steps:

  1. Open Tools, then Options.
  2. Select HTTP Server in the left navigation.
  3. Enable Enable HTTP Server.
  4. Set the port to 8080.
  5. Confirm the settings.

You can alternatively run the repository's PowerShell setup script:

.\scripts\enable_http.ps1 -Port 8080

The HTTP endpoint is the bridge between an isolated agent and the Everything service running on the host.

Step 2: Clone and Install the Skill

Open PowerShell, clone the repository, enter its directory, and run the installer:

git clone https://github.com/Mayuqi-crypto/everything-search-skill.git
cd everything-search-skill
.\scripts\install.ps1

The installer places es.exe in ~/.local/bin/, configures the user PATH, and deploys the skill to the following agent locations:

  • ~/.agents/skills/
  • ~/.cursor/skills/
  • ~/.codex/skills/

Step 3: Run a Basic Search

The dual-mode Python helper is located at scripts/everything_search.py. In automatic mode, it first attempts the HTTP endpoint and then uses the native CLI fallback when available:

python scripts/everything_search.py "package.json" -n 20

The -n 20 argument limits the response to 20 matches. Result limits are especially important when an AI agent will consume the output.

Return Structured JSON

Add --json when the result will be parsed programmatically:

python scripts/everything_search.py "ext:tsx component" -n 10 --json

This query looks for indexed items that match both ext:tsx and component, then returns no more than 10 results in JSON form.

Restrict a Search to a Project

Use -p with the Python helper to constrain the search to a workspace:

python scripts/everything_search.py "main.py" -p "C:\Workspace\repo" -n 5

Scoping searches reduces unrelated matches from other projects and makes the output more useful to an agent working inside a particular repository.

Force HTTP Mode

If the agent must use the host's HTTP server, select that mode explicitly:

python scripts/everything_search.py "exact:Dockerfile" --mode http

The exact: operator avoids wildcard expansion and searches for the exact filename.

Use the Skill from Docker

Pass the host endpoint into the container through EVERYTHING_HTTP_URL. The repository's example also maps the special host name to the host gateway:

docker run -e EVERYTHING_HTTP_URL=http://host.docker.internal:8080 \
  --add-host host.docker.internal:host-gateway \
  my-agent-image

Inside the container, run the Python helper:

python scripts/everything_search.py "package.json" -n 10 --json

The request travels over TCP to the Everything HTTP server rather than attempting desktop IPC from inside the container.

Use the Skill from WSL2

In WSL2, obtain the Windows host address from the default route and assign the resulting endpoint to EVERYTHING_HTTP_URL:

export EVERYTHING_HTTP_URL="http://$(ip route show | awk '/default/ {print $3}'):8080"
python3 scripts/everything_search.py "ext:py model" -n 10

The query uses a logical AND: each match must satisfy both the Python extension filter and the term model.

Use es.exe in a Native Windows Session

When the agent runs in the same native desktop context as Everything, you can call es.exe directly. Always specify a sensible result limit:

es.exe -n 20 "package.json"

Scope Results to a Workspace

es.exe -path "C:\my-repo" -n 20 "index.ts"

Return Only Files or Directories

Use /a-d for files only and /ad for directories only:

es.exe /a-d -n 15 "ext:tsx component"
es.exe /ad -n 10 "node_modules"

Sort Recent Logs First

es.exe -sort-date-modified-descending -n 10 "ext:log dm:today"

This searches today's log files and sorts them by modification date, newest first.

Build More Precise Everything Queries

Everything's search syntax can narrow searches before results reach the agent.

  • Multiple extensions: Use ext:md;txt;json to match several extensions.
  • Minimum file size: Use size:>100MB.
  • Size range: Use size:1MB..50MB. Supported units include B, KB, MB, and GB.
  • Modification date: Use dm:today, dm:last7days, or a value such as dm:2025.
  • Parent path: Use path:"C:\Workspace".
  • Exact filename: Use exact:Dockerfile.
  • Logical AND: Separate terms with spaces, as in model user ext:py.
  • Logical OR: Place a pipe between alternatives, as in *.jpg | *.png.
  • Logical NOT: Prefix an exclusion with !, as in *.ts !*.test.ts.
  • Regular expression: Use the native CLI's -r option, for example es.exe -r "src\\api\\.*\.go$".

Advanced Tips for AI Agent Workflows

Prefer Small, Structured Responses

Combine -n with --json when an agent needs to select files or pass results into another tool. A small structured response is easier to parse and less likely to overflow the model's context.

python scripts/everything_search.py "ext:json package" -n 10 --json

Scope Before Broadening

Start with the current workspace whenever the project location is known. If that produces no useful matches, broaden the query to all indexed drives. This approach limits noise while preserving the ability to search the entire index.

Combine Filters

Everything treats space-separated terms as logical AND conditions. You can combine filename terms, extensions, dates, and exclusions in one query:

python scripts/everything_search.py "ext:ts dm:last7days !*.test.ts" -n 20 --json

This example searches for recently modified TypeScript files while excluding files ending in .test.ts.

Choose the Correct Transport

  • Use automatic mode for general operation and convenient fallback behavior.
  • Use HTTP mode for Docker, WSL2, sandboxes, remote agents, and environments separated from the Windows desktop session.
  • Use direct es.exe commands when running interactively in the native Windows desktop session and you need CLI-specific switches.

Understand the Repository Components

  • SKILL.md contains the standard agent skill specification.
  • bin/es.exe contains the official Voidtools CLI tool.
  • scripts/install.ps1 performs installation and PATH setup.
  • scripts/enable_http.ps1 configures the HTTP server.
  • scripts/everything_search.ps1 provides the dual-mode PowerShell wrapper.
  • scripts/everything_search.py provides the zero-dependency dual-mode Python wrapper.

Conclusion

Everything Search Skill lets AI coding agents use the speed of the Everything index without depending exclusively on Win32 desktop IPC. Enable the host HTTP server, install the skill, configure the endpoint for isolated environments, and use scoped queries with strict result limits. The dual-mode helper then supports both containerized agents and native Windows workflows through a consistent search interface.

The project is available under the MIT License. Voidtools Everything and es.exe remain copyright Voidtools.