What’s new in Duct.

We ship most weeks. Every release that changes something you can see is written up here — no commit hashes, no ticket numbers, just what changed and why it matters.

Every change, including the ones only a contributor would notice, is in CHANGELOG.md. Duct is open source.

Oct 29, 2026 Desktop 0.7.2 # permalink

Faster on every screen

Duct’s pages arrive drawn instead of waiting on their scripts, and a long conversation stays as quick as a short one. The desktop app fits a small laptop, zooms on a 4K screen, and updates on Windows without asking for admin.

Workspace

  • Pages arrive drawn. Sign-in and onboarding are ready to read the moment they load, instead of showing “Starting Duct…” while their code downloads.
  • Long conversations stay fast. A reply streaming into a fifty-message thread redraws only itself, so Duct no longer slows down as the thread grows, and a brief open beside the chat stops redrawing with every word.
  • Charts and code load when you need them. An Insights thread starts with about a quarter less to download, because the chart library and code highlighting wait until something on screen uses them.
  • Phones to 4K. Full-screen views fit a notched iPhone, the split view waits until both panes fit, Enter no longer sends halfway through a Japanese, Chinese or Korean word, long links wrap, and grids use the room on a 2560 or 3840 pixel screen.

Desktop

  • Fits a small laptop. The window opens centred and fully on screen at 1366×768 and 1280×800, not under the taskbar.
  • Zoom. View has Zoom In, Zoom Out and Actual Size, so text on a 4K screen can be as large as you like.
  • Windows updates stop asking for admin. Duct now installs for your account alone. The update to 0.7.2 asks one last time, to remove the old copy installed for all users, and keeps your Start menu and desktop shortcuts.
  • Linux and Windows polish. No more blank window on Linux with an NVIDIA card, a quicker splash on Linux, and About is back under Help on Windows and Linux.
  • Quieter in the background. A window left open all day only checks its connection while you can see it.

Reliability

  • The cookie question no longer breaks the page. First-time visitors from the EU, the UK and Switzerland saw “This page couldn’t load” instead of sign-in. They now get the question and the page.
Oct 28, 2026 # permalink

Bring your MCP servers

The insights chat can call tools on MCP servers you connect, like OpenSEO, Notion, Linear and PostHog, and asks before any call it hasn’t been trusted to make. Your coding agent can set up a project in Duct from your repo, and a brief keeps running when you leave the page.

Models & agents

  • Claude Haiku 5.5 is Anthropic’s Light model. It replaces Haiku 4.5 in the Light tier, and a saved Haiku 4.5 pick moves to it on its own.
  • A fallback never costs more. When a model is overloaded and Duct steps to another without asking, it only steps to one that costs the same or less, so a busy GPT-6 Luna no longer moves your job to a pricier model.

Connectors

  • MCP servers in the insights chat. Pick OpenSEO, Notion, Linear, PostHog, Railway or Cloudflare from the list, or add any public server by its address, and the chat can call its tools on whichever model you run. A call that needs your OK shows whose tool it is, the agent’s reason and the full arguments first. The MCP setup guide says what works and what doesn’t yet.
  • Railway and Cloudflare ask every time. Their read tools return environment variables and API tokens, so every call waits for you, and the connect dialog says so before you connect.
  • One grid for every connector. Duct’s own connectors and MCP servers share the Connections page, and each card says which kind it is and who runs it.
  • Set up a project from your coding agent. Claude Code, Codex or Cursor can draft your project in Duct from the repo it already has open, with a personal token from “Connect your AI agent”. It writes drafts only: nothing replaces what you typed or confirmed, and each draft shows in Activity.

Workspace

  • Onboarding reads your deck. Add up to five PDF, Word, PowerPoint, Markdown or text files beside your URL, and Duct drafts your project from what you wrote as well as from your homepage. A file never outranks your live site.
  • A brief keeps running when you leave the page. Open Connections halfway through and the run carries on, its sidebar entry pulsing until it finishes. Come back and it picks up where it is. Only Stop cancels.
  • Each tab keeps its own project. Switching project in one tab no longer moves the others, so a run or a saved post lands on the project you picked in that tab. Thanks to Danny Ward, Duct’s first outside contributor.
  • The composer keeps your words. A half-typed question survives a reload and stays in its own tab, so it never shows up under another account, and Esc stops a reply mid-stream.
  • Progress you can trust. The working panel counts real seconds instead of a bar that guessed three minutes, and the context ring’s tooltip shows what the session has cost.

