// the find
slothflowlabs/duckle
Local-first ETL/ELT studio: a drag-and-drop visual pipeline designer that compiles to SQL and runs on DuckDB. Tiny desktop app, no servers, git-friendly workspaces.
Duckle is a desktop ETL/ELT studio built on Tauri (Rust) + React that lets you drag-and-drop a pipeline onto a canvas, then compiles it to SQL and runs it through DuckDB locally. It ships as a ~65 MB single binary with 290+ connectors and an optional on-device AI assistant. Aimed at data engineers and analysts who want a real columnar engine without spinning up cloud infrastructure.
The compile-to-SQL approach is the right call — every node shows its generated SQL and a live row preview, so there is no black box and debugging is straightforward. The pure-Rust connector implementations (rskafka for Kafka, russh for SFTP, lapin for AMQP) avoid the Python/Java runtime dependencies that make most self-hosted ETL tools a pain to install. Git-friendly workspaces where pipelines are plain JSON files you can diff and branch is genuinely useful for team environments, not a marketing checkbox. The incremental load with watermark state persistence, SCD Type 1/2, and CDC change-feed support are production-grade patterns, not toy demos.
The local AI assistant runs Qwen 2.5 Coder 1.5B through llama.cpp — a 1.5B model is going to produce plausible-looking but wrong pipeline JSON for anything beyond the simplest one-source-one-sink case; treat it as autocomplete, not a pipeline engineer. The '290+ connector' count inflates by treating every pre-configured REST wrapper (HubSpot, Stripe, Shopify, etc.) as a connector, but src.rest under the hood means no schema introspection, no vendor-specific pagination handling, and no incremental sync — you are writing offset pagination config by hand. Several engine crates (stream-engine, transform-engine, workflow-engine, runtime) each contain a single empty lib.rs, meaning the architecture is aspirational; virtually everything real runs through duckdb-engine. Committing three Windows DuckDB CLI binaries (v1.2.2, v1.4.4, v1.5.3) directly to the repo is going to make git history painful as versions accumulate.