github kortix-ai/suna v0.14.3
v0.14.3 — Capture on Windows, signed installers, Drive, and automation controls

latest release: dev-latest
5 hours ago

New

  • Pause all automations: one account switch stops every project's schedules, webhooks, app events and monitors.
  • Trigger run limits: a trigger runs at most 60 times an hour by default, with an optional daily limit, so a runaway trigger stops itself.
  • Drive in the sidebar, with a Drive page, a file viewer, upload, multi-select and file management. Session folders show Drive folders. Repo moves under Customize.
  • Recently deleted lists the sessions you can restore, and a restored session keeps its conversation.
  • Drop a file anywhere on a session page or the project home to attach it to your message.
  • Notifications have All, Needs you and Done tabs, and the bell shows when something needs you.
  • Generative UI is on by default for new sessions: the agent can answer with cards, comparisons, charts, maps and tabs. A project can turn it off in Settings.
  • Computer: every access is granted at pairing with a switch for each afterwards, a new computer starts with every access selected, "Always" is remembered, and Computer Use works on Windows without console windows.
  • The command palette (⌘K) opens Drive, Reminders and Repo.
  • Mobile reminds you when a question has waited 60 seconds for an answer, and renders generative UI like the web app.
  • Connectors v2 (experimental, per project): a catalog of vendor MCP apps signed in with OAuth that Kortix runs, app-event triggers that Kortix checks, an event inbox, and an in-place move for existing Composio and Pipedream connectors and their triggers.

Kortix Capture

  • Windows is ready for company rollout: the install command downloads the installer, waits and reports whether it worked. The macOS and Linux commands do the same.
  • Windows: the app window opens for people without admin rights, a manual MSI install never rolls back, and the app has a Windows icon.
  • App rules match what an admin types on every OS: notepad.exe also matches the packaged Windows 11 Notepad, and the inclusion policy never records an app it cannot identify. The app catalog lists common CAD apps.
  • The timeline keeps the runs of frames taken while the person is idle.
  • The player shows video for computers linked to no one.
  • Settings shows that Capture always starts at login.
  • The Kortix desktop app is no longer recorded on Windows and Linux, as on macOS.

Kortix Desktop

  • Windows installers for Kortix Desktop and Kortix Capture are signed by Kortix AI Corp.
  • Windows: the title bar blends with the app, a Kortix menu replaces the raw menu bar, and the app has a tile icon.
  • Each deployment serves its own desktop build.

Models

  • Kortix-managed models are part of paid plans. Free accounts use their connected ChatGPT subscription or their own provider keys.
  • Kimi K3 leaves the managed lineup. Sessions and defaults that used it move to DeepSeek V4.1 Flash.
  • Managed models fall back across providers in a fixed order, the default model always has a fallback, and legacy model ids get their model's fallbacks. Third-party endpoints are used only with zero data retention and only from subprocessors in effect.
  • Reasoning variants reach the model on the pi harness, and pi decides shell permissions command by command.
  • When a managed model's provider fails, the session stays on the fallback instead of retrying the failed provider on every request.
  • Model-switch notices sit above the turn's work, one row per run of identical switches.

Self-host

  • Platinum is the default sandbox provider. Daytona remains as a legacy fallback. E2B support is removed.

Fixed

  • Members of MFA accounts can open project-wide Apps. Reminders move under Customize.
  • Signed-out devices stop getting push notifications.
  • Connecting an MCP server whose URL does not answer shows the reason instead of a server error.
  • A ChatGPT login that only failed a model check is no longer marked for reconnection.
  • Plural forms and labels in 9 languages are corrected.
  • Reopening a session paints its saved conversation at once, and older tool calls keep their command.
  • A connector whose stored credential the vendor rejects is marked on the account for reconnection, and the call reports it instead of a server error.
  • Billing emails reach the owners of older accounts, and a notice without a recipient is retried.

Under the hood

  • @kortix/ui: one shared component library for the web app and SDK hosts.
  • With the session log flag on, sessions read and write only the session log; older messages and sub-agent threads come from it.
  • Faster requests: the gateway admits a request in one API round trip, the app shell loads after one auth round trip, project details and secrets no longer wait on a git fetch, member and session reads are indexed, and the session lifecycle queue has its own index.
  • Model catalog seeds refreshed. CI signing and publish fixes for Windows builds.

