New
- Voice calls: call a session's agent from the session or the agent page, with screen share; the chat keeps what was said (flag
voice_call). (#11633, #11665) - Speech-to-text and text-to-speech through the LLM gateway. (#11632)
- Discord sits on the Channels tab like every channel, marks the message the agent works on, and sets up its app with one command. (#11592, #11605)
- Drive: My files by default; shared Drives sit behind the
shared_drivesflag. (#11606) - Self-hosting: new sessions start from a project snapshot in the bundled object storage. (#11626)
- The mobile app ships a new version to both stores on each production release. (#11646)
Improved
- The project page renders at once from a saved config summary instead of reading git. (#11651, #11655)
- Faster session starts and first replies: the daemon boots from bytecode, sessions share proofs across API servers, and boot waits are shorter. (#11574, #11611, #11661)
- The API reaches the internet without NAT processing; GitHub traffic keeps the published egress IPs. (#11584)
- Sender avatars show from the first message, and messages from other agents show in full. (#11604, #11617, #11621)
- Windows Capture records GPU-rendered content such as CAD canvases. (#11647)
- The Guide and Developers docs match the product. (#11627, #11629)
Fixed
- A
kortix.yamlthat is not valid YAML never takes a project down: the project keeps its last valid version, and pushes of a broken file are refused. (#11641) - Self-hosting: TLS wildcard setup accepts only a strictly valid acme-dns account. (#11659)
- A session's stored sandbox URL follows the domain the request came in on. (#11616)
- Old sessions no longer jump into Today after a branch sweep. (#11600)
- Drive members open Drive without a "You cannot open this folder" toast, and the Drive tree shows its files. (#11591, #11635)
- The npm packages publish again from the renamed repository. (#11654)
- Renaming a workspace in Settings saves once, even when a read lags the write. (#11670)
- Agent file previews (web and mobile) and voice call transcripts stay fast on long or repetitive text; a crafted reply could freeze them for seconds. (#11694, #11697)
What's Changed
- perf(infra): the API reaches the internet without NAT processing; GitHub keeps the NAT IPs by @markokraemer in #11584
- fix(my-kortix): My Kortix is on only when kortix.yaml sets my_kortix: true by @markokraemer in #11585
- fix(infra): drop the route-table quota request; both regions are already above it by @markokraemer in #11586
- fix(sessions): a dev box an earlier quick tunnel created is not given prompts it can never answer by @Ino-Bagaric in #11582
- test(api): far-future wire id fixtures sit 40 days ahead, not at ms * 16 by @kubet in #11580
- fix(release): v0.14.18 suite fixes for the My Kortix opt-in starter and the Discord channel by @markokraemer in #11589
- fix(drive): members open Drive without a "You cannot open this folder" toast by @markokraemer in #11591
- fix(release): the home snapshot includes the live case studies; the Discord mock names its bot mention by @markokraemer in #11593
- feat(web): the asset management case study shows every deal evaluated by agents by @markokraemer in #11543
- perf(ttft): cut new-session boot and first-prompt delivery waits by @kubet in #11574
- feat(self-host): wildcard certificates through delegated DNS, zero-downtime config changes by @markokraemer in #11595
- feat: remove warm sessions; a send always creates its session by @DimitrijeGlibic in #11597
- fix(self-host): a healthy stateful recreate no longer reports the update degraded by @markokraemer in #11598
- chore(secrets): store the Drata public API key in the prod env (dotenvx) by @markokraemer in #11599
- fix(api): the branch sweep no longer moves 90-day-old sessions into Today by @markokraemer in #11600
- fix(release): regenerate the ui catalog and styles for Discord; kortix-system back under its 300-line cap by @markokraemer in #11602
- feat(channels): Discord on the Channels tab like every channel, a ⏳/✅ mark on the message the agent works on, and a one-command app setup by @Ino-Bagaric in #11592
- fix(channels): Discord's channels list, its ⏳ cleared after a reaper settle, and @kortix/ui's stale en.ts and styles.css (refused at commit from now on) by @Ino-Bagaric in #11605
- fix(cli): pin the self-host acme-dns API to one loopback address the SDK-boundary lint allows by @markokraemer in #11607
- fix(session): sender avatars show from the first message, so chats never shift by @markokraemer in #11604
- fix(web): staging builds once on Vercel, from the deploy workflow by @DimitrijeGlibic in #11608
- fix(release): the email channels-view test mocks the Discord channel hooks by @markokraemer in #11613
- feat(branding): self-host sign-in page shows the instance's own logo and name by @DimitrijeGlibic in #11615
- fix(api): a session's stored sandbox URL follows the domain the request came in on by @markokraemer in #11616
- fix(session): messages from other agents show in full instead of empty gaps by @markokraemer in #11617
- fix(branding): an operator's own account brands the self-host sign-in page by @DimitrijeGlibic in #11618
- fix(session): agent notices sit close to the work they continue by @markokraemer in #11621
- fix(audit): GET /v1/access/branding has an audit label by @markokraemer in #11622
- docs(learnings): a new API route still misses its audit label by @DimitrijeGlibic in #11624
- feat(drive): my files by default; shared drives behind the shared_drives flag by @markokraemer in #11606
- test(ui): cover incoming peer transcript messages (KRTX-4000) by @agent-kortix in #11619
- fix(edge): the API router stops asking Vercel before every write by @DimitrijeGlibic in #11625
- feat(sales): durable signup and demo events (KRTX-3998) by @agent-kortix in #11610
- docs: the Guide and Developers pages match the product and read plainly by @DimitrijeGlibic in #11627
- fix(branding): the instance branding query qualifies its outer columns by @markokraemer in #11628
- docs: the Guide says what it covers, and the Markdown export renders Expandable by @DimitrijeGlibic in #11629
- fix(sales): KRTX-3998 preserve date-only reconciliation bounds by @agent-kortix in #11631
- feat(llm-gateway): speech-to-text and text-to-speech through Platinum's private audio models by @kubet in #11632
- feat(self-host): new sessions start from a project snapshot in the bundled MinIO by @DimitrijeGlibic in #11626
- feat(session): voice calls with the session's agent, with screen share (flag voice_call) by @kubet in #11633
- fix(web): KRTX-4003 show Drive tree files and preserve chevrons by @agent-kortix in #11635
- fix(api): project pages load in ~3 s on a cold git store instead of timing out by @markokraemer in #11639
- perf(ttft): bytecode daemon, first-prompt env reads during boot, per-box edge budget by @kubet in #11611
- fix(manifest): a kortix.yaml that is not YAML never takes a project down by @markokraemer in #11641
- docs(learnings): batch every file fetch on a partial git store by @markokraemer in #11642
- docs(learnings): a kortix.yaml that is not YAML never lands, and never answers 500 by @markokraemer in #11643
- fix(discord): a Gateway resume goes only to a Discord host; HELLO's heartbeat is bounded by @markokraemer in #11644
- fix(build): the API image builds again: kortixd's build stage copies packages/voice by @markokraemer in #11648
- fix(build): the API and sandbox images copy the voice runtime kortixd bundles by @markokraemer in #11649
- fix(infra): AWS roles trust the renamed CompanyOS repository, so deploys log in again by @markokraemer in #11650
- perf(projects): the project page renders at once and reads a saved config summary, not git by @markokraemer in #11651
- docs(learnings): add the new repository name to the AWS OIDC trust before a rename by @markokraemer in #11652
- chore: name the repository kortix-ai/CompanyOS everywhere by @markokraemer in #11654
- fix(api): the saved config summary is served only when exact, and Secrets, grants and Slack read it too by @markokraemer in #11655
- fix(infra): AWS trusts this repository's immutable OIDC subject by @markokraemer in #11656
- fix(dev): a fresh database migrates again, and every feature flag is named in every locale by @markokraemer in #11657
- feat(mobile): a prod release submits a new app version to both stores by @DimitrijeGlibic in #11646
- fix(capture): Windows frames show GPU-rendered content such as CAD canvases by @markokraemer in #11647
- fix(cli): self-host tls wildcard accepts only a strict acme-dns account by @markokraemer in #11659
- test(ci): a workflow_run follower must pin its branch before it runs a commit by @DimitrijeGlibic in #11658
- fix(api): the API image carries packages/voice/src, so dev sessions start again by @kubet in #11660
- docs(learnings): trust the immutable OIDC subject and move npm Trusted Publishing before a repo rename by @markokraemer in #11662
- chore(release): staging VERSION → 0.14.19 [skip ci] by @github-actions[bot] in #11663
- chore(release): VERSION → 0.14.19 [skip ci] by @github-actions[bot] in #11664
- perf(ttft): session create shares and adopts tip proofs across API processes by @kubet in #11661
- feat(voice): a call starts from the agent page as a session of its own, and its chat stores what was said by @kubet in #11665
- fix(dev): every contract lane green again for v0.14.19 by @markokraemer in #11666
- fix(tests): workflow-run-trust runs under vitest like every tests/unit file by @markokraemer in #11668
- fix(sales): conservative customer truth (KRTX-3998) by @agent-kortix in #11634
- fix(settings): renaming a workspace sends one PATCH, even when a read lags the write by @markokraemer in #11670
- docs(self-host): project snapshots on a server with an external capture store by @DimitrijeGlibic in #11669
- Promote dev 14e68bb to staging by @github-actions[bot] in #11671
- fix(release): v0.14.19 MEMORY-4 reads the My Kortix memory layer (cherry-pick #11676) by @markokraemer in #11680
- fix(release): v0.14.19 GH-17 lock retry and feature-gate test seed (cherry-pick #11684, #11686) by @markokraemer in #11687
- fix(release): v0.14.19 CodeQL high alerts and gitleaks fixture (cherry-pick #11694) by @markokraemer in #11695
- fix(release): v0.14.19 voice hallucination test without ReDoS (cherry-pick #11697) by @markokraemer in #11699
- fix(security): vendor log lines strip line breaks; code-scanning suppressions with reasons (staging v0.14.19) by @agent-kortix in #11703
- Release v0.14.19 — Voice calls, an instant project page, and egress without NAT by @github-actions[bot] in #11674
Full Changelog: v0.14.18...v0.14.19