.duckdb file to open a database, or a .parquet, .csv, .tsv, .json or .ndjson file to read it where it sits. DuckDB 1.5.2 is compiled into the driver, so nothing runs as a server unless you point the connection at one.
The driver is not in the app. Picking in the Choose a Database sheet offers the
download before the form opens, and opening a saved connection installs it without asking.
Settings > Plugins > Browse > installs it up front. See Plugins.
Quick setup
1
Create the connection
Click New Connection… or press
Cmd+N, then choose DuckDB.2
Choose a file
Leave Connection Type on Local File and click Browse…. Type
:memory: in the field instead for a database that lasts as long as the session.3
Connect
Click Save & Connect.


DuckDB connection form
What the file field accepts
In Local File mode the path is the whole connection, and it is required; the form shows no host, port or Database field.
Double-click a
.duckdb or .ddb file in Finder to open it here. .parquet files list TablePro under Open With rather than taking the association; to make a double-click open them here, select one in Finder, press Cmd+I, set Open with to TablePro, and click Change All…. .csv, .tsv, .json and .ndjson open from the connection form only.
A DuckDB database carries DUCK eight bytes in, so a database opens under any name: drag warehouse.db onto a window and it reaches this driver rather than SQLite. The data formats need their extension either way, because the reader is chosen from it. Installing the plugin is offered first when it is not already there.
Remote (Quack)
Quack is DuckDB’s client-server protocol, served byquack_serve. Set Connection Type to Remote (Quack, experimental):
Save & Connect attaches the remote to an in-memory DuckDB. Reach it through the alias:
SELECT * FROM remotedb.main.orders.
The
quack extension is not linked into the macOS build. DuckDB downloads it from extensions.duckdb.org on the first remote connect and caches it under ~/.duckdb, so that one connect needs to reach that host.Connection URL
Databases and schemas
A connection opens one database named after the file:analytics.duckdb becomes analytics, schema main. ATTACH a second file and it joins the sidebar as a sibling database after a refresh:
Cmd+K to move between them, in place, with no reconnect. DuckDB does not persist attachments, so a reconnect starts again from the one file. system and temp are hidden, and with them information_schema and pg_catalog.
Any connection can also read a file straight from SQL:
Sharing the file with another process
One process writes a DuckDB file at a time, and the lock lasts as long as the connection. While a tab is open onsales.duckdb, duckdb sales.duckdb in a terminal is refused, and so is a notebook, a dbt run, or a second TablePro window.
Three ways out, in Options on the connection:
Database ▸ Release File Lock hands it back now, without ending the session. The tabs, the schema cache and the row you were on all stay; the next query takes the file again.
A release is refused, with the reason, while the session holds anything reopening would destroy: an open transaction, a temporary table or view, an attached database, or a changed setting. Commit the transaction or drop the temporary table and the release goes through.
Read-only is not a way to keep writing from somewhere else. A read-write connection blocks every other process, read-only ones included; a read-only connection blocks writers. Two readers work, a reader and a writer do not.
Releasing hands the file to whoever wants it next, which may not be you. A query run after another process has taken it fails until that process lets go; reconnect once it has.
Limitations
- A DuckDB file takes one writer at a time. A connect against a file another process holds fails, naming that process and its process ID. Quit the
duckdbCLI, the Python process or the other TablePro window first, or set Release the File Lock After. - A data file opened through Browse… is read-only, and the file on disk is left byte for byte identical. To change its contents, open a
.duckdbdatabase and runCREATE TABLE t AS SELECT * FROM 'data.parquet'. - Remote (Quack) lists no tables in the sidebar. Write them out by name through the alias.
- No SSL/TLS section and no SSH tunnel. The engine is in-process; see SSL/TLS.
- No creating or dropping a database.
ATTACHis the way to reach a second file.
Troubleshooting
No file at …
A data-file path that is not there. Only.duckdb and .ddb are created on demand. Re-pick the file with Browse….
DuckDB opened the file but reported no catalog to browse
The file opened and exposed nothing to list. Check that it is a DuckDB database and not a file with a borrowed extension.Port must be a number between 1 and 65535
Port holds something else. The Quack default is9494.
… is using sales.duckdb
Another process holds the file. The message names it and its process ID. Quit it, or turn on Open the File Read-Only when the message says read-only would get in, which it does when the other process is itself a reader.The database file is no longer at …
The file moved or was deleted while the connection was idle with its lock released. Point the connection at the new path, or restore the file, then reconnect.Related
- TablePro for iPhone and iPad, where DuckDB opens a file picked through the Files app
- Import & Export