What's Changed

  • chore(release): staging VERSION → 0.14.3 [skip ci] by @github-actions[bot] in #10253
  • chore(release): VERSION → 0.14.3 [skip ci] by @github-actions[bot] in #10254
  • docs(learnings): check the CI_RUNNER_* pool before reading a red release suite by @markokraemer in #10255
  • chore(catalog): refresh model seeds by @github-actions[bot] in #10256
  • feat(ui): @kortix/ui — one shared component library for apps/web, white-label, Apps and SDK hosts (+ @kortix/ui/chat) by @markokraemer in #10257
  • feat(web): Drive in the sidebar, Repo under Customize, agent drive mounts by @sutharjay1 in #10258
  • fix(push): stop push notifications to signed-out devices by @sutharjay1 in #10063
  • feat(connectors): connectors_v2 — MCP app catalog and app-event triggers on our platform, Kortix OAuth clients, event inbox by @Ino-Bagaric in #10214
  • docs(flags): describe connectors_v2 as the MCP app catalog and Kortix-checked app events by @Ino-Bagaric in #10259
  • feat(mobile): local reminder when a question waits unanswered for 60 s (KRTX-2138) by @sutharjay1 in #10065
  • feat(web): /white-label — build your own AI product on Kortix, on Platinum.dev compute by @markokraemer in #10250
  • fix: Reminders moves under Customize; members of MFA accounts can open project-wide Apps by @markokraemer in #10261
  • fix(web): model-switch notices sit above the turn's work, one row per run of identical switches by @markokraemer in #10262
  • feat(sessions): Recently deleted lists the sessions you can restore, and a restored session keeps its conversation (KRTX-2853) by @Ino-Bagaric in #10260
  • feat(web): a file dropped anywhere on a session page or the project home attaches to the composer (KRTX-2855) by @Ino-Bagaric in #10263
  • fix(capture): replace the dead Launch at login switch with the truth (always starts at login) by @markokraemer in #10265
  • feat(connectors): retire Pipedream — move connectors to Kortix MCP apps, MCP sign-in on every connect path by @Ino-Bagaric in #10266
  • fix(connectors): one fix action on a movable Pipedream connector, accurate CLI move output by @Ino-Bagaric in #10267
  • ci(capture): Authenticode-sign Windows binaries and MSIs via Artifact Signing (inert until configured) by @markokraemer in #10268
  • fix(capture): Windows install line downloads the installer, waits and reports by @markokraemer in #10269
  • ci(desktop): sign Windows installers with Artifact Signing (inert until configured) by @markokraemer in #10270
  • fix(capture): macOS and Linux install lines download the installer by @markokraemer in #10271
  • fix(capture): player shows video for devices linked to no one by @markokraemer in #10272
  • Desktop on Windows: title bar blends with the app, Kortix menu, tile app icon by @markokraemer in #10273
  • fix(web): a new computer starts with every access selected by @markokraemer in #10274
  • feat(connectors): retire Composio — move Composio connectors and their triggers to Kortix MCP apps by @Ino-Bagaric in #10275
  • fix(pi): an agent's variant reaches the gateway as reasoning_effort by @DimitrijeGlibic in #10276
  • fix(download): each deployment serves its own desktop build (dev, staging, stable) by @markokraemer in #10278
  • fix(gateway): managed models try Morph direct, Zen, then OpenRouter; the default model always has its fallback; /health reports upstream capacity by @markokraemer in #10277
  • Computer: grant all access at pairing, a switch for each afterwards; Computer Use on Windows; no console windows; Always is remembered by @markokraemer in #10279
  • fix(gateway): DeepSeek V4.1 Flash and GLM-5.3-Flash try OpenCode Zen first, then Morph direct, then OpenRouter by @markokraemer in #10285
  • fix(gateway): OpenRouter pools = every ZDR endpoint that passed the probes, gated by subprocessor dates; Kimi K3 leaves the lineup by @markokraemer in #10286
  • fix(capture): Windows window opens without admin rights, manual MSI never rolls back, Windows icon by @markokraemer in #10287
  • Windows signing: fix Desktop signing, document the setup; Capture Windows rollout docs by @markokraemer in #10288
  • fix(gateway): a legacy or kortix/-prefixed model id gets its canonical model's fallback chain by @markokraemer in #10289
  • fix(ci): Windows signing works for Kortix Desktop and Kortix Capture by @markokraemer in #10292
  • fix(gateway): Morph direct first, then Zen, then OpenRouter; GLM falls back to DeepSeek; Codex falls back to both by @markokraemer in #10291
  • fix(ci): Desktop Windows signing config passes the schema by @markokraemer in #10293
  • fix(ci): Capture dev publish no longer fails when the tag cannot move by @markokraemer in #10294
  • feat(drive): Drive upload, selection and file-management UX, per-user Drive memory skill by @sutharjay1 in #10264
  • fix(billing): billing emails reach Suna-era account owners; a notice with no recipient is retried by @markokraemer in #10295
  • feat(drive): session folders popover shows Drive folder tiles by @sutharjay1 in #10296
  • fix(billing): Free never reaches a Kortix-managed model; only paid plans do by @markokraemer in #10297
  • fix(mobile): genui renders like web: cards, charts, pies, map place cards and fallbacks, block boundaries by @sutharjay1 in #10298
  • feat(triggers): run limits — max_runs_per_hour (default 60) and max_runs_per_day hold a runaway trigger (KRTX-1721) by @Ino-Bagaric in #10300
  • feat(genui): Generative UI flag on by default by @sutharjay1 in #10301
  • fix(billing): managed models are sold, never given — one invariant, two gates by @markokraemer in #10302
  • feat(notifications): All / Needs you / Done tabs and a badge-glow bell by @sutharjay1 in #10303
  • feat(sdk): session log owns the history when session_log is on (P8.0a) by @DimitrijeGlibic in #10305
  • feat(triggers): Pause all automations — one account switch stops every project’s schedules, webhooks, app events and monitors (KRTX-1721) by @Ino-Bagaric in #10304
  • fix(capture): one app rule on every OS (packaged Windows apps), inactive frames keep their timeline runs by @markokraemer in #10299
  • docs(learnings): Capture app identity and inactive frames by @markokraemer in #10306
  • docs(learnings): fix a recorded timestamp by @markokraemer in #10307
  • fix(pi): decide a bash permission command by command by @DimitrijeGlibic in #10309
  • docs(learnings): decide a shell allowlist per command by @DimitrijeGlibic in #10311
  • feat(sandbox): Platinum is the reference provider; Daytona is a legacy fallback; E2B support removed by @markokraemer in #10310
  • Promote dev 08a6441 to staging by @github-actions[bot] in #10313
  • feat(triggers): filter operators not, in, exists, prefix, not_prefix — a push trigger can skip its own agent's pushes (KRTX-1721) by @Ino-Bagaric in #10312
  • perf(web): the model picker no longer waits on /projects/:id/detail by @markokraemer in #10316
  • fix(security): linear slash trim for Drive ?path=, literal launchd label match by @markokraemer in #10317
  • fix(manifest): a v3 agent that names a retired connector tool gets a warning, not a failed session by @markokraemer in #10318
  • fix(tests): packages-api lane green for v0.14.3 (tests follow #10310, #10297, #10286) by @markokraemer in #10319
  • perf(web): the model picker gate no longer waits on /secrets by @markokraemer in #10320
  • fix(release): v0.14.3 flows — MCP sign-in 400 on unreachable server, side-effect-free ChatGPT probe, GW-MANAGED-1 after Kimi K3 retirement by @markokraemer in #10321
  • fix(tests): core-db lane fixtures follow Platinum default, signed-in push tokens, Morph-served default model by @markokraemer in #10322
  • fix(tests): packages-rest lane green for v0.14.3 — palette rows for Reminders/Repo/Drive, ICU args outside plurals, mobile parity reads @kortix/ui by @markokraemer in #10323
  • feat: session_log on — no v1 transcript table reads or writes (P8.0c–g, P8.1) by @DimitrijeGlibic in #10324
  • chore(worktree): pnpm worktree sweep deletes build output in idle checkouts by @markokraemer in #10325
  • docs(learnings): disk-full Docker wedge and pnpm worktree sweep by @markokraemer in #10326
  • perf(gateway): hold a failed route per session, cache ChatGPT prompts, index the IAM SSO check by @markokraemer in #10327
  • fix(release): session-log reloads paint the kept copy at once, old stripped tool calls keep their command; journeys 10/34/50 follow the new contracts by @markokraemer in #10330
  • test(e2e): journey 34 sub-agent arm waits for the saved steps, opens them in place, then the full view by @markokraemer in #10332
  • Promote dev 72b0843 to staging by @github-actions[bot] in #10334
  • fix(connectors): an upstream 401 to a stored credential is credential_rejected, marked on the account by @markokraemer in #10328
  • perf(db): index the lifecycle claim drain past held prompts; compare auth.users.id as uuid by @markokraemer in #10329
  • perf(gateway): admit a request in one API round trip instead of four by @markokraemer in #10331
  • perf(gateway): evaluate warn budgets at settlement, off the admission path by @markokraemer in #10333
  • perf(api): /detail and /secrets read the warm git mirror instead of waiting on git fetch by @markokraemer in #10335
  • fix(connectors): a rejected stored credential answers 424, not 500 by @markokraemer in #10336
  • test(release): v0.14.3 suite — Codex prompt-cache headers, trigger filter messages, getProject mock by @markokraemer in #10337
  • fix(tests): apps/web release-suite reds for v0.14.3 — ICU-parsed placeholder parity, Telegram row stub, stale secrets-gate pin by @markokraemer in #10338
  • Promote dev 02731ef to staging by @github-actions[bot] in #10339
  • fix(tests): label the new /internal/gateway/admit route for the audit log by @markokraemer in #10340
  • Promote dev f1b62f5 to staging by @github-actions[bot] in #10341
  • perf(api): member read view probes the session per row (EXISTS), 627 ms -> 17 ms by @markokraemer in #10342
  • perf(web): one auth round trip before the app shell, not two; project home shares the sandbox list by @markokraemer in #10344
  • fix(api): projectReadView.where refuses project_sessions.session_id by @markokraemer in #10345
  • docs(audit): regenerate audit-actions.mdx for the /internal/gateway/admit label by @markokraemer in #10346
  • Promote dev d8a86e4 to staging by @github-actions[bot] in #10347
  • perf(lifecycle): back off prompts stuck behind a head that never moves by @markokraemer in #10343
  • fix(web): adopt the saved-copy store before the query client is ready (spec-34 skeleton regression) by @markokraemer in #10349
  • Promote dev 9ae9b3b to staging by @github-actions[bot] in #10350
  • Release v0.14.3 — Capture on Windows, signed installers, Drive, and automation controls by @github-actions[bot] in #10315

Full Changelog: v0.14.2...v0.14.3

Don't miss a new suna release

NewReleases is sending notifications on new releases.