Duckle is a local-first ETL/ELT studio: design pipelines on a canvas or describe them to the on-device AI assistant, and run them at native speed on DuckDB. v0.4.1 upgrades the bundled DuckDB engine to 1.5.4, adds in-app self-update so you never hand-download a build again, gives the duck-family sources a Custom SQL read mode, fixes REST connectivity behind a proxy, and ships a refreshed brand.
DuckDB 1.5.4 and in-app updates
- Managed DuckDB upgraded to 1.5.4. The bundled engine now pins DuckDB 1.5.4. Installs are version-aware: a
.installed-versionstamp is written on install, so a version bump is detected and re-fetched instead of leaving a stale binary in place. - Existing installs are prompted to upgrade in place, not reinstall. An out-of-date engine keeps running and no longer triggers the blocking setup modal. A dismissible banner offers a one-click in-place upgrade ("DuckDB engine 1.5.4 is available"), the engine binary is overwritten in place, and the previous version's cached cross-OS binaries are cleared so an old version is not left behind.
- New in-app self-update: "Update now". One click downloads the latest build for your OS, verifies it against the release
SHA256SUMS.txt(and refuses to proceed if checksums are missing), swaps it over the running app, and restarts onto it, so there is no more manually downloading new files. Progress is shown in the banner, and a manual download remains as a fallback. Releases now publishSHA256SUMS.txtso the updater can verify downloads. - Update banner secondary action renamed to "View Changelog". Since "Update now" handles the upgrade in-app, the secondary button now opens the releases page for the per-tag notes.
- ARM64 Linux engine install fixed. The managed DuckDB download for ARM64 Linux pointed at the wrong asset name, so the engine could 404 and never install on arm64 Linux. The download URL is now correct.
Duck-family source options (#76, #77)
- Custom SQL read mode for more duck sources (#77). The DuckLake, MotherDuck, and Quack sources now offer a Read mode choice of Whole table or Custom SQL, matching the flexibility the DuckDB source already had. Pick Custom SQL to write your own query against the attached catalog (referenced as
duckle_src), e.g.SELECT * FROM duckle_src.main.orders WHERE status = $1, which also pushes your filter down into the source scan. - Table name is now optional on those sources. Because Custom SQL supplies its own query, the Table field is no longer hard-required, so a Custom SQL read validates without naming a table.
- The View materialize choice is now honored on duck-family sources (#76). Selecting Materialize = View on an attach-backed source (DuckDB, DuckLake, MotherDuck, Quack, Iceberg, Delta) was previously dropped and silently turned into a table. It now runs through a safe lazy path so your choice sticks and downstream stages get projection and predicate pushdown. The default "auto" behavior is unchanged.
Merge mode and Inline SQL fixes (#39, #78)
- Merge write mode now available in the app for DuckDB and SQLite sinks (#39). The DuckDB-native Merge mode (update only the columns the source provides, insert new rows, and leave other target columns untouched) is now selectable from the write-mode dropdown for the DuckDB and SQLite sinks, matching what the engine already supports.
- Saved SQL routine picks now stick and run in the Inline SQL transform (#78). Selecting a saved routine no longer silently reverts or fails the run with "Custom SQL is empty". The chosen routine is applied in a single update so it persists, with its body inlined into the field the component actually reads.
Proxy support and output panel (#80)
- Proxy support for REST and cloud-API connectors (#80). The shared HTTP agent that powers the REST connector and all cloud-API connectors now reads an HTTP proxy from the environment, so calls route through it instead of connecting directly and timing out (os error 10060) on networks that require a proxy.
- Flexible proxy configuration. Duckle reads
DUCKLE_HTTPS_PROXY/DUCKLE_PROXYfirst (a Duckle-only proxy that does not change your global env), then the conventionalHTTPS_PROXY,ALL_PROXY, andHTTP_PROXY(any case). The URL may include credentials, e.g.http://user:pass@proxy:8080. An invalid proxy URL is logged and skipped rather than failing the run. - In-app updater honors the proxy too. The updater's HTTP client picks up the same proxy setting, so update checks and downloads work behind a corporate proxy. New README rows document the env var and a matching troubleshooting entry.
- Run Output panel now scrolls. Removed a nested fixed height on the output area so it no longer clips its rows; the panel scrolls when a run produces many stages of output.
Brand refresh
- New orange accent throughout. The brand accent moves from lemon yellow to orange (
#ff7a45/#ed5f22) across the desktop app in both dark and light themes: buttons, focus rings, selection highlights, node run badges, and the in-app glow, plus the marketing site, docs graphics, and the announcement bar. - New pixel-art "D" sloth logo and app icon. A fresh orange pixel-art "D" sloth replaces the old geometric mark in the in-app header, the README hero, and the regenerated desktop / iOS / Android icon sets, with a true vector version on the website nav, footers, and ecosystem hub (including a dark-circle badge so it reads on light backgrounds).
- "Duckle by SlothFlowLabs" maker signature. The header wordmark now carries a "by SlothFlowLabs" signature beneath "Duckle" in the app, and across the website and README.
- Independence clarification. The README and every website page now state that Duckle is an independent, open-source project that builds on the DuckDB engine but is not part of, affiliated with, or endorsed by DuckDB Labs or MotherDuck.
Download
Grab the single-file binary for your OS below. The headless runner and the MCP server are embedded, so there are no separate downloads.
| OS | Asset |
|---|---|
| Windows x64 | Duckle-windows-x64.exe |
| Windows ARM64 | Duckle-windows-arm64.exe |
| macOS (Apple Silicon) | Duckle-macos-arm64 |
| macOS (Intel) | Duckle-macos-x64 |
| Linux x64 | Duckle-linux-x64 |
| Linux ARM64 | Duckle-linux-arm64 |
On Windows, double-click (SmartScreen may warn the first time on an unsigned binary; choose More info then Run anyway). On macOS / Linux, chmod +x the file and run it. On first launch Duckle guides you through installing DuckDB (required) and, optionally, the on-device Duckie AI assistant.
Upgrade notes
- Workspaces are forward-compatible; no migration is needed.
- Existing installs are offered DuckDB 1.5.4 as a one-click in-place upgrade, and an update notification can fetch this build directly with Update now.
- Built artifacts are unsigned by design (appending the self-extracting payload invalidates any code signature), so do not codesign or Authenticode-sign them.