Announcing MotherDuck and DuckDB Targets
Real-time change data capture to DuckDB over Quack, MotherDuck over Postgres endpoint, with DuckLake support.
Supermetal now supports real-time change data capture (CDC) to MotherDuck and DuckDB. Replicate Postgres, MySQL, MongoDB, SQL Server, or Oracle to DuckDB or MotherDuck in minutes.
Supermetal shares DuckDB's single-binary philosophy. A single Rust binary reads the source WAL, converts to Arrow, writes Parquet to object storage, and loads into DuckDB with no infrastructure in between. Keep production databases in sync for analytics, operational dashboards, or embedded reporting.
DuckDB
Quack is DuckDB's native remote protocol. Supermetal connects over Quack to replicate WAL changes into any attached database.
Supermetal stages Parquet on object storage and issues DDL and MERGE statements over the connection. DuckDB pulls the actual data via read_parquet from the object store, keeping bulk transfer off the protocol path.
When the same row is updated or deleted at the source, Supermetal deduplicates it on the target via MERGE. Tables are created without primary key constraints by default for performance. Opt into primary key constraints for database-level uniqueness, or multi-table transactions to preserve source transaction boundaries across tables.
+-----------+ +-------------+ Quack (HTTP) +------------+
| Source DB | ---> | Supermetal +----------------------> | DuckDB +--+
+-----------+ | | +------------+ | +------------------+
| | +-- optional -> | DuckLake (S3/R2) |
| +----------------------> +------------+ | +------------------+
+-------------+ PG Endpoint | MotherDuck +--+
+------------+MotherDuck
MotherDuck is a serverless cloud data warehouse built on DuckDB. It exposes a Postgres wire protocol endpoint, so Supermetal connects over the endpoint and uses the same staging and MERGE flow. MotherDuck reads Parquet from your object store using a persistent secret you create once for your S3 bucket or Azure container.
DuckLake
DuckLake is a lightweight lakehouse format that stores data in Parquet on object storage with a separate catalog database. The catalog can be DuckDB, Postgres, SQLite, or MySQL. It gives you time travel, schema evolution, and concurrent access from multiple DuckDB processes and external query engines.
Supermetal's DuckDB and MotherDuck targets write to DuckLake like any other DuckDB database. DuckLake's time travel gives you a versioned history of every change from your source databases.
Performance
Benchmark: Postgres to DuckDB
TPC-H SF10 dataset (86.6M rows across 8 tables) replicated from Postgres to DuckDB.
86.6M rows loaded in under a minute. Supermetal reads all 8 tables in parallel at a sustained 2M rows/sec from Postgres. The Rate view shows per-second throughput.
Latency under 6s up to 45K rows/sec. 5s of that is the flush interval, under 1s is the write latency to DuckDB. Above 45K/sec, latency climbs as single-threaded Postgres logical decoding approaches saturation around 50K/sec. The Breakdown view shows Read Latency dominates at higher throughput levels.
Get started in minutes
curl -fsSL https://trial.supermetal.io/install.sh | shiwr -useb https://trial.supermetal.io/install.ps1 | iexQuestions? Check out our DuckDB docs, MotherDuck docs, or reach out to us.