Query CSV and Parquet in your SQL IDE, locally.
An open-source SQL workspace with DuckDB analysis and native connections to
PostgreSQL, MySQL, MariaDB, SQL Server, and Oracle.
Download omni-sql · Try local analysis · Quick start · Database support
Runs locally · No account required · No separate runtime or database client to install
Early-stage software · Windows x64, Linux amd64 and macOS Apple Silicon / Intel installers
Received a CSV or Parquet export to investigate? Import it and query it with SQL in the same desktop IDE, using embedded DuckDB. A spreadsheet fits this workflow when exported as CSV. You do not need to load the file into your source database or write a separate script.
You can also import a database query result and join it with the file locally, including results from another supported connection.
Example: sales are in PostgreSQL, targets are in a CSV. Import both and use a local SQL join to find the region that missed its target without uploading the file to PostgreSQL. Try the demo with fictional data.
- Run a source query and open Analyze locally.
- Choose Full query result to load the full source query, or choose a sample.
- Add a CSV or Parquet dataset and join it with the imported result using SQL.
- Inspect the result and export the full local query output.
A full export contains the rows available in your imported datasets. If you imported a sample, the export still represents that sample. Read about import coverage and provenance.
The editor has metadata and CTE-aware completion, dialect quick fixes, and supported execution plans. Browse schemas and definitions, inspect results, and edit rows when primary-key checks establish a safe update path. Compatible AI clients can propose SQL changes through the local MCP integration, with an approval dialog before applying them.
Use /catalog in the editor to find SQL templates for the active dialect, including
/catalog insert for an Insert row example. Oracle Explain displays available
row, byte, cost, and time estimates alongside plan predicates.
| Database | Connection | Metadata autocomplete | Query execution |
|---|---|---|---|
| ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | |
| 🧪 Experimental | Basic | Limited |
Generic JDBC uses a driver JAR, JDBC URL, and driver class supplied by the user. Plans, indexes, definitions, and row edits are not currently available for generic JDBC. See the database support guide for connection details and limitations.
Download the package for your platform from the latest GitHub release.
| Platform | Package | Status |
|---|---|---|
| Windows 10/11 x64 | .exe installer |
Available |
| Debian/Ubuntu amd64 | .deb package |
Available |
| macOS 15+ Apple Silicon / Intel | .dmg installer |
Included starting with v0.7.1 |
| Linux ARM, AppImage, RPM | — | Not packaged yet |
Release assets include a SHA256SUMS file so downloads can be verified. End users
do not need to install Node.js, Java, Rust, a database client, or a vendor client SDK.
Choose the aarch64.dmg download for Apple Silicon (M1 or newer), or x64.dmg
for an Intel Mac. Open the disk image, drag omni-sql to Applications,
and launch it from there.
Initial macOS packages use a free ad-hoc signature and are not notarized by Apple. If macOS blocks the first launch because the developer cannot be verified, open System Settings → Privacy & Security → Open Anyway, then confirm opening omni-sql. Follow Apple's instructions for an app downloaded from a source you trust. No paid Apple account is needed to install.
Node.js, Java and the ODBC driver manager are bundled. ODBC connections still require a separately installed driver for the database, as on other platforms.
omni-sql is early-stage software. Test it with development data before using it against important environments, and please report unexpected behavior.
For files only, install the app, choose Import file, and select a CSV or Parquet file. Query the imported table in the Local DuckDB SQL tab.
To work with a database:
- Install the package for your platform.
- Open omni-sql and create a connection.
- Select a database type, enter the connection details, and choose Test connection.
- Configure SSL and schema settings when needed, then connect.
- Browse metadata or open a SQL tab and start writing.
- Run the selection or current statement, then inspect, filter, sort, page, or export the results.
- Open Analyze locally to import a displayed result, stream a full query or sample, or add CSV/Parquet datasets for local joins.
For full imports, sampling, S3, driver precision, and export behavior, read the local analysis guide and data provenance guide.
Need help connecting? Read Database support or Troubleshooting.
omni-sql combines database metadata with the SQL in the editor to suggest columns projected by common table expressions.
Supported diagnostics can offer a quick fix that rewrites the statement for the active database dialect without leaving the editor.
omni-sql combines SQL editing with local analysis of imported database results and files. Mature tools such as DBeaver and DataGrip cover broader administration and ecosystem needs. You can use omni-sql alongside them for local DuckDB analysis.
| Choose omni-sql when you want… | Consider a broader tool when you need… |
|---|---|
| Local DuckDB joins across imported database results and files | Deep vendor-specific administration |
| One editor across five major relational databases | Built-in data modeling and migration tools |
| CTE and metadata-aware SQL completion | A large plugin ecosystem or enterprise support |
| A local desktop app with no account | Built-in data modeling, migration, or team features |
| An MIT-licensed project you can inspect and contribute to | An established, long-supported product |
omni-sql includes a local MCP server that lets compatible AI clients work with the SQL tab you already have open. An assistant can read the active statement and its database context, inspect schema metadata and indexes, explain a query without executing it, prepare an edit for review, or execute SQL after explicit approval in the desktop.
AI client ──MCP/STDIO or HTTP──▶ local omni-sql bridge ──▶ active desktop tab
│
└─ edits and SQL execution require approval
| Tool | What it does |
|---|---|
getActiveSql |
Reads the SQL and dialect from the active tab. |
getActiveConnectionContext |
Reads safe connection context without credentials. |
getSchemaSummary |
Lists schemas, relations, and columns available to the active connection. |
getTableIndexes |
Inspects indexes for one table. |
explainSql |
Produces a non-executing query plan. |
getLatestSqlExecutionError |
Reads the latest execution error from the active tab. |
proposeSqlEdit |
Opens a before/after proposal that you can apply or reject in omni-sql. |
executeSql |
Runs SQL on the active connection after explicit desktop approval, returning bounded results. |
The default transport is local STDIO. The generated launcher configuration is
available from the MCP item in the status bar after the backend is ready. Copy
its command and args exactly into your MCP client; runtime paths are temporary
and are regenerated whenever omni-sql starts.
Optional Streamable HTTP can be started from MCP > Configuration > HTTP with
a separate token and a loopback endpoint (default http://127.0.0.1:41922/mcp).
SQL execution can modify data or structure and always requires desktop approval.
The integration cannot read stored passwords or connection strings, access files
through dedicated tools, or bypass the approval dialog. See the MCP guide for Codex,
Claude Desktop, and ChatGPT Desktop setup, optional Streamable HTTP transport,
verification steps, limits, and the complete security model.
- ✅ Native PostgreSQL, MySQL, MariaDB, SQL Server, and Oracle adapters
- ✅ CTE-aware autocomplete
- 🧪 Generic JDBC (experimental)
- 🧪 ODBC (experimental; requires a separately installed 64-bit driver)
- 📋 MongoDB (deferred to v2)
- 📋 More installer formats and platforms
- Local analysis with DuckDB
- Database support and connections
- Troubleshooting
- MCP integration
- Development
- Building
- Architecture
- Local analysis implementation and remaining work
Built with Tauri, React, Fluent UI, Monaco Editor, TypeScript, Rust, and Kotlin.
If omni-sql is useful to you, star the repository to help other developers discover it. You can report a bug, share a database compatibility result, or suggest a focused improvement. Pull requests are welcome—please read CONTRIBUTING.md first.
Tried installing or running your first database + file join? Share your first-run experience, including successful attempts. Tell us your platform, database, and where you got stuck.





