Quack: Turn DuckDBinto a client-server database
Search Shortcut cmd \+ k | ctrl \+ k
Beta release available now
Quack: Turn DuckDB
into a client-server databaseThe Quack protocol unlocks multi-client access for DuckDB, turning it into a general-purpose database system
Read the announcement Get started
Storage DuckDB database file DuckLake Flat files
Introducing Quack
Hannes Mühleisen introduced Quack at AI Council 2026. Watch his talk, the “Super-Secret Next Big Thing for DuckDB”.
Architecture
SELECT * FROM orders LIMIT 5;┌──────┬───────────┬─────────┐
│ id │ product │ total │
│ 1 │ widget │ 42.00 │
└──────┴───────────┴─────────┘INSERT INTO orders VALUES
(3, 'tool', 29.99);1 row inserted.quack:
quack:
CALL quack_serve();- listening on port 9494
- 2 active connections
- catalog: my\_database.duckdb
- my\_database.duckdb
- 128 MB · last write 0.3s
- my\_ducklake
- Catalog database
- Object storage
- Parquet file
- Parquet file
- 128 MB · last write 0.5s
read/write
DuckDB DuckLake
TABLES VIEWS ACID TRANSACTIONS PRIMARY KEYS INDEXES
TABLES VIEWS ACID TRANSACTIONS SNAPSHOTS TIME TRAVEL
How it works
Client-server setup
You can take any two DuckDB processes on a network and turn them into client and server by using the Quack extension. The Quack protocol supports the full DuckDB feature set – over the wire.
Optimized for performance
We designed the Quack protocol for performance. We minimized the number of round trips, and ensured that the protocol can handle small updates and large batches just as well.
Step 1
Install DuckDB
curl https://install.duckdb.org | shStep 2
Launch Quack on the server
CALL quack_serve(
'quack:localhost',
token = 'super_secret'
);CREATE TABLE hello AS
FROM VALUES ('world') v(s);
Step 3
Connect from the client
CREATE SECRET (
TYPE quack,
TOKEN 'super_secret'
);ATTACH 'quack:localhost' AS remote;
FROM remote.hello;
Step 1
Install DuckDB
pip install duckdbStep 2
Install the Quack extension
# TODO: Install the Quack extensionStep 3
Start the server
# TODO: Start the serverStep 1
Deploy via CloudFormation
aws cloudformation create-stack \
--stack-name my-quack-demo \
--template-url https://duckdb-quack-ami.s3.us-east-1.amazonaws.com/quack.yaml \
--region us-east-2Frequently asked questions
What is Quack?
Quack allows DuckDB to connect to a DuckDB server through the `quack:` protocol. You can think of Quack as a Remote Procedure Call (RPC) protocol for DuckDB. Quack enables DuckDB instances to talk to each other, effectively turning DuckDB into a client-server database management system, where both the client and the server are DuckDB instances.
Why is it called Quack?
Mallard ducks communicate by quacking, so it's only fair that DuckDB instances communicate through the protocol `quack`.
When should I use Quack?
Quack can be beneficial in a number of scenarios, including the following:
Can I use DuckDB with Quack for transactional (OLTP) workloads?
Yes. DuckDB with Quack can handle a few thousand writes per second on a server with 8 CPUs and 32 GB RAM. See the benchmarks in our announcement blog post.
Can I still run DuckDB as an in-process database?
Yes, DuckDB as an in-process database will continue working just as it did before, and we will treat the in-process deployment model as a first-class citizen in the DuckDB ecosystem.
Quack in the DuckDB ecosystem
Client-server DuckDB
Quack turns DuckDB into a client-server database for multi-writer and remote access.
DuckLake server
Quack supports querying DuckLake and other data lake formats.
Community extensions
Quack works with all DuckDB extensions, including the Community Extension ecosystem.
