Duct Desktop 0.4.0
What changed
First version cut after the desktop shell became self-contained.
Added
- Local sidecar. The desktop bundle ships the FastAPI backend frozen by
PyInstaller and runs it on loopback, so the app works with no server and no
account. SQLite lives in the per-user data directory. - Credential encryption on desktop. The shell mints a Fernet key into the OS
keychain and passes it to the sidecar, so linking a data source can persist.
Before this, connecting Google Ads completed OAuth and then failed to save. - Sign-in that survives a frozen bundle.
JWT_SECRETis generated once into
a0600file in the data directory and reused across restarts. - Browser-based OAuth for desktop, for both sign-in and connectors, over
ai.getduct.desktop://deep links carrying single-use codes rather than
credentials. - Model tiers. Heavy / Standard / Light, assigned per job in
/settings/models. - Connectors: Mixpanel, Microsoft Clarity, GrowthBook, Apple Search Ads,
Meta Ads, OpenAI Ads, Stripe, RevenueCat, Google Tag Manager. - Staged execution. Agents propose change sets against Google Ads and GA4;
a human previews, approves and can roll back. No approve or apply tool exists
in either harness. - Agent memory. Bi-temporal, provenance-linked project memory with a
timeline view.
Fixed
- A project with no
project_membersrow disappeared from the owner's project
list; migrationa4d18e5c26bfbackfills owner membership. - A token that fails to resolve is rejected rather than treated as an anonymous
caller.
Install
Duct Desktop runs the backend locally as a sidecar. No account is required and
no data leaves your machine — you bring your own model API key, stored in the
OS keychain.
macOS (Apple silicon) — download the .dmg, then drag Duct to
Applications. On first launch macOS may say the app cannot be verified; open it
once with right-click → Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine /Applications/Duct.appWindows — download and run the .exe installer. SmartScreen may warn on a
new signing identity; choose More info → Run anyway.
Linux — download the .AppImage, then:
chmod +x Duct_0.4.0_amd64.AppImage && ./Duct_0.4.0_amd64.AppImageExisting installs update themselves — the app polls latest.json in this
release and verifies the signature before applying anything.
Downloads
| File | Size | SHA-256 |
|---|---|---|
Duct_0.4.0_amd64.AppImage |
81 MB | c4537e67f046260e18bf5fe860152a03a257e68a7a7db9b60e5d0a71589d77bc |
Duct_0.4.0_amd64.deb |
8 MB | db262f06c119646320eb8414b945ec7f91c8dabfff7e499dd1520d69fb454346 |
Duct_0.4.0_universal.dmg |
12 MB | 30829b8cd2db30a6fb76571e6fcf74a42d8919f96c15686515bf401e3c7fb178 |
Duct_0.4.0_x64-setup.exe |
4 MB | 863eb94af30f6954700cedbd8b30ddfa6e113c7c62666c1b9e272ecb188c51a6 |
Duct is open source under the MIT licence.
Found a bug? Open an issue.
Found a vulnerability? Report it privately.