File Studio
Give your AI agent a fast, private way to find the right file — without scanning your disk or burning tokens.
Your files are everywhere: source repositories, old projects, notes, exports, PDFs, spreadsheets, network drives, and years of archived work.
You know the answer is somewhere on your machine. Your AI coding agent does not.
Without a searchable index, Claude Code, Codex, or Gemini CLI must repeatedly list folders, open files, and scan content to understand what you have. That is slow, token-heavy, and impractical across large folders or multiple drives.
Traditional file search may find a filename, but it often cannot search deeply across code, documents, and structured data. Cloud-based search may work — but only after uploading content you would rather keep private.
File Studio solves that problem once.
It builds a private, local index of the folders and drives you choose. Search it directly inside VS Code, or let your existing AI agent query it with one command and retrieve only the most relevant files and snippets.
No server. No separate AI service. No uploaded files. No telemetry.
Search once. Stop making your agent rediscover everything.
File Studio turns your local files into an AI-ready search layer:
- Find files by name, path, type, size, or date.
- Search inside code, text, Markdown, JSON, XML, CSV, and TSV.
- Optionally search inside PDF, Word, PowerPoint, Excel, Outlook, and HTML files (after a one-time document-extraction setup — see below).
- Give Claude Code, Codex, or Gemini CLI ranked, line-numbered results instead of making them open files one by one.
- Compare two folders and copy only what's missing or changed — the source folder stays read-only.
- Index large folders and drives once, then re-index only what changed.
- Keep the entire index on your machine and under your control.
Use File Studio as a standalone file-and-content search tool — like Everything, but it searches inside your files — an AI-agent retrieval layer, or both.
The difference
Without File Studio
Your agent explores the filesystem over and over:
- List folders.
- Guess which files matter.
- Open and read them.
- Spend tokens on irrelevant content.
- Repeat it all on the next task.
With File Studio
Your agent runs one local query and gets ranked results with file paths, matching snippets, and line numbers — faster answers, less context noise, and far fewer tokens spent on brute-force file discovery.
Bring Your Own Model. Connect Your Own Data.
File Studio is built around two principles from Lynx DI.
BYOM — Bring Your Own Model. Use the AI agent you already trust: Claude Code, Codex, or Gemini CLI. Your model account, credentials, and conversations stay with your chosen provider — File Studio does not host a model, proxy your prompts, or require a separate AI service. When your provider ships a smarter model, your workflow improves without touching your local data layer.
CYOD — Connect Your Own Data. Choose the folders, drives, and data sources you want searchable. File Studio indexes them directly on your machine; file names, metadata, and extracted content stay local — nothing is uploaded. Your source files are treated as read-only and are never moved, modified, or deleted.
Built for AI agents — useful without one
After each index build, File Studio generates AGENTS.md, CLAUDE.md, and GEMINI.md (byte-identical) at your workspace root, plus ready-to-run search tools under .index/bin/:
python .index/bin/search.py "<query>" # ranked, deduped, line-numbered snippets
python .index/bin/query.py "<read-only SQL>" # metadata questions over the index
Supported coding agents auto-load the map and use these instead of scanning the filesystem — faster answers, far fewer tokens. You can also ignore the AI integration entirely and use File Studio as a fast local search interface inside VS Code.
Why use File Studio
- Search beyond the current repository. Index multiple projects, archives, folders, or entire drives.
- Reduce AI token waste. Retrieve relevant snippets before your agent reads full files.
- Keep private data private. Indexing and search happen locally, without a server.
- Choose speed or depth. Build a lightweight metadata index first, then add full-content search where it matters.
- Search mixed file types. Find information across code, notes, tabular data, PDFs, and Office documents.
- Compare & sync folders safely. Diff two folders and copy only what's missing or newer — source read-only, nothing deleted.
- Scale beyond editor search. Parallel, incremental indexing for very large directory trees.
- Stay in control. File Studio stays dormant until you explicitly configure roots or start an index build.
Get started
- Install the extension and open the File Studio activity-bar view.
- Run Configure Roots to Index and choose the folders or drives you want searchable. (This is the moment the
.index folder is created — not before.)
- Click Build Index — leave Index content off for the fastest name/path index, or turn it on to full-text index file contents.
- Search from the panel, or run Quick Search the Index from the Command Palette.
- (Optional) Run Set Up Document Extraction (MarkItDown) to also index PDF/Office/HTML content, then rebuild.
By default the index lives in a .index folder inside the opened workspace. To keep it elsewhere (off a workspace, or on a faster drive), point diskIndex.databasePath at an empty folder before building.
Requirements & dependencies
| Dependency |
Needed for |
How it's installed |
| VS Code 1.107.0+ |
The extension itself |
Marketplace / VSIX |
SQLite + FTS5 (better-sqlite3) |
The core index and search |
Bundled — no action needed |
Python 3.10+ (with venv) |
Document extraction (MarkItDown) and the Tantivy engine |
Install a base Python once; the extension builds its own isolated environment from it |
| MarkItDown |
Extracting PDF / DOCX / PPTX / XLSX / XLS / Outlook / HTML to text |
Installed automatically by Set Up Document Extraction (MarkItDown) |
| Tantivy |
The optional alternate search engine |
Installed automatically by Build Tantivy Index |
You only need Python to full-text index documents (PDF/Office/HTML) or try the Tantivy engine. File/path indexing and content indexing of code and text need nothing beyond the extension.
Base Python (one time). MarkItDown/Tantivy run inside a virtual environment the extension creates, which needs a base Python 3.10+ with venv:
- Windows / macOS: install from python.org/downloads; on Windows tick "Add python.exe to PATH."
- Linux: ensure
venv is present (Debian/Ubuntu: sudo apt install python3-venv).
The extension auto-discovers py, python3, and python on your PATH; if yours lives elsewhere, set diskIndex.pythonPath. Everything installs into .index/py-env — nothing system-wide, and deleting .index removes it cleanly.
The two indexes: metadata vs content
File Studio keeps file metadata and file content in separate databases so they coexist:
- File metadata (
index.db) — names, paths, size, dates, type, extension. Fast to build (no reading file bodies); ideal for "where is that file?" across millions of files.
- Full content (
content.db) — everything above plus extracted, full-text-searchable file contents.
The Search index section in the sidebar shows both, marks which is active (the one search and browse use), and lets you switch with a click. Building content never overwrites your metadata index, and vice versa.
What gets indexed
File Studio always indexes file names, paths, size, dates, type, and extension. When content indexing is on:
- Code, text, Markdown, JSON, XML, CSV, TSV are read and indexed directly — no Python required.
- PDF, DOCX, PPTX, XLSX, XLS, Outlook
.msg, HTML are extracted with MarkItDown (needs the Python environment above). Without it, they're indexed by name and metadata only.
Search engines
File Studio's search layer is pluggable, and every option runs locally, in-process (no server):
- SQLite + FTS5 (default, built in) — BM25-ranked full-text search. Powers the in-app Search panel and the
.index/bin/search.py agent tool. Nothing to install.
- Tantivy (optional) — a Rust/Lucene-style index built from your content DB via Build Tantivy Index, exposed to agents through
.index/bin/search_tantivy.py (same ranked JSON) for A/B benchmarking. The Search tab has an Engine dropdown to compare FTS5 vs Tantivy side by side (Tantivy runs a process per query, so it's Enter-to-search).
- Semantic / vector (experimental) — a search-provider seam plus a
--mode hybrid flag designed for embedding-based retrieval (sqlite-vec + a local embedding model). No embedding model ships yet, so hybrid currently falls back to lexical.
Commands
| Command |
What it does |
| Configure Roots to Index |
Choose the folders or drives that become searchable. Creates .index on first use. |
| Build Index (Configured Roots) |
Build or rebuild the index for the configured roots. |
| Reset Index (Purge & Rebuild) |
Delete the derived index data and rebuild. Your source files are never touched. |
| Switch Search Index (metadata / content) |
Choose whether search and browse use the metadata or content index. |
| Compare Folders… |
Diff two folders, then copy only what's missing or changed (source read-only, nothing deleted). |
| Build Tantivy Index |
Install tantivy into the local venv and build the alternate engine. |
| Index a Folder… / Index a Document… |
Index a one-off folder or individual files outside the configured roots. |
| Reindex Files With Failed Extraction |
Retry files whose content extraction previously failed. |
| Quick Search the Index… / Open Search Panel |
Search from the Command Palette, or open the search & browse UI. |
| Generate Agent Map (AGENTS.md / CLAUDE.md) |
Write agent-readable maps and the .index/bin/ query tools. |
| Set Up Document Extraction (MarkItDown) |
Create the local Python environment for document extraction. |
| Reveal Index Database Location / Show Logs |
Open the index folder, or the extension output logs. |
Settings
| Setting |
Description |
Default |
diskIndex.roots |
Folders or drives to index. |
Empty |
diskIndex.includeExtensions |
Optional extension allowlist. Empty means every file is considered. |
Empty |
diskIndex.excludeDirs |
Folder names or absolute paths to skip during indexing (with their subtrees). |
Empty |
diskIndex.metadataOnly |
Fast file/path indexing. Set false (or use Index content during a build) for full-text content. |
true |
diskIndex.contentMaxSizeMB |
Only files up to this many MB have their text extracted; larger files index by name/metadata. 0 disables extraction. |
4 |
diskIndex.contentMaxChars |
Full-text depth — max characters indexed per file. 0 = unlimited. |
2000000 |
diskIndex.pdfMaxExtractMB |
PDF-specific extraction cap; larger PDFs index by name only. 0 = no PDF cap. |
3 |
diskIndex.docTimeoutSeconds |
Per-document extraction timeout; a slower document indexes by name only. |
20 |
diskIndex.indexWorkers |
Parallel index workers. 0 auto-scales (8 metadata / 8 content); set 1–64 to override. |
0 |
diskIndex.sourceDiskType |
auto / ssd / hdd — tunes the crawl for the source drive (serial walk on an HDD). |
auto |
diskIndex.databasePath |
Folder holding the index DBs, config.json, and lynx-index.log. Use an empty folder for a new index. |
Workspace .index, else extension storage |
diskIndex.pythonPath |
Optional Python 3.10+ interpreter with markitdown. Overrides the managed venv. |
Empty |
diskIndex.logLevel |
Log verbosity: debug, info, warn, or error. |
info |
Privacy & storage
File Studio stores a rebuildable local index (index.db and/or content.db), a small config.json, a lynx-index.log, and — if you set up extraction — a py-env virtual environment, all under .index (or your diskIndex.databasePath).
- Nothing is created until you adopt a folder for indexing (Configure Roots / Build / Index a Folder).
- Extracted text and snippets are stored only in the local database, so search is instant.
- No indexed content is uploaded and nothing is sent to a model. The MarkItDown and Tantivy setup commands download Python packages from PyPI; indexing and search themselves are fully local.
- The extension reads your files but never moves, modifies, or deletes them. (Folder Copy writes only to a destination you explicitly choose and confirm; the source is never changed, and nothing is deleted.)
Troubleshooting
- Documents don't match on content. Run Set Up Document Extraction (MarkItDown) and confirm a base Python 3.10+ with
venv is on your PATH (or set diskIndex.pythonPath). Until then, documents index by metadata only.
- "Build Tantivy Index" fails. It needs the same Python 3.10+ base as MarkItDown. Check the Output panel for the
pip install tantivy log.
- Search feels incomplete after adding files. Run Build Index again to pick up new or changed files.
- Searching the wrong thing. Check the Search index section in the sidebar — you may be on the metadata index when you want content (or vice versa). Use Switch Search Index.
- Indexing is slow in cloud-synced or network folders. Add slow subtrees to
diskIndex.excludeDirs.
- Need to inspect the index files. Run Reveal Index Database Location or check
diskIndex.databasePath.
More from Lynx DI
File Studio is built by Lynx DI. Explore more at lynxdi.com.
License
Proprietary — Copyright © 2026 Lynx DI. All rights reserved. See the LICENSE file.
Bundled third-party open-source components remain under their own licenses; see the NOTICE file.