Duckle is the open, single-engine ELT stack. One pipeline format on DuckDB: write it in Python, wire it from 160+ sources and destinations, or draw it on the canvas - and describe it to a built-in AI agent that builds while you verify. Runs anywhere - laptop, CI, headless, or a browser - and fully offline when you need it. No per-row tax, no lock-in.
Files, databases, warehouses, object stores, streaming brokers, SaaS APIs, NoSQL and vector DBs. These work today, not a coming-soon list.

Drag sources, transforms, validators and sinks onto a canvas and wire them together. The visual Map editor joins a main input to up to three lookups with per-output typed expressions and an inline filter. Every node still compiles to readable SQL you can inspect in the Plan tab.
Execution runs through DuckDB - vectorized and columnar. Branches fan out across your CPU cores automatically. Every run reports per-node status, row counts, timings and a live preview, so you see exactly what happened and where.

Upsert into Snowflake, BigQuery or Postgres on a schedule, with change data capture and delete propagation.

Salesforce, HubSpot, Stripe, GitHub, Jira and generic REST / GraphQL / OData - normalized into rows you can join.

Glob S3 / GCS / Azure, read Parquet, Iceberg, Delta and DuckLake, and write Hive-partitioned output at native speed.


The assistant runs Qwen 2.5 Coder locally through llama.cpp - no API key, no cloud. Ask in plain English; Duckie streams a valid pipeline and drops positioned, wired nodes onto the canvas. The same six AI transforms prep data for RAG, all offline.
Crunch a billion-row Parquet plus SQLite and ADBC dimensions locally, and upsert only the aggregate into Snowflake.
100,000 changes mirrored into DuckDB with upsert and delete propagation, exactly-once on success.
5 million rows loaded on the first run; later runs read only rows past the saved watermark.
Every pipeline compiles to SQL and runs through DuckDB. Duckle sits in the ingestion and transformation layer alongside tools like dlt, dbt and Evidence, and reads the wider family natively: DuckLake tables, MotherDuck, the Quack protocol, and the community extensions.
Duckle is an independent, open-source project by SlothFlowLabs. It builds on the DuckDB engine but is not part of, affiliated with, or endorsed by DuckDB Labs or MotherDuck.
Yes. Duckle is open source under MIT or Apache-2.0. There is no per-row, per-connector, or per-seat billing, and nothing to self-host or operate.
Duckle runs on DuckDB, an embedded columnar engine. Visual pipelines compile to SQL and execute locally at native DuckDB speed, with no external warehouse or server in the loop.
No. Duckle runs anywhere you point it - your laptop, CI, or a server - and fully offline when you want, on the embedded DuckDB engine. There is no account and no telemetry, which makes it suitable for air-gapped and compliance-sensitive work. It reads from and writes to cloud systems when you need to; it just does not require them.
Duckle ships 384 components, of which 366 are available today, spanning sources, transforms, sinks, data-quality checks, control-flow nodes, and code runners for databases, warehouses, lakehouses, object storage, streaming, NoSQL, and SaaS APIs.
Yes. Duckle runs dbt on DuckDB with a visual GUI, using a fast build engine by default and falling back to dbt-core when needed, so you can build, test, and schedule dbt projects without leaving the studio.
Yes. Duckie is an on-device AI assistant that generates pipelines from plain English with no API key and no telemetry. Duckle also ships an MCP server so external AI agents can list, generate, validate, and run pipelines.
Duckle is a free, open-source ETL/ELT tool that covers similar ground to hosted platforms like Fivetran and Airbyte, but runs locally. It moves data across 160+ sources and destinations with no per-row, per-connector, or per-seat billing and nothing to host or operate. Pipelines are built visually or from plain English and compile to readable DuckDB SQL.
Yes. Duckle executes on the embedded DuckDB engine, so there is no external warehouse, no server, and no account required. It runs fully offline, which suits air-gapped, on-premise, and compliance-sensitive work, and it still reads from and writes to cloud systems whenever you want.
A local-first ETL tool builds and runs data pipelines on your own machine rather than in a hosted cloud service, so data never leaves your control. Duckle is an open, single-engine example: write a pipeline in Python, wire it from connectors, or draw it on a canvas, and run it fully offline on DuckDB - or in CI, headless, or a browser when you want.
Airbyte focuses on hosted extract-and-load connectors and dbt focuses on SQL transformation. Duckle is one open engine that does extract, transform, and load together - write it in Python, wire it from connectors, or draw it on a canvas - and it runs dbt on DuckDB inside the same tool. One format, one engine, no per-row tax, no lock-in.
There is no single best one; the honest answer depends on where the work runs. Airbyte and Meltano suit server-hosted extract and load. Apache Airflow orchestrates jobs rather than transforming data. dbt transforms data already inside a warehouse. Duckle is the option when you want the pipeline to run on your own machine with no server: it covers extract, transform and load in one artifact, compiles to readable DuckDB SQL, and can run dbt models itself. It is free and dual-licensed MIT OR Apache-2.0, with no per-row or per-seat billing.
Talend Open Studio reached end of life on 31 January 2024 and its free downloads were withdrawn, so teams still running it need a migration path. Duckle covers the same ground for the visual-pipeline user: a canvas of sources, transforms and destinations, a tMap-style visual mapper for joins and expression mapping, control-flow nodes for branching and iteration, and scheduled or headless execution. The differences are that pipelines compile to readable SQL on DuckDB rather than generated Java, the whole thing is one desktop binary with no Studio install, and it is free under MIT OR Apache-2.0.
Yes. Duckle pipelines are built by dragging sources, transforms and destinations onto a canvas and wiring them together, with no code required for the common cases. You can also describe what you want in plain English to the built-in on-device assistant. Nothing is hidden: every node shows the SQL it compiles to, so a low-code pipeline and a hand-written one produce the same artifact and you can drop into SQL or Python for the parts that need it.
Read the rows into Arrow and write Parquet directly, rather than converting each value to text and parsing it back. Duckle's Oracle source does this: on a 1,466,723-row, 236-column table it completes in about 65 seconds, against about 68.6 seconds for python-oracledb with pyarrow doing the same job on the same machine and writing the same SNAPPY Parquet. Enabling Write directly from the source on the Parquet sink removes a second encode pass. Columns declared as a bare NUMBER are measured before the write so they get exact DECIMAL types rather than a lossy DOUBLE.
Yes. Duckle is a desktop application that runs pipelines locally with no server, no account and no telemetry, which suits air-gapped and compliance-sensitive work. It reads from and writes to cloud systems when you want it to, but never requires one. The same pipeline file also runs headless through the duckle-runner CLI on a server or in CI, so moving from a laptop to scheduled production does not mean rewriting it.
No. Pipelines execute in-process on DuckDB on your own machine. There is no account, no telemetry and no phone-home, and the application runs fully offline. The built-in AI assistant runs a local model on your device and needs no API key, so describing a pipeline in plain English does not send your schema or data to a third party. Data leaves your machine only when a pipeline you built explicitly writes to a remote destination.
Free and open source, dual-licensed MIT OR Apache-2.0. Windows, macOS and Linux. No account, no telemetry.
Or install just the CLI, for CI, cron and containers:
pip install duckle
About 20 MB, brings the DuckDB engine with it, and adds a Python API where pipelines are built as code and executed by DuckDB. See it on PyPI.
Or let an AI agent do it. Paste this prompt into Claude Code, Cursor or Codex:
Run uvx duckle quickstart to build my first pipeline and run it
Nothing installed first. The agent fetches Duckle and the DuckDB engine on demand, runs a real pipeline, then has 19 MCP tools: it discovers real connectors, compile-checks before anything runs, and returns column-level lineage.