cloudparts

DuckFlightPreview

A DuckDB community extension that turns a running DuckDB database into a server: PostgreSQL clients and Arrow Flight SQL clients can connect, authenticate and query the same live database.

What it is
Query engines
Type
Open source
Made by
Sidequery
License
MIT for the extension; the bundled core is distributed as an MIT-licensed binary, but its source code is private
Status
Preview. Version 0.1.x, first published in August 2026; builds exist for Linux and macOS only.
Facts checked
24 October 2026

What it is

DuckDB is an in-process engine: normally only the program that opened the database file can query it. DuckFlight adds table functions that start network listeners inside that process. duckflight_pg_serve speaks the PostgreSQL wire protocol, so psql, Psycopg, JDBC drivers and BI tools can connect; duckflight_flight_serve speaks Arrow Flight SQL, so ADBC clients, or another DuckDB through the Airport extension, get results as Arrow data without row-by-row conversion. Both read and write the same live database as the host process, with no export or copy. duckflight_servers lists running listeners and duckflight_stop shuts one down.

Both listeners require authentication, configured in one duckflight.toml file: PostgreSQL users authenticate with SCRAM-SHA-256, Flight clients with a username and password or with bearer tokens, and mutual TLS is supported. Plain-text connections are allowed only on loopback addresses; anything else needs TLS. Tokens carry scopes, so a read-only client can be denied writes and administrative SQL. The extension installs from DuckDB’s community repository with INSTALL duckflight FROM community, and Sidequery also publishes a Docker image that runs both listeners against one database file with external file access locked down. It adds PostgreSQL compatibility macros, such as to_char and json_agg, so common PostgreSQL queries and client catalogue lookups work, but it is not a full PostgreSQL implementation.

Why teams pick it

  • Shares one DuckDB database with many clients over the network, through protocols they already support
  • Arrow Flight SQL returns columnar results, which suits Python, ADBC and DuckDB-to-DuckDB transfers
  • Secure defaults: authentication always on, TLS required off loopback, scoped tokens, and client SQL blocked from reading local files or loading extensions in the Docker image
  • Installs as an ordinary signed DuckDB extension, with no separate server to build

Watch out for

  • Very new (0.1.x since August 2026), from a single company, with Linux and macOS builds only and no Windows or WebAssembly support
  • The core that does the protocol work is a closed-source binary, even though it is distributed under MIT
  • Still one DuckDB process on one machine: concurrency, memory and the single writable database file limit how many clients it can serve
  • PostgreSQL compatibility is partial; tools that depend on PostgreSQL-specific catalogue tables or functions may break
Query language
DuckDB SQL, with PostgreSQL compatibility macros
Client protocol
PostgreSQL wire protocol and Arrow Flight SQL
How it scales
One DuckDB process on one machine
Ways to run it
DuckDB community extension, or Sidequery’s Docker image

More of the DuckDB family

What all query engines have in common →Compare side by side →

How it fits with other technologies

Serve a DuckDB database over PostgreSQL and Arrow Flight SQL from inside DuckDB · sql

INSTALL duckflight FROM community;
LOAD duckflight;

-- users, tokens and optional TLS live in duckflight.toml
SELECT * FROM duckflight_pg_serve('127.0.0.1:5433', '/path/to/duckflight.toml');
SELECT * FROM duckflight_flight_serve('127.0.0.1:31337', '/path/to/duckflight.toml');

SELECT * FROM duckflight_servers();
SELECT * FROM duckflight_stop('pgwire', '127.0.0.1:5433');

See it in a real stack

No architecture uses DuckFlight yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2026

DuckDB runs inside the process that opens it, which makes it fast and simple but leaves no built-in way for other programs, BI tools or teammates to query the same database over a network. GizmoSQL wraps DuckDB in a standalone Arrow Flight SQL server, and the Airport community extension lets DuckDB query and modify data on Arrow Flight servers. Sidequery, a company that makes native notebook apps and the Sidemantic metrics layer, took the other route: put the server inside DuckDB as an extension, so any DuckDB process can start serving.

Nico Ritschel’s first commit to the extension landed on 31 August 2026, and it was published as a DuckDB community extension in version 0.1.x that autumn, with releases every few days through October. Sidequery also publishes builds for DuckDB 2.0 from its own signed extension repository.

Why it’s built this way

Run inside DuckDB, not beside it
An extension shares the host’s live database, so writes from the host and from clients are visible to each other at once, with no second service or copy.
Two protocols
The PostgreSQL wire protocol reaches the widest range of existing tools; Arrow Flight SQL avoids converting columnar results to rows for analytics clients.
Refuse insecure setups
A database server reachable on a network must not be anonymous: listeners with no users or tokens don’t start, and non-loopback addresses fail without TLS.

Timeline

  1. 2026

    First commit on 31 August; 0.1.x released as a DuckDB community extension

  2. 2026

    Core v0.1.14 on 21 October; DuckDB 2.0 builds from Sidequery’s repository

Sources4 · facts checked 24 October 2026

Improve this page on GitHub