Cmd+P / Ctrl+P), or by clicking a file path an agent mentions in chat.
What opens as what
Three of these give you a real query language rather than a search box. They are worth knowing individually.
Parquet: a typed query language
Parquet gets the most powerful filter in Maestro, because Parquet is the only format that carries enough type and statistics information to make one work. Full detail is in Parquet Preview; the short version:ts >= now-7d compares instants and price > 9.99 compares numbers.
What makes it different from the others: the filter runs against the whole file, in the main process, and skips data it can prove cannot match. A Parquet file records each column’s min and max per row group, so a one-day range over a year of data typically reads one row group and ignores the rest. The bar tells you how much it skipped. That is why a multi-gigabyte file filters instantly, and why this viewer can handle files far larger than memory while the others cannot.
JSON and JSONL: jq
Open a.json, .jsonl, or .ndjson file and press Cmd+F / Ctrl+F, then switch the search bar to jq mode using the toggle on its right. You get a real (if compact) jq engine over the file’s records.
The two file types start differently. A .jsonl or .ndjson file opens straight into the record viewer, because one-record-per-line is unreadable as raw text. A .json file opens as ordinary syntax-highlighted source and switches to the tree viewer the moment you enter jq mode, so a small config file still looks like the file you wrote.
.json parses the whole document as one value. .jsonl and .ndjson parse one record per line, which is the common shape for logs and exports, and each record is filtered independently.
Supported operators include the pipe,
,, ==, !=, >, <, >=, <=, and, or, not, plus map(), group_by(), to_entries, startswith(), endswith(), and type.
The syntax help is built into the bar - click any example to run it. Invalid expressions report the error rather than silently showing everything.
Records also render two ways: a tree view with collapsible nodes, and a table view when the records share enough of a schema for columns to make sense. Toggle between them in the viewer’s header.
CSV and TSV: row filtering
.csv and .tsv files open as a real table. Cmd+F / Ctrl+F filters the table down to rows where any cell contains what you typed, case-insensitive, with the hits highlighted in place. There is no expression syntax here - it is a substring match across the row, which is the right tool for a spreadsheet export.
Click any column header to sort (again to reverse, a third time to clear). Numeric-looking columns sort numerically and right-align automatically.
Full detail, including the row detail view, is in General Usage.
The CSV table renders up to 500 rows at a time and filters the rows already parsed in the renderer. For a file large enough that this matters, convert it to Parquet - the Parquet viewer filters the entire file in the main process and has no row ceiling.
The row detail view
Both the CSV table and the Parquet grid share one thing: double-click any row to flip it from horizontal to vertical. You get a modal listing every column as a field/value pair, one per line, with long and multi-line values wrapped in full instead of truncated at the edge of the screen. Inside it:- Left / Right step through rows, following whatever the table is currently showing (so it respects your sort and filter).
- Up / Down scroll the field list, with
PageUp/PageDownandHome/End. /jumps to the field filter.Enterhands focus back to the list.- Each value has a copy button on hover.
Esccloses it and leaves the file open.
Find in file
For everything without a format-specific filter - code, markdown, plain text -Cmd+F / Ctrl+F opens the standard find bar with three modes you cycle through with the chip on its left:
- Text - plain substring, case-insensitive.
- Regex - JavaScript regular expressions. An invalid pattern is reported rather than silently matching nothing.
- Line - jump to a line number.
Very large files
Text, code, and markdown files pick one of three rendering tiers automatically, based on size and line shape:
The tier is picked once when the file opens and shown as a chip in the toolbar - click it to override in either direction for that tab.
Parquet is not part of this system. It never loads the file at all, so its size does not affect how it renders.
SQLite and other databases
Maestro does not currently open SQLite databases. A.sqlite, .sqlite3, or .db file gets the generic “Binary File” card with an Open in Default App button, which hands it to whatever your OS has registered - usually a dedicated database browser.
The same is true of any other database file, archive (.zip, .tar, .gz), font, or compiled binary.
If you want to query a SQLite database inside Maestro today, the practical path is your agent: ask it to run sqlite3 yourfile.db "select ..." in command mode or as a tool call, which works now and needs no viewer.
What no viewer does
Every preview in Maestro is read-only for structured formats. The CSV table, JSON tree, Parquet grid, and rendered Mermaid all display data; none of them write it back. Plain text, code, and markdown are the exception - those are editable withCmd+E / Ctrl+E.
Exporting is available where it makes sense: the Parquet viewer writes its filtered rows out as CSV or JSON Lines.