Early preview: invite-only beta, not live yet

Data pipelines in SQL. Every run in its own machine.

Write one SELECT. Point it at a source and a sink. Waddle runs it on DuckDB inside an isolated microVM that starts in about half a second and is deleted when the run ends, with checks that stop a bad load before it lands.

Read the docsHow it worksBuild statusHosted service: not open yet
terminal
$ waddle init orders-sync
$ waddle validate orders-sync/pipeline.toml
ok: my-pipeline
$ waddle run orders-sync/pipeline.toml --state state
{"rows_in":1000,"rows_out":667,"watermark":"2026-02-11 16:00:00","seconds":3.7}

In one paragraph

What is Waddle?

Waddle is a data pipeline service where a pipeline is one SQL SELECT plus a short TOML file. Each run executes DuckDB inside its own isolated microVM, which starts in about 0.6 seconds on a cached image and is deleted when the run ends. It is an early preview, invite-only.

Four ways to use it

The same pipeline files, wherever you work.

Available

CLI

One local program. Validate, test and run a pipeline on your own machine with no account and nothing uploaded. Later it also deploys to the hosted service.

waddle run pipeline.toml
Invite-only

API

REST with a generated OpenAPI document: pipelines, secrets, runs, schedules, webhooks and usage. Invite-only.

POST /v1/pipelines/{name}/runs
Available

MCP

Let an AI assistant validate, test, deploy and run pipelines through a local server or the invite-only hosted endpoint. No tool takes a secret value.

waddle-mcp
Invite-only

Web console

A SQL editor and run history. DuckDB runs in your browser to preview a transform on a sample, so the sample never leaves it. Invite-only.

Each component's exact state and evidence are on the status page.

How it works

Two files, one run.

01

Write

A short TOML file names the source, the sink, the optional watermark and the checks. A SQL file holds one SELECT over the source table.

02

Run

A fresh microVM loads the source, then locks itself down: no files, no network, no extensions. Only then does your SQL run. A second connection that never saw your SQL writes the sink.

03

Verify

Checks run before the write. After the write the sink is read back and compared. The watermark is saved only when the sink succeeded, so a failed run repeats safely.

pipeline.toml
name = "orders-sync"
sql  = "orders.sql"

[source]
kind    = "postgres"
dsn_env = "SRC_DSN"      # the name of a secret, never the secret
table   = "orders"

[sink]
kind    = "file"
url     = "s3://acme-data/orders.parquet"
format  = "parquet"

[incremental]
column  = "updated_at"
initial = "1970-01-01"

[[checks]]
rule = "not_null"
column = "order_id"
[[checks]]
rule = "reconcile"
orders.sql
-- the source is the table `src`
SELECT order_id, customer_id, amount, updated_at
FROM src
WHERE updated_at > $watermark

Measured, not promised

What the prototype did.

0.6 smicroVM boot with the image cached
28 sthe first time a new image version is pulled
1,000 to 667rows read, filtered and written back, then read back

Prototype measurements from October 2026. They show what is possible, not a service level. Warm boot and cold image pull are different numbers; both are shown on purpose.

Sources and sinks

What works, what is planned.

ConnectorStatusNotes
Files: CSV, JSON, Parquet over HTTPS, S3, R2workingRead and write, with a read-back check.
Postgres (source and sink)workingAppend, replace and upsert, with incremental loads.
SQLite (source)local onlyA local database file. The hosted service refuses it: a hosted run has no file to attach.
SurrealDB (source and sink)workingReads and writes your own SurrealDB over its HTTP API. No incremental loads. SurrealDB is never the processing engine.
MySQL (source)invite-onlyIncremental loads supported. Servers with a self-signed certificate are not supported.
DuckLake (sink)local onlyAppend and replace. Hosted runs need a persistent catalog first.
Delta Lake (sink)local onlyAppend and replace (replace on a local directory only).
Iceberg (sink)local onlyReplace only, on a local directory.
Data quality rulesinvite-onlyRules run on the staged result; a failing critical rule ends the run before the sink is written.
BigQuery, SnowflakeplannedNot started.
SaaS APIs (Stripe, GitHub and so on)not in v1A deliberate cut to keep the first version small.

FAQ

Questions people ask first.

What is Waddle?

Waddle is a data pipeline service where a pipeline is one SQL SELECT plus a short TOML file. Each run executes DuckDB inside its own isolated microVM, which starts in about 0.6 seconds on a cached image and is deleted when the run ends. It is an early preview, invite-only.

Is Waddle live?

Not publicly. This is an early preview and the hosted service is invite-only. Sign-in and billing are not built yet.

What is the status of the Waddle API, MCP server and web console?

Available: CLI, Pipeline engine and checks, File and Postgres connectors, MySQL, SQLite and SurrealDB connectors, Lake sinks (DuckLake, Delta, Iceberg), MCP server (local). Invite-only: Data quality rules, Hosted runs and schedules, REST API, MCP endpoint (hosted), Web console, Run on your own compute account. Planned: Network egress controls, Sign-in and billing. Per-capability state is on the status page.

What does Waddle do that DuckDB alone does not?

DuckDB runs your query. Waddle adds what you would otherwise script around it: source and sink connectors, incremental state (the watermark), schedules, checks that stop a bad run before it writes, a read-back to confirm what landed, run history and metering.

Why does Waddle use a microVM for every run?

Your SQL is code from a user. Each run gets a fresh isolated machine that holds nothing from a previous run and is deleted when it finishes. On a cached image it starts in about 0.6 seconds.

How much data can a Waddle run handle?

The target is up to about 10 GB per run on a single machine. Larger jobs, streaming and change-data-capture are not planned for the first version.

Which sources and sinks does Waddle support?

Files (CSV, JSON, Parquet over HTTPS, S3 or R2) and Postgres as sources and sinks; MySQL, SQLite and SurrealDB as sources (SurrealDB also as a sink); DuckLake, Delta Lake and Iceberg as sinks in local runs. Other lakes and warehouses are planned. Connectors for SaaS APIs are deliberately not in the first version.

Can I leave Waddle?

Pipelines are a plain TOML file and a SQL file, and the CLI runs the same files on your own machine with no account. Your sink is your own storage.

Beta access

Invite-only, and not open yet.

Sign-in with GitHub opens when the private beta starts. Until then there is nothing to buy and no account to create. The CLI and the file formats are the part you can read about today in the docs.