Summary
Add support for DuckDB Quack — the new RPC protocol (announced 2026-05-12, currently in beta) that turns DuckDB into a multi-client server. This is directly aligned with tycoon's local-first analytics story: today every consumer of the local catalog opens the DuckDB file in-process, which means only one process at a time gets a writable handle. Quack removes that constraint while staying local.
Why it matters for tycoon
- Lets the CLI, a running
tycoon ask Nao session, dbt, and Rill all talk to the same live DuckDB simultaneously — without copying or re-attaching.
- Keeps everything on
localhost; no cloud dependency, fits the local-first ethos.
- Works with DuckLake storage too, which we already use as the Rill bridge.
Reference (from duckdb.org/quack)
Server:
INSTALL quack FROM core_nightly;
LOAD quack;
CALL quack_serve('quack:localhost', token => 'super_secret');
Client:
CREATE SECRET (TYPE quack, TOKEN 'super_secret');
ATTACH 'quack:localhost' AS remote;
FROM remote.hello;
- Default port:
9494
- Auth: token-based via DuckDB secret
- Capacity (per duckdb.org): "a few thousand writes/sec on 8 CPU / 32 GB RAM"
- Full DuckDB feature set: ACID, indexes, views; supports DuckLake
Proposed scope
Open questions
- Is the
quack extension stable enough on core yet, or are we stuck on core_nightly for now? (Affects what we tell users to install.)
- How does Quack interact with our MotherDuck path — is there a hosted-mode equivalent, or is this strictly local?
- Token lifecycle: regenerate per
tycoon init, or per-session?
Out of scope (for this issue)
- Remote / cross-machine Quack access — local only for now.
- Replacing the in-process default path; Quack should be opt-in until it's GA.
Summary
Add support for DuckDB Quack — the new RPC protocol (announced 2026-05-12, currently in beta) that turns DuckDB into a multi-client server. This is directly aligned with tycoon's local-first analytics story: today every consumer of the local catalog opens the DuckDB file in-process, which means only one process at a time gets a writable handle. Quack removes that constraint while staying local.
Why it matters for tycoon
tycoon askNao session, dbt, and Rill all talk to the same live DuckDB simultaneously — without copying or re-attaching.localhost; no cloud dependency, fits the local-first ethos.Reference (from duckdb.org/quack)
Server:
Client:
9494Proposed scope
tycoon serve(or similar) — start a Quack server bound to the active project's DuckDB / DuckLake, with a generated token persisted to project configtycoon askand other consumers to optionally attach viaquack:instead of opening the file directly when a server is runningOpen questions
quackextension stable enough oncoreyet, or are we stuck oncore_nightlyfor now? (Affects what we tell users to install.)tycoon init, or per-session?Out of scope (for this issue)