Skip to content

Duct Desktop 0.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 14:58
· 46 commits to main since this release
3eae850

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_SECRET is generated once into
    a 0600 file 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_members row disappeared from the owner's project
    list; migration a4d18e5c26bf backfills 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.app

Windows — download and run the .exe installer. SmartScreen may warn on a
new signing identity; choose More infoRun anyway.

Linux — download the .AppImage, then:

chmod +x Duct_0.4.0_amd64.AppImage && ./Duct_0.4.0_amd64.AppImage

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