Duckle v0.6.1 is out - Talend jobs import straight into the canvas, with a report of what translated and what still needs a hand. Read the release notes

One pipeline.
Write it, wire it, or draw it.

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.

Free & open source Runs anywhere, or fully offline No per-row tax, no lock-in
384components, all on DuckDB
104 / 59sources / destinations
5M rowsloaded in about 1 second
100%local - data never leaves
Integrations

Move data across 160+ connectors, working today

Files, databases, warehouses, object stores, streaming brokers, SaaS APIs, NoSQL and vector DBs. These work today, not a coming-soon list.

PostgreSQLMySQLMariaDBSQLiteSQLiteSQL ServerOracleMongoDBRedisCassandraClickHouseCockroachDBNeo4jInfluxDBElasticsearchDuckDBSnowflakeBigQueryDatabricksRedshiftParquetSparkHadoop PostgreSQLMySQLMariaDBSQLiteSQLiteSQL ServerOracleMongoDBRedisCassandraClickHouseCockroachDBNeo4jInfluxDBElasticsearchDuckDBSnowflakeBigQueryDatabricksRedshiftParquetSparkHadoop
Amazon S3Google Cloud StorageAzureKafkaKafkaPulsarRabbitMQNATSSalesforceHubSpotStripeShopifyNotionNotionGitHubGitHubGitLabJiraSlackDiscordAsanaTrelloZendeskTwilioTelegramMailchimpGoogle AnalyticsGoogle SheetsAirtableQdrant Amazon S3Google Cloud StorageAzureKafkaKafkaPulsarRabbitMQNATSSalesforceHubSpotStripeShopifyNotionNotionGitHubGitHubGitLabJiraSlackDiscordAsanaTrelloZendeskTwilioTelegramMailchimpGoogle AnalyticsGoogle SheetsAirtableQdrant
View all integrations →
The visual Map editor with a main input, two lookups, typed output expressions and a filter
Build

Automate pipelines end to end, without writing SQL

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.

  • 128 transforms: joins, windows, aggregates, CDC/SCD, AI, quality
  • Validators route bad rows to a reject port
  • Generated SQL on every node - never a black box
Run & monitor

Native speed, with live operational visibility

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.

  • 16-node, multi-branch runs finish in a few seconds
  • Run history, plans and per-node previews built in
  • Column lineage per node, tracing each output back to its source columns
  • A failed stage reports the exact compiled SQL and the DuckDB message
  • Schedule on cron / interval / file-watch, or run headless
A run summary showing 16 nodes and 279 rows written in 3006 ms, with a live preview
Solutions

One studio for every data movement job

Replication

Warehouse loading & CDC

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

DuckLake CDC mirror pipeline
SaaS & APIs

Pull from apps & services

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

Component palette and Duckie assistant
Files & storage

Lakes, files & object stores

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

Incremental load pipeline
Duckie AI assistant panel beside the canvas
Local AI

Describe it. Duckie builds it. On device.

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.

  • Truly local - prompts and data never leave the machine
  • Chunk, redact PII, embed and dedupe for RAG
  • Connect Claude or any LLM over the built-in MCP server
Proof, not promises

Real pipelines, real run results

Connecting the dots in the DuckDB ecosystem

Duckle turns DuckDB into a visual ETL platform

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.
Questions

Frequently asked questions

Is Duckle free?

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.

What engine does Duckle run on?

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.

Does Duckle need the cloud or a server?

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.

How many components does Duckle have?

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.

Can Duckle run dbt?

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.

Does Duckle have an AI assistant?

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.

Is there an open-source alternative to Fivetran or Airbyte?

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.

Can I run ETL pipelines without the cloud or a data warehouse?

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.

What is a local-first ETL tool?

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.

How is Duckle different from Airbyte and dbt?

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.

What is the best open-source ETL tool?

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.

What replaced Talend Open Studio after it was discontinued?

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.

Can I run ETL without writing code?

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.

What is the fastest way to extract an Oracle table to Parquet?

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.

Is there a self-hosted alternative to Fivetran that runs on my laptop?

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.

Does Duckle send my data anywhere?

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.

Get started

Build your first pipeline in 60 seconds

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.