Folder metadata New
Query a File System with SQL — in Excel, Google Sheets, AI and REST
Make any folder queryable — every file's name, size, dates and change history as rows. Answers "did the file arrive?", "what vanished?" and "what is filling the drive?" in SQL. Reads no file contents.
One connection, every surface
Where your File System data can go
- 1 outbound connection
- 0 inbound ports
- read-only · files stay put
runs on
- For your team, vendors and partners
-
Excel add-in · refresh on demand
-
Google Sheets add-on · refresh on demand
-
Nova AI ask in plain English · text to SQL
-
Data Viewer share live results · team, vendors, partners · any device
- For apps and systems
-
REST API JSON endpoint · OpenAPI 3.1
-
Power BI Power Query M
-
Scheduled syncs Google Sheets · Airtable · Baserow · SeaTable · Smartsheet · Anvil
- For AI tools
-
AI assistants Claude · Cursor · MCP server
- Delivered to people
-
Alerts & reports Slack · Discord · Email · Webhook
Query Streams turns any folder into live SQL tables — every file's name, size, dates and change history as rows — readable from Microsoft Excel, Google Sheets, AI assistants over MCP, the REST API and Power BI. The self-hosted agent walks the tree and records what it finds; it never opens a file, so no contents are read. Each rescan is compared against the last, so appeared, modified and vanished are rows you can query rather than a snapshot you have to diff yourself.
One of 9 File Set drivers on one folder engine — the inventory tables, change trail and refusal rules under features are shared by the family File System CSV Folder Parquet Folder Excel Folder SQLite Folder JSONL Folder Multi-record CSV Machine Logs Web Server Logs
- For your team, vendors and partners
-
File System to Excel Microsoft Excel · Excel add-in
Pull live File System results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.
How Excel works -
File System to Google Sheets Sheets add-on
Run a saved File System query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.
How Google Sheets works -
Ask Nova about File System Nova AI · text to SQL
Ask a question in plain English. Nova already knows your File System tables, writes and runs the SQL, explains the answer and charts it — no query to write, no credentials to hand over.
How Nova works -
File System to Data Viewer result sharing · team, vendors, partners · phone, tablet, desktop
Share a live File System result with anyone — a colleague, a vendor, a partner — as a bookmarkable grid that re-runs fresh when opened, on a phone, a tablet or a desktop. They see the results, never the SQL or the files.
How the Data Viewer works - For apps and systems
-
File System REST API HTTP endpoint
Publish a File System query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.
How REST API works -
File System to Power BI Power Query M
Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live File System results over HTTPS — no ODBC driver, no database port opened.
How Power BI works -
File System to Airtable Automation platform
Sync File System rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.
How Airtable works -
File System to Baserow Automation platform
Feed a Baserow table from File System over the REST endpoint — self-hosted or Baserow cloud.
How Baserow works -
File System to SeaTable Automation platform
Keep a SeaTable base current with File System data without exporting a file or exposing the database.
How SeaTable works -
File System to Smartsheet Automation platform
Push File System results into a Smartsheet grid so plans and reports read from the source system, not last week's export.
How Smartsheet works -
File System to Anvil Anvil Works · App platform
Back an Anvil Python app with File System through the REST endpoint instead of embedding database credentials in the app.
How Anvil works - For AI tools
-
File System MCP server Claude, Cursor and MCP clients
Give an AI assistant read-only access to File System with the schema it needs to write correct SQL — no credentials in the chat.
How MCP works - Delivered to people
-
File System alerts and reports Slack · Discord · Email · Webhook
Put a File System query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.
How alerts and reports work
How it works
5 steps, no inbound firewall change
Install the Network Agent on a machine that can see the folder — a file server, a NAS share, or the PC the exports land on.
Point it at one or more root folders. Include and exclude patterns are yours to set; recycle bins, .git and node_modules are skipped for you.
The agent walks the tree (16 levels deep by default) and records each file's path, size, timestamps and whether it is still there. It never opens the file.
Each rescan is compared to the last, so you get a change trail rather than a snapshot: appeared, modified, vanished.
Query it like any table, and join it to a database — for example, invoices in your ERP with no matching file in the drop-folder.
Feature deep-dive
What File System gives you
What you can query
- files_current — one row per file present right now: path, folder, extension, size and modified date.
- files_events — one row per change. This is how you answer "what landed last night?" or "who deleted the March folder?"
- directories — per-folder counts and totals, plus a stated reason when a folder could not be read.
- directory_snapshots — a daily size series per folder, so growth is a chart instead of a guess.
- volumes — capacity and free space for every drive the roots sit on.
Turn filenames into columns
Exports are almost always named to a convention. Give the connector a filename pattern and each part becomes its own column, so INV_2026-08-24_ACME.csv can be filtered by date and customer without string surgery. Folder names can be captured the same way.
-- Everything that arrived in the last day, biggest first
SELECT relative_path, size_bytes, modified_utc
FROM files_current
WHERE modified_utc > now() - INTERVAL 1 DAY
ORDER BY size_bytes DESC
What it deliberately does not do
File System is an index of the folder, not of the data. It reads no file contents. If you want the rows inside the files, use CSV, Parquet, Excel, SQLite, JSONL or Multi-record CSV Folder — they give you these same inventory tables plus the data itself.
Shared by the whole File Set family
Every folder connector also gives you
- files_current — a live inventory: every file the connector can see right now, with its path, size and modified date.
- files_events — the audit trail: what appeared, what changed, what vanished, and anything held back, with the filename and the reason.
- directories and volumes — per-folder totals, daily growth history, and how much room is left on the drive.
- Only files that actually changed are re-read on each sync, so a folder of 50,000 files is not re-parsed because one new export landed.
Good to know
- Read-only, enforced — one statement at a time, SELECT and friends only. Your files are never written, moved or renamed.
- Nothing is uploaded — the data is cached, encrypted, on your own machine beside the agent. Only the result of a query leaves your network.
- Sensible defaults — up to 250,000 files, 16 folders deep, 512 MB per file, all adjustable. Recycle bins, .git and node_modules are always skipped.
- The SQL dialect is DuckDB — the same SQL you would write against any other connector.
Cross-source SQL
Join File System to the rest of your data
A folder index is a set of SQL tables like any other. Your system of record knows which documents should exist and your payment processor knows which were settled — only the folder knows what actually landed, and one statement can ask all three. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.
3 connections · 3 agents
One statement
-- issued in the ERP, arrived in the folder, settled in Stripe
SELECT e.invoice_no, e.issued_on, f.first_seen_utc AS arrived, i.status
FROM erp_sql.dbo.invoices2 e
LEFT JOIN drop_folder.fileset.files_current1 f ON f.invoice_no = e.invoice_no
LEFT JOIN billing.stripe.invoices3 i ON i.number = e.invoice_no
ORDER BY e.issued_on DESC;
The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. invoice_no is a filename column: give the connector the naming convention and each part of the file name becomes a column you can join on. A null arrived is a document that never showed up. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work
Connection details
What File System needs
- Folder
- One or more roots — local disk or a network share typed as \\server\share (never a mapped drive letter; on Linux or a Mac, mounted first); subfolders included, include and exclude patterns supported
- Reads
- Names, sizes, dates and paths only — the file itself is never opened, so contents are never parsed
- Tables
- files_current, files_events, directories, directory_snapshots and volumes — inventory, change trail, per-folder totals, a daily size series and drive capacity
- Change history
- Every rescan is compared against the last, so appeared, modified and vanished are rows you can query
- Filename columns
- Give it the naming convention and each part becomes its own column; folder names can be captured the same way
- Limits
- Up to 250,000 files, 16 folder levels deep — both adjustable
- Credentials
- None — there is no server; the agent reads the folder in place
- SQL dialect
- DuckDB — standard SQL, nothing folder-specific to learn
There is no database server in this picture, and there is no file data either — this connector indexes the folder, not what is inside it. The agent walks the tree, records each file's path, size and timestamps in an encrypted DuckDB store on the same machine, and compares every pass against the last. Nothing is uploaded to Query Streams; the only thing that ever leaves your network is the result of a query.
It is the card to reach for when the question is about the files themselves: did last night's export land, what vanished, what is filling the drive, which invoices in the ERP have no matching document in the drop-folder. If you want the rows inside the files, the CSV, Parquet, Excel, SQLite, JSONL and Multi-record CSV cards give you these same inventory tables plus the data.
FAQ
Questions about File System
Which tools can read File System data through Query Streams?
All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the folder once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.
Do my files get uploaded to Query Streams?
No. The Network Agent reads the files in place and caches rows in an encrypted store on the same machine. The files themselves never leave your network — only the result rows of a query do, over a single outbound encrypted connection with no inbound firewall port.
Can Query Streams change, move or rename my files?
No. Files are opened strictly read-only and are never written, moved or renamed. Queries are enforced read-only at the point of execution — one statement at a time, SELECT and friends only.
What does Query Streams need to connect to File System?
A folder path the agent machine can see — no server, no credentials, no drivers to install. Folder: One or more roots — local disk or a network share typed as \\server\share (never a mapped drive letter; on Linux or a Mac, mounted first); subfolders included, include and exclude patterns supported. Reads: Names, sizes, dates and paths only — the file itself is never opened, so contents are never parsed. Tables: files_current, files_events, directories, directory_snapshots and volumes — inventory, change trail, per-folder totals, a daily size series and drive capacity. Change history: Every rescan is compared against the last, so appeared, modified and vanished are rows you can query.
Can I join a folder of files to a database in the same query?
Yes — that is a federated query. One statement can reference File System and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.
Put File System where the work happens
Install the agent, point it at your folder, and pick a destination.
Read-only Outbound only Credentials stay on the agent

