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