Reliability

  • One tool call, one change. A run cut off and resumed no longer proposes the same change set twice, applies it twice on an assisted project, or saves a duplicate artifact.
  • A post goes out once. A second publish, or a double click, no longer creates a second scheduled copy at PostBridge.
  • A politer crawl. The site audit reads six pages at a time instead of up to 35 at once, which a firewall can mistake for an attack.
  • The desktop app stays responsive while macOS asks for keychain access, and a sign-in link that opens Duct on Windows or Linux now arrives.
Sep 30, 2026 # permalink

See what you shipped

Duct reads GitHub, so when a number moves it can check whether something you shipped moved it. Content Studio makes video and writes for X and LinkedIn, and the chat runs on your own model keys.

Connectors

  • GitHub, connected through a GitHub App. Pick the repositories on GitHub’s own screen, and Duct reads merged pull requests, releases and closed issues for the window you ask about, so “did the drop start with a change we shipped?” has an answer. A self-hosted install connects with a fine-grained token instead.
  • Duct says when Google Analytics held rows back. GA4 withholds low counts, samples large reports and rolls the long tail into “(other)” without an error. When it does, the brief now says so, instead of quoting what came back as the whole window.

Models & agents

  • Current models by default. Claude Opus 5.5 and Sonnet 5.5, GPT-6.1 Sol, Grok 4.7 and the newest DeepSeek builds on OpenRouter. A saved pick of a retired model moves to its successor, never to a pricier class.
  • The chat runs on your model keys, like every other job, and says in a sentence when none is set. An audit you run searches the web on your Gemini key too; the free audit on the site stays on Duct.
  • A spent ChatGPT plan says so. When the plan’s usage window runs out mid-answer, you read that, not a generic error.

Workspace

  • Content Studio makes video. The agent renders a clip with Veo 3.1 or Seedance on your own Gemini or OpenRouter key, keeps every take, shows each clip’s cost, and publishes the one you pick.
  • Posts for X and LinkedIn, in an editor shaped like the feed: each platform’s character limit, LinkedIn’s “see more” fold, and replies threaded under the post.
  • Your own PostBridge and Apify keys. Publishing and Discover searches run on the keys you save from the Accounts tab, stored encrypted.
  • A scheduled post stays the post you edited. Editing or deleting it in Duct now changes the queued copy too, so nothing goes out with words you already changed.
  • A change set names the tool (Google Tag Manager, not “Gtm”), and a destructive step says what that means: it always waits for a person and can be rolled back.

Security

  • Limits on what runs before you sign in. The free audit and guest sessions are capped per visitor, so nobody can run models or crawls without limit before signing in.
  • Security headers on every page and app response, including HSTS and a content security policy on the site.
Sep 28, 2026 Desktop 0.7.1 # permalink

Duct in five languages

The app now speaks Spanish, Brazilian Portuguese, German and Japanese. Briefs quote totals Duct computed from the data, memory says how old a fact is, and an approval applies once and only to what you approved.

Workspace

  • Spanish, Brazilian Portuguese, German and Japanese. The whole interface is translated. Switch from the account menu, and your other devices follow the choice.
  • See what the agent did. Every data pull, web search, page read and sub-agent appears as a row where it happened, still there when you reopen the thread, and reasoning folds under “Thought for 6s”.
  • Charts the agent draws, and documents you can recognise. An agent can draw a figure as an image, and the library shows each report by its first screen instead of a row of identical icons.
  • Content Studio clones a TikTok post from its link, plans from what has worked on your own account, and reviews a carousel before it goes out.
  • A message that never sent comes back to the composer, instead of sitting in the thread as if the agent had it.

Insights

  • Duct does the arithmetic. Every pull arrives with totals, rates and subtotals computed from the data, and the brief quotes them instead of the model adding up hundreds of rows.
  • Remembered numbers carry their age. A campaign status or budget from memory reads “as of 15 Aug”, and once it may have changed, the agent checks it again before calling it current.
  • All of Search Console, and every Google Analytics channel. The queries with impressions but no clicks are read too, organic reports stop looking at paid traffic, and the in-depth SEO audit ranks findings by the traffic at stake.
  • Briefs default to HTML, a styled page with its own charts and sortable tables. Ask for markdown in the chat and that wins.

Execution

  • An approval applies once, and only to what you approved. A double click or a second tab can’t apply a change twice, and a change whose target moved since you approved it, like a Google Ads budget someone raised, is held back with the reason.
  • Review cards survive a reload, say “You approved this” and when, and the agent hears your decision on its next turn.

Desktop

  • A security fix. This release fixes a high-severity access-control flaw in Tauri, the framework the desktop app is built on, present in every earlier version. Update to get it.
  • A splash instead of an empty window. Duct paints at once while the app loads, and greets your first launch.
  • Desktop conversations are remembered. Closing a chat lends it your keys, in memory only, so Duct can file what it learned. They are still never stored on Duct’s servers.
  • A key macOS won’t hand over says so, with how to allow it, and you’re asked once per launch rather than on every message.
Sep 15, 2026 Desktop 0.7.0 # permalink

Agents that know your business

Your profile stopped being a dialog in one browser and became something every agent reads: who you are, how you write, how deep you want the answer, and the time zone your week starts in.

Workspace

  • A profile worth filling in, on its own page. Role, business and voice follow your account instead of one browser, so a second device and the scheduled brief see what you filled in once.
  • Every agent reads it. The audit, insights and content agents all render the same profile. The audit had been collecting preferences it never passed on, so role and depth changed nothing.
  • Your week starts in your time zone, which is what “last week” has to mean for a brief to line up with your dashboards.
  • Signed out, you land on the audit, not on a login form.
  • A ChatGPT sign-in can be cancelled and replaced, and “keep me signed in” holds a Google session for 30 days.

Insights

  • A run starts knowing what it can reach, on the tier the job deserves, rather than discovering a missing connector halfway through an answer.
  • A connection asked for mid-conversation comes back to the conversation. You connect the tool and the answer continues where it stopped.
  • A reload restores the thread instead of re-asking the question, and the desk no longer blanks itself when you switch back to the window.
  • A request that failed says so, instead of rendering as an empty list and reading like “there is nothing here”.

Connectors

  • Google Analytics reports that came back empty now return rows. Landing-page pulls used a filter shape GA4 rejects, and key events were still being asked for under the name Google deprecated.
  • Connecting Google Ads no longer needs a developer token. Google retired them on 9 September; the connection is a Google sign-in and nothing else.

Models & agents

  • Pick the model that draws. OpenAI’s GPT Image 2.5 pair, Flare by default, and an OpenRouter key can draw too instead of being declined every picture.
  • xAI and OpenRouter are one click in the tier map, and the models page opens with the setup you already have rather than an empty form.

Start with a report

Duct opens with one field now: your URL. The crawl starts before you sign in, and the first thing you see is a report about your own site rather than an eleven-question setup wizard.

Workspace

  • One field instead of eleven questions. The crawl begins the moment the URL validates, and Duct drafts the project from what it read — each field marked as taken from your site or as Duct’s guess, so confirming it is a click.
  • An account when there is something to keep. The audit runs first; signing in arrives when there is a report worth saving or sharing.
  • A report you can hand to whoever owns the number. Sharing is membership: the link opens for the people you invite and is a 404 for everyone else.
  • Search Console is asked for once, after the report — one Google consent that creates the account and grants the read access, instead of signing in twice for the same thing.

Models & agents

  • The tiers you set are the ones that run. The Heavy, Standard and Light map lived in your browser and no run ever read it — you could set Heavy to Opus, watch a run choose Gemini, and have no way to tell which was lying. It follows your account now, the scheduled brief included.
  • A model out of quota no longer ends the run. When a provider keeps refusing, Duct remembers for a few minutes and routes the next run to another key in your map rather than spending four more attempts on the same wall.
  • Runs spend the key you actually hold, a ChatGPT plan included. A pasted key is tested with one real call, so “invalid key”, “no billing on this account” and “your account cannot see this model” arrive as three different sentences.
  • Pictures draw on whichever image-capable key you brought, rather than one vendor’s.

Insights

  • A connector’s numbers reach the agent whole. A large pull used to be cut mid-structure — on a 900-row search-terms report that is two thirds of the numbers gone, with no way for the agent to know which ones. Every row survives now, folded into a compact table on the way in.
  • What a run cost, on the key that paid for it. Tokens and spend broken down by agent, by model and by provider, because which agent is expensive, which model is, and which provider is are three different decisions.

Security

  • Analytics ask first. Nothing loads or is stored until you answer, and declining means the tag manager never loads at all. The desktop app never asks, because it stores nothing to consent to.
  • A failed key check no longer echoes your key back in its error, and usage limits are counted against a credential’s identity rather than its value, so a leaked key confirms nothing about who holds it.

A download that just opens

The desktop app is a thin shell now: no 470 MB download, no twenty-second wait while it boots, and sign-in works as soon as the window appears. Intel Macs are covered for the first time.

Desktop

  • A fraction of the download, and it starts straight away. The app used to carry an entire Python backend inside it. It renders Duct and talks to the hosted API instead, so there is nothing to unpack and nothing to wait for.
  • Intel Macs are supported again. The macOS build is universal, so one download runs on both Apple silicon and Intel.
  • Download links that keep working. The download page has a card per platform — macOS, Windows, Linux, Debian/Ubuntu — each on a permanent link, so a bookmark still resolves after the next release.
  • Windows installs receive updates. They had been checking and being told there was nothing, every time, because the update manifest was missing its Windows entry.
  • A sign-in that cannot finish says so instead of quietly signing you in on the web and leaving the desktop window where it was.

Models & agents

  • xAI is a provider in its own right, with Grok 4.6. Bring your own xAI key and the tier map you already set applies to it.
  • More models to assign to a tier: Gemini 3.8 Flash, Fable 5.1, DeepSeek V4 Pro and Kimi K3.
  • Web search works whichever model you brought. It is Duct’s own tool now, rather than a feature only some providers offer.
  • A long insights thread no longer dead-ends. When the provider says the request is too long, Duct compacts the conversation once and retries, instead of offering you “start fresh” an hour in.

Execution

  • A change your account is not allowed to make is refused up front. Duct used to find that out at apply time — after you had already approved it.
  • Duct records the permissions Google actually granted, so declining one during setup is visible immediately rather than surfacing as a failure later.

Security

  • A site that redirects somewhere private is no longer followed. Duct checks every redirect hop and the address each host resolves to, not only the URL it was given.
  • Provider errors stay out of the browser. A failed model call used to pass the provider’s own error text through to the page; you get a short reference that matches the server log instead.
  • Uploaded files can only be read from where they were stored, enforced at the point a file is opened rather than trusted at each call site.
Sep 2, 2026 # permalink

Bring your own models

Duct no longer decides which model runs your work. Pick a tier once, plug in OpenRouter, or point the OpenAI slot at the subscription you already pay for.

Models & agents

  • Three tiers, one job map. Choose a Heavy, Standard and Light model in settings. Every agent job picks the tier it needs, so you are not selecting a model feature by feature.
  • OpenRouter is a first-class provider. One key, and the tier map you already set applies to everything behind it.
  • A ChatGPT subscription can drive the OpenAI slot — useful if you pay for the seat but not the API.
  • Hosted runs use your keys, not ours. The hosted deployment stopped quietly falling back to Duct’s own provider credentials.

Workspace

  • A command palette. One shortcut to jump between projects, connectors and agents — and you can bind your own shortcuts to the actions you repeat.
  • Insights opens on what changed instead of an empty prompt box waiting for you to think of a question.
  • Duct remembers the project you were in instead of resetting to the first one on every visit.
  • Named controls, announced states, visible focus across the app, for anyone driving Duct by keyboard or screen reader.

Connectors

  • The connector list now matches what a project can actually reach. Duct asks the server, rather than inferring availability from whichever keys happen to be saved.
  • Every connected source is counted — the “sources connected” figure had been counting two of them.

Desktop

  • Credentials a self-host build stores on your machine are encrypted with a key the app mints into your OS keychain.
  • Connecting through the browser reports success as success — it had been calling a completed connection expired.
Aug 30, 2026 # permalink

Duct starts remembering

Project memory lands, so you stop re-explaining your business to every agent. The desktop app reaches Windows and Linux, and updates itself on all three.

Memory

  • Duct remembers per project. Positioning, competitors, what you corrected last week — carried into the next brief instead of pasted in again.
  • Every recalled fact shows where it came from, as a chip you can dismiss when it is wrong.
  • An off-switch per session for the times you want the agent working from a blank slate.
  • Consolidation keeps memory from growing into noise, and a timeline shows what Duct learned and when.
  • Seed a project from a file — drop in a positioning doc or competitor list and skip the cold start.

Desktop

  • Windows and Linux builds, with self-update on all three platforms.
  • Connect a data source in your own browser, where your password manager and existing Google session already are — not in a stripped-down app window.
  • Sign-in failures explain themselves rather than returning a blank server error.

Reliability

  • Crash capture, and outage explanations per platform, so “the brief is late” comes with a reason attached.
Aug 27, 2026 # permalink

From insight to execution

A brief that tells you what to fix is half a product. Duct now proposes the change, shows you exactly what it would do, and applies it only at the autonomy level you set.

Execution

  • Agent-proposed change sets. Propose, preview against a guardrail, approve, apply, roll back — every step visible before anything touches a live account.
  • A three-rung autonomy ladder. Suggest only, approve each change, or let a narrow class apply itself. Raising a rung never widens what a proposal is allowed to touch.
  • A review queue you can work through, with a detail drawer and approval of part of a change set rather than all of it.
  • A structured activity log — the per-project audit trail of what was proposed, by whom it was approved, and what actually applied.

Connectors

  • Google Ads, across five read connectors, plus executors for the changes teams make most often.
  • Mixpanel, Microsoft Clarity and GrowthBook joined the catalogue.
  • Per-project connector-to-account mapping, so one workspace can point each connector at the right ad account or property.
  • Server-side connector credentials, and a Google Tag Manager connector for teams who would rather not hand out keys.

Artifacts

  • Briefs and reports that outlive the session. A versioned store with stable links, agent edits, version history and exports — so a report you liked is still there next month.
Aug 20, 2026 # permalink

Duct runs on your machine

The desktop shell learns to carry a backend of its own. The build you download still talks to Duct’s cloud — but the same app, built with the backend inside it, now runs the entire loop on your machine with no account behind it.

Desktop

  • A local backend the shell can bundle and supervise. A self-host build ships the server and database inside the app, so a project runs with nothing behind it. The published build leaves it out and uses the hosted API.
  • macOS builds are signed with Developer ID and notarized — the DMG opens without a fight with Gatekeeper.
  • The app finds its own API address at runtime, so one build works against the local sidecar or a hosted backend.

Insights

  • A second audit engine you can select per request, with the existing one still the default — useful on the day a provider is having a bad time.

Workspace

  • Invite teammates to a project as collaborators.

Security

  • The security audit and secret-leak scan now block a release instead of reporting on one that already shipped.
  • Every open dependency advisory in the app cleared.
Jul 31, 2026 # permalink

Sign in like a desktop app

Signing in moves out of an embedded window and into your real browser, where your password manager and Google session already live.

Desktop

  • Sign in through the system browser, with a deep link that hands you back to the app when you are done.
  • macOS builds reach TestFlight for internal testers.

Connectors

  • Google Ads with your own developer token. Bring one and connect today rather than waiting on ours to clear review.
Jun 19, 2026 # permalink

Your keys, your machine

Duct stops being a service that holds your credentials. Bring your own provider keys — and run the whole thing from a desktop app that keeps them in the OS keychain.

Models & agents

  • Bring your own provider API keys, sent with the request rather than parked on a server.
  • A Providers tab that keeps them in one place instead of scattered through settings.

Desktop

  • The first desktop app, storing your keys in the macOS keychain instead of a browser.

Insights

  • Conversations survive the page. A streaming session is saved as it runs, so a refresh no longer costs you the thread.

Workspace

  • Plan a month at a time — a calendar, a kanban board and an inline plan board over the same set of posts.
  • Channels and linked social accounts, so a post knows where it is going before you approve it.
May 28, 2026 # permalink

A studio for content

A content agent that plans, drafts and ships posts — with image generation and a reference library it studies before it writes.

Workspace

  • A content agent, end to end. Plan the week, draft the posts, publish them through your connected accounts.
  • Image generation with multiple reference images per prompt, so a brand’s look carries from one post to the next instead of drifting.
  • A bundled reference library the agent reads before drafting, rather than inventing a house style each time.
  • TikTok discovery by keyword and hashtag, for seeing what already works before planning around it.
Apr 6, 2026 # permalink

The first report

Where this started: connect Google Ads, say what you are trying to learn, and get a written report back instead of another dashboard.

Connectors

  • Connect Google Ads over OAuth and choose which account Duct reads.
  • Sign in with Google, with privacy policy and terms in place from day one.

Insights

  • A goal-driven flow. Pick the question you are trying to answer and Duct assembles the queries for it, instead of asking you to build them.
  • Reports carry their evidence. Every claim ties back to the connector rows behind it, so you can check the working rather than trust it.