Repository navigation
Releases: kortix-ai/CompanyOS
Release list
dev-latest
Mutable DEV CLI build for b277886d29686b7687e47faddb07e9e71067366f.
Install: curl -fsSL https://kortix.com/install | KORTIX_CHANNEL=dev bash
Defaults to https://dev-api.kortix.com.
v0.14.19 — Voice calls, an instant project page, and egress without NAT
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(le...
voxl-47bb94ec4d25-kortix.2
voxl (github.com/tembo/voxl, MIT) v0.3.3 at 47bb94ec4d253638c1470eb81906676e1bef4b00, web client rebranded to Kortix Computer, 1 s stall cutoff, built by apps/sandbox/voxl/release.sh for the sandbox image.
v0.14.18 — Discord channel, live case studies, and lighter background load
(release PR body already written)
What's Changed
- perf(api): stop prompt-queue polling and cron prompt stacking, route S3 around the NAT by @markokraemer in #11535
- fix(ci): the dev frontend deploy no longer ships the previous run's build by @markokraemer in #11537
- docs(learnings): a private repo's CI never fails over to billed GitHub-hosted runners by @markokraemer in #11538
- fix(release): v0.14.17 suite fixes for graduated Drive flags, a new route and a new MCP tool by @markokraemer in #11539
- fix(config-releases): a repo back under the archive cap gets its archive at once; CI tests on git 2.45+ by @markokraemer in #11541
- feat(web): case studies go live, one autonomous job per card; /services stays gated by @markokraemer in #11532
- refactor(connectors): KRTX-3950 unify manifest mutations and policy projection by @agent-kortix in #11545
- fix(gateway): prevent caching gateway responses (KRTX-3953) by @agent-kortix in #11546
- KRTX-3955: fix(release): regenerate route catalogs in canonical order by @agent-kortix in #11544
- KRTX-3956: test(mcp): expect project search in the release contract by @agent-kortix in #11547
- test(api): KRTX-3958 preserve real config exports in release mocks by @agent-kortix in #11551
- refactor(api): KRTX-3854 consolidate five cleanup leftovers by @agent-kortix in #11557
- fix(ci): refresh apt indexes before Git bootstrap (KRTX-3960) by @agent-kortix in #11548
- docs(build): regenerate the stale kortix.yaml reference and the learnings index at commit time (KRTX-3954) by @agent-kortix in #11560
- feat(channels): Discord channel on the shared channel core (KRTX-2235) by @Ino-Bagaric in #11561
- test(config): align archive memo coverage (KRTX-3962) by @agent-kortix in #11554
- test(api): preserve config mock exports (KRTX-3975) by @agent-kortix in #11565
- test(api): preserve config exports in four release suites by @agent-kortix in #11564
- test(api): preserve release config mock exports (KRTX-3975) by @agent-kortix in #11568
- fix(audit): distinguish Drive and repository search (KRTX-3972) by @agent-kortix in #11562
- refactor(billing): simplify plan context and remove obsolete token paths (KRTX-3970) by @agent-kortix in #11567
- fix(api): preserve config exports in fixtures (KRTX-3974) by @agent-kortix in #11566
- fix(channels): Discord edge cases: intake retries, channel order, private refusals, and Discord's limits by @Ino-Bagaric in #11572
- chore(release): VERSION → 0.14.18 [skip ci] by @github-actions[bot] in #11575
- chore(release): staging VERSION → 0.14.18 [skip ci] by @github-actions[bot] in #11576
- fix(triggers): a command stuck in running no longer skips a cron trigger for good by @markokraemer in #11577
- fix(my-kortix): My Kortix runs only when kortix.yaml turns it on by @markokraemer in #11578
- feat(ui): agent page gets its left rail back, Agents leads the Customize bar, admin libraries are card grids by @sutharjay1 in #11579
- Promote dev f1653e2 to staging by @github-actions[bot] in #11583
- fix(release): v0.14.18 suite fixes (cherry-pick #11580, #11589) by @markokraemer in #11590
- fix(release): v0.14.18 web suite fixes (cherry-pick #11593) by @markokraemer in #11594
- stage-fix: self-host wildcard certificates and zero-downtime config changes (#11595) by @markokraemer in #11596
- stage-fix: a healthy stateful recreate no longer reports the self-host update degraded (#11598) by @markokraemer in #11601
- fix(release): v0.14.18 generated files for Discord and the kortix-system cap (from #11602) by @markokraemer in #11603
- stage-fix: pin the self-host acme-dns API to one loopback address the SDK-boundary lint allows (#11607) by @markokraemer in #11612
- fix(release): v0.14.18 email channels-view mock knows Discord (cherry-pick #11613) by @markokraemer in #11614
- fix(release): carry self-host sign-in branding (#11615, #11618) to frozen staging by @DimitrijeGlibic in #11620
- fix(release): v0.14.18 audit label for GET /v1/access/branding (cherry-pick #11622) by @markokraemer in #11623
- fix(release): v0.14.18 instance branding SQL qualifies its outer columns (cherry-pick #11628) by @markokraemer in #11630
- fix(release): v0.14.18 cold project pages and Discord gate findings (cherry-pick #11639, #11644) by @markokraemer in #11645
- Release v0.14.18 — Discord channel, live case studies, and lighter background load by @github-actions[bot] in #11587
Full Changelog: v0.14.17...v0.14.18
v0.14.17 — One Drive tree, clearer session starts, and multi-domain self-hosting
One Drive tree, clearer session starts, and multi-domain self-hosting
New
- Browse Drive as one folder tree, with pinned My files and Company folders, project search, and admin access to people's folders. (#11478, #11493)
- See, reply to, and route artifact comments. (#11482)
- See which sandbox image step a session start is waiting on. (#11501)
- Serve a self-hosted instance on multiple domains, move its primary domain in one command, and use domain-aware URLs throughout. (#11526, #11533)
Improved
- Start a new session's turn up to 0.7 seconds sooner. (#11510)
- Read only the git objects each API request needs instead of whole repositories. (#11492)
- Keep sidebar session rows consistent across widths and touch devices. (#11506)
- Guide agents to act before asking and verify before reporting. (#11497)
- Clarify that connecting Codex means connecting your ChatGPT subscription. (#11498)
- Update the website's company positioning and case studies. (#11514, #11500)
Fixed
- Close TUI panels with Esc even when it arrives as meta+Esc. (#11486)
- Avoid quadratic trimming of boot-error output. (#11490)
- Wait for a stateless session volume's last save rather than failing, and recover stuck runtimes before declaring them lost. (#11503, #11502)
- Show the saved prompt on failure cards for agent-created sessions. (#11524)
- Explain which SAML values to update before moving a self-hosted domain. (#11527)
Security
- Reject TRACE and CONNECT requests at the API origin. (#11488)
- Enforce general API edge rate limits and per-credential model request limits at the gateway, with visible credential rate-limit counters. (#11521, #11509, #11520)
Internal
- Add regression coverage for free-tier managed billing refusals and rejected password sign-in. (#11487, #11489)
- Make goal wake-cap tests independent of the UTC hour and wait for background claim deletion in Telegram bot-swap tests. (#11515, #11525)
- Document owner-only automation refusals, project repository access, unique ledger entries, project-volume ownership, stateless-session architecture, runner-swap cleanup, and finite regional sandbox pools. (#11481, #11504, #11505, #11507, #11511, #11512, #11513, #11529)
- Advance development version bookkeeping after releases 0.14.15 and 0.14.16.
What's Changed
- docs(learnings): stop an automation that fails on a refusal only its owner can fix by @DimitrijeGlibic in #11481
- chore(release): VERSION → 0.14.16 [skip ci] by @github-actions[bot] in #11484
- test(api): preserve free-tier managed billing refusal (KRTX-3873) by @agent-kortix in #11487
- fix(tui): Esc closes a panel even when it arrives as meta+Esc by @markokraemer in #11486
- fix(api): reject TRACE and CONNECT at origin (KRTX-3892) by @agent-kortix in #11488
- test(auth): cover rejected password sign-in (KRTX-3881) by @agent-kortix in #11489
- feat(drive): the Drive is one folder tree, admins see people's folders, project search by @markokraemer in #11478
- fix(api): read only the git objects a request needs, not whole repositories by @markokraemer in #11492
- feat(drive): My files and Company sit pinned above the whole Drive tree by @markokraemer in #11493
- KRTX-3920: avoid quadratic boot-error trimming by @agent-kortix in #11490
- fix(agents): act before you ask, verify before you report by @markokraemer in #11497
- fix(my-kortix): "Codex" means connecting the person's ChatGPT subscription by @markokraemer in #11498
- feat(artifacts): artifact comments you can see, reply to and route (KRTX-3894) by @Ino-Bagaric in #11482
- feat(sessions): a session start shows which sandbox image step it waits on and never waits silently by @markokraemer in #11501
- fix(sessions): a stateless session waits out its volume's last save instead of failing by @markokraemer in #11503
- fix(api): recover stuck runtimes before declaring loss (KRTX-3921) by @agent-kortix in #11502
- docs(learnings): plan the next steps for project repository access by @markokraemer in #11504
- docs(learnings): the ledger index lists each entry once by @markokraemer in #11505
- fix(ui): sidebar session rows look the same at every width and on touch by @markokraemer in #11506
- docs(learnings): record the decided target: one Platinum volume per project, git secondary by @markokraemer in #11507
- feat(llm-gateway): limit model requests per credential at the gateway, as the API does by @DimitrijeGlibic in #11509
- docs(learnings): stateless sessions stage 2 design — pi reads its conversation from the session volume by @markokraemer in #11511
- docs(learnings): cancel runs still queued on the old runner label after a runner swap by @DimitrijeGlibic in #11512
- docs(learnings): stateless sessions — the target, where we stand, and the path by @markokraemer in #11513
- feat(web): position Kortix as the cloud-native agent harness for companies by @markokraemer in #11514
- test(cli): KRTX-3941 make goal wake-cap check independent of UTC hour by @agent-kortix in #11515
- fix(session): failure card shows the saved prompt of agent-created sessions by @markokraemer in #11524
- test(channels): the Telegram bot-swap test waits for the background claim delete by @DimitrijeGlibic in #11525
- feat(self-host): serve one instance on several domains and move its domain in one command by @markokraemer in #11526
- fix(self-host): domain move names the SAML values to add to the identity provider first by @markokraemer in #11527
- fix(gateway): expose credential rate-limit counters (KRTX-3935) by @agent-kortix in #11520
- fix(api): KRTX-3932 enforce general edge rate limits by @agent-kortix in #11521
- docs(learnings): every sandbox-provider org gets a finite pool bounded by its region share by @markokraemer in #11529
- feat(web): case studies get a new lineup, drawn marks and minimal copy by @markokraemer in #11500
- chore(release): staging VERSION → 0.14.17 [skip ci] by @github-actions[bot] in #11530
- chore(release): VERSION → 0.14.17 [skip ci] by @github-actions[bot] in #11531
- perf(session): a new session starts its turn up to 0.7 s sooner by @kubet in #11510
- feat(self-host): serve alias domains in full, with URLs that follow the request's domain by @markokraemer in #11533
- Promote dev d34d328 to staging by @github-actions[bot] in #11534
- fix(release): carry #11539 (v0.14.17 suite fixes) to the v0.14.17 candidate by @markokraemer in #11540
- fix(release): carry #11541 (CFG-14, partial-store CI git) to the v0.14.17 candidate by @markokraemer in #11542
- fix(release): carry route catalog ordering repair #11544 to staging by @agent-kortix in #11550
- test(api): KRTX-3958 preserve config exports in frozen staging by @agent-kortix in #11553
- KRTX-3955: carry canonical route catalogs onto frozen staging by @agent-kortix in #11552
- fix(release): carry KRTX-3960 apt bootstrap repair to staging by @agent-kortix in #11558
- fix(release): carry KRTX-3960 Git bootstrap repair to frozen staging by @agent-kortix in #11559
- test(api): preserve release config mock exports on staging (KRTX-3975) by @agent-kortix in #11569
- fix(release): carry search audit labels to staging (KRTX-3972) by @agent-kortix in #11571
- test(release): carry public setup config mock repair to staging by @agent-kortix in #11573
- Release v0.14.17 — One Drive tree, clearer session starts, and multi-domain self-hosting by @github-actions[bot] in #11536
Full Changelog: v0.14.16...v0.14.17
v0.14.16 — Telegram question buttons, steerable agents in the terminal, and free-plan session fixes
New
- Continue full-context sessions from a searchable record instead of a summary (#11428).
- Set up event-driven automations with filters, per-item sessions, caps, dry runs and review (#11430).
- Build event sources as watcher Apps, managed by My Kortix (#11440).
- Apply Files storage limits per project and account, with storage billed in credits (#11435).
- Answer agent questions with Telegram buttons, including several questions at once (#11469).
- See and steer agents, workflows and messages in the terminal interface (#11476).
Improved
- Ask for a session's box up to 1.6 seconds sooner in large projects (#11419).
- Avoid re-sampling every cron trigger on each connector call (#11427).
- Show all sidebar navigation rows directly, without More or Customize sidebar (#11439).
- Help agents understand their microVM, desktop and persistent installs (#11443).
- Pause triggers that can never run and notify their owners (#11477).
- Limit model requests per credential at the LLM gateway, as the API already does (#11509).
Fixed
- Restore even home-page pillars and keep the header switcher clear of Pricing (#11420).
- Stop Settings and Drive from showing a spurious “Not found” toast (#11423).
- Let sessions start when a Files folder cannot mount (#11421).
- Restore session logs when a box wakes before its session lease (#11434).
- Rename the mobile schedules page to Trigger (#11433).
- Hide unlaunched Chrome surfaces to prevent missing-route errors (#11436).
- Match the daemon's Bun version to lockfile v3 (#11437).
- Count every drive's real usage toward Files limits and explain refusals (#11459).
- Allow free-plan sessions to start and show failed-start errors (#11463).
- Enable My Kortix unless explicitly disabled in kortix.yaml (#11464).
- Prevent file listings from restarting the daemon on Bun 1.4 (#11467).
- Keep keyboard focus in terminal chat input and copy dragged text selections (#11470).
Security
- Return consistent 400 responses for malformed gateway messages on every route (#11455).
- Pin sandbox-proxy authorization parity in regression coverage (#11471).
- Trim long session start errors in linear time (#11490).
Internal
- Regenerate the learnings index without duplicate entries (#11424).
- Keep database script-private declarations local (#11429).
- Prepare the next development version, 0.14.15 (88b3618).
- Document boot-time lease-race retries (#11438).
- Mark Goals as work in progress in feature flags (#11441).
- Correct watcher App /tick guidance to use POST (#11442).
- Update session-log switch-gap coverage for context records (#11448).
- Restore summary fixtures in summary-context mode (#11447).
- Refresh the generated UI stylesheet (#11449).
- Monitor worker CPU with SNS alerts (#11452).
- Consolidate the Kortix skill list for Chrome grants (#11453).
- Remove five apps-api cleanup leftovers (#11454).
- Update nightly session-log expectations for context-record capabilities (#11457).
- Correct box-disk SQL, usage-audit labels, storage-charge classification and a file race in release checks (#11461).
- Align billing-tab tests, UI skill exports and the English UI catalog (#11465).
- Keep the GOLD-1 agent from committing before the host's commit-push step (#11472).
- Document generated-file refreshes on staging fixes and runner bind-failure handling (#11479).
- Make the goal wake-cap test independent of the UTC hour (#11515).
- Document cancelling runs still queued on the old runner label after a runner swap (#11512).
What's Changed
- fix(release): v0.14.15 gate — box-disk subquery qualified, drive usage audit labels, storage_charges classified, no file race by @markokraemer in #11461
- fix(sessions): free-plan sessions start, and a failed start shows its error by @DimitrijeGlibic in #11463
- fix(my-kortix): My Kortix is on unless kortix.yaml turns it off; meta_agent flag removed by @markokraemer in #11464
- fix(release): v0.14.15 packages-rest lane — billing tab, UI skill exports, UI en catalog by @markokraemer in #11465
- fix(kortixd): listing files no longer restarts the daemon on Bun 1.4 (FILE-9 503) by @markokraemer in #11467
- feat(channels): every agent question in Telegram shows as buttons, several one at a time (KRTX-2235) by @Ino-Bagaric in #11469
- fix(tui): the chat input keeps the keyboard, and dragging over text copies it by @markokraemer in #11470
- test(flows): GOLD-1 asks the agent not to commit before the host commit-push by @DimitrijeGlibic in #11472
- test(api): KRTX-3842 pin sandbox proxy authorization parity by @agent-kortix in #11471
- feat(tui): agents, workflows and messages you can see and steer by @markokraemer in #11476
- fix(triggers): a trigger that can never run pauses itself and tells its owner by @DimitrijeGlibic in #11477
- docs(learnings): regenerate generated files on stage-fix branches; CI_RUNNER_L off vulcan on bind failure by @DimitrijeGlibic in #11479
- Promote dev 45f53e8 to staging by @github-actions[bot] in #11480
- chore(release): staging VERSION → 0.14.16 [skip ci] by @github-actions[bot] in #11483
- fix(release): carry boot-error CodeQL fix to frozen staging by @agent-kortix in #11495
- KRTX-3920: stage linear boot-error trimming by @agent-kortix in #11496
- test(cli): KRTX-3941 carry UTC-independent goal fixture to staging by @agent-kortix in #11518
- fix(release): KRTX-3941 index only learnings present on staging by @agent-kortix in #11519
- fix(release): carry the gateway per-credential limit (#11509) and #11512 to the v0.14.16 candidate by @DimitrijeGlibic in #11528
- Release v0.14.16 — Telegram question buttons, steerable agents in the terminal, and free-plan session fixes by @github-actions[bot] in #11485
Full Changelog: v0.14.15...v0.14.16
capture-dev-latest
Mutable DEV build of Kortix Capture v0.14.18-dev.74 for 4de4672. It enrolls against https://dev-api.kortix.com by default. Every installer was installed and checked on its OS runner (run 41730921278).
v0.14.15 — Files never block a session, storage limits and storage billing, searchable session continuity
New
- Files storage limits per project and per account, by plan: Free 5 GB, Credits 50 GB per project and 250 GB per account, Enterprise 100 GB per project and 1 TB per account. An upload that does not fit is refused before it starts, with what is used, what it needs and what is left (#11435, #11459).
- Files storage is billed in credits at cost, like compute: project Files, each session's workspace and scratch disks. Billing shows Storage per project next to compute (#11435).
- The Files page shows a project's storage against its limit and warns before a folder is too large to mount in a session (#11435).
- Full contexts continue from the searchable session record instead of a summary (#11428).
- My Kortix can set up event-driven automations with filters, per-item sessions, caps, dry runs, and review (#11430).
- My Kortix can build and retire watcher Apps that post App events (#11440).
Improved
- New sessions in large projects request their box up to 1.6 seconds sooner (#11419).
- Connector calls no longer re-sample every cron trigger (#11427).
- Every sidebar navigation row is directly visible, without More or Customize sidebar (#11439).
- Agents know their microVM, which desktop a request refers to, and how to preserve an installation (#11443).
- Mobile schedules are now named Trigger (#11433).
Fixed
- A Files folder that storage cannot mount no longer prevents a session from starting: the session starts without it, names the folder and why, and mounts it as soon as storage can (#11421, #11435).
- The home pillars band is even again, and the header switcher no longer covers Pricing (#11420).
- Opening Settings or Drive no longer shows a “Not found” toast (#11423).
- Boxes that wake before their session lease restore the session log (#11434).
- Unreleased Kortix in Chrome surfaces are disabled, preventing Chrome endpoint 404s (#11436).
- The daemon's Bun version matches lockfile v3 (#11437).
- A gateway request with no user or assistant message, or a malformed item, gets one 400 on every route (#11455).
- One Kortix skill list, so an agent may be granted kortix-chrome (#11453).
- Listing a folder in a session no longer restarts the session's daemon, so the next file action no longer fails with 503 (#11467).
Security
- The account Files usage list shows only the projects the caller may read (#11435).
Internal
- Stopped-computer disk is metered as storage but not charged;
KORTIX_BOX_DISK_CHARGE_ENABLEDstays off (#11435). - Kortix's own Platinum cost for unattributed volumes and orphan boxes is recorded (#11435).
- Worker CPU is monitored with SNS alerts (#11452).
- The committed UI stylesheet is refreshed from component sources (#11449).
- pi summary fixtures and the session-log switch gaps follow the context record (#11447, #11448, #11457).
- apps-api cleanup sweep (#11454).
- The learnings index lists each entry once, matching its generator (#11424).
- Database script-private declarations stay local (#11429).
- Dev's version advances to 0.14.15 after 0.14.14 (88b3618).
- Boot guidance documents retrying a 401 when wake races the session lease (#11438).
- Goals is marked work in progress in Feature flags (#11441).
- Watcher App guidance specifies POST for /tick (#11442).
- Release-suite repairs: qualified box-disk subquery, Drive usage audit labels,
storage_chargesclassified for purge and transfer, the billing Storage label in the UI catalog, billing tab tests, and a GOLD-1 prompt that leaves the commit to the host (#11461, #11465, #11472).
What's Changed
- perf(api): a new session in a large project asks Platinum for its box up to 1.6 s sooner by @DimitrijeGlibic in #11419
- fix(web): the home pillars band is even again, and the header switcher no longer covers Pricing by @markokraemer in #11420
- fix(sdk): opening Settings or Drive no longer toasts "Not found" by @markokraemer in #11423
- fix(learnings): MEMORY.md lists each entry once, as index.sh generates it by @markokraemer in #11424
- fix(drives): a Files folder storage cannot mount never stops a session from starting by @markokraemer in #11421
- perf(manifest): a connector call no longer re-samples every cron trigger by @DimitrijeGlibic in #11427
- feat(sessions): a full context continues from the searchable record instead of a summary by @markokraemer in #11428
- chore(db): KRTX-3725 keep script-private declarations local by @agent-kortix in #11429
- feat(my-kortix): set up event-driven automations the expert way (filter, one session per thing, caps, dry run, review) by @markokraemer in #11430
- chore(release): staging VERSION → 0.14.15 [skip ci] by @github-actions[bot] in #11431
- chore(release): VERSION → 0.14.15 [skip ci] by @github-actions[bot] in #11432
- fix(kortixd): a box that wakes before its session lease still restores the session log by @DimitrijeGlibic in #11434
- fix(mobile): rename schedules page to Trigger (KRTX-3832) by @agent-kortix in #11433
- fix(web): turn off Kortix in Chrome surfaces until launch (stops /v1/chrome 404s) by @markokraemer in #11436
- docs(learnings): retry a 401 at box boot; a wake races the session lease by @DimitrijeGlibic in #11438
- fix(build): align daemon Bun with lockfile v3 (KRTX-3829) by @agent-kortix in #11437
- feat(web): show every sidebar nav row directly; remove More and Customize sidebar by @markokraemer in #11439
- feat(my-kortix): build your own event sources — watcher Apps that post App events, wired and retired by My Kortix by @markokraemer in #11440
- Mark Goals as work in progress in Feature flags by @markokraemer in #11441
- docs(kortix-system): a watcher App's /tick takes POST (the check POSTs) by @markokraemer in #11442
- feat(agent): agents know their microVM, which desktop "my desktop" means, and how to keep an install by @markokraemer in #11443
- Promote dev 077b490 to staging by @github-actions[bot] in #11444
- test(session-log): include context record in switch gaps (KRTX-3848) by @agent-kortix in #11448
- test(pi): restore summary fixtures in summary context mode (KRTX-3847) by @agent-kortix in #11447
- build(ui): refresh committed stylesheet from component sources (KRTX-3849) by @agent-kortix in #11449
- test(release): carry verified contract and stylesheet fixes onto staging by @agent-kortix in #11451
- fix(infra): monitor worker CPU with SNS alerts (KRTX-3857) by @agent-kortix in #11452
- fix(manifest): one Kortix skill list, so an agent may grant kortix-chrome (KRTX-3640) by @Ino-Bagaric in #11453
- refactor(api): apps-api cleanup sweep, 5 leftovers (KRTX-3790) by @Ino-Bagaric in #11454
- fix(gateway): a request with no user or assistant message, or a malformed item, gets one 400 on every route (KRTX-3421) by @Ino-Bagaric in #11455
- feat(drives): Files storage limits per project and account, and storage billed in credits by @markokraemer in #11435
- test(sessions): the nightly SLOG-4 flow expects the new session.context_record capability by @markokraemer in #11457
- test(release): carry SLOG-4 context-record expectation to staging by @agent-kortix in #11458
- fix(drives): Files limits count every drive's real usage, and a refusal names what the project holds by @markokraemer in #11459
- Promote dev 3e812a4 to staging by @github-actions[bot] in #11460
- fix(release): v0.14.15 gate fixes onto staging (#11461) by @markokraemer in #11462
- fix(release): v0.14.15 packages-rest fixes onto staging (#11465) by @markokraemer in #11466
- fix(release): kortixd survives a list outside a git repo on Bun 1.4 (FILE-9) onto staging (#11467) by @markokraemer in #11468
- fix(release): v0.14.15 UI catalog holds the billing Storage label by @DimitrijeGlibic in #11473
- test(flows): GOLD-1 asks the agent not to commit (onto staging, #11472) by @DimitrijeGlibic in #11474
- fix(release): v0.14.15 learnings index lists only entries on staging by @markokraemer in #11475
- Release v0.14.15 — Files never block a session, storage limits and storage billing, searchable session continuity by @github-actions[bot] in #11445
Full Changelog: v0.14.14...v0.14.15
v0.14.14 — Compaction summaries show once, and steadier deploys
Compaction summaries show once, and steadier deploys
Fixed
- After an automatic compaction, the summary shows once, inside the "Context automatically compacted" marker, instead of a second time below it (#11417).
Improved
- A worker service that scales up from zero waits for its previous deployment to leave before it rolls, so deploys no longer collide (#11413).
- The macOS desktop installer builds on macOS 15 runners, so a release no longer loses it during GitHub's macOS 14 retirement (#11412).
What's Changed
- fix(ci): desktop macOS builds run on macos-15 by @DimitrijeGlibic in #11412
- fix(deploy): a worker roll from 0 waits for the earlier deployment to leave by @DimitrijeGlibic in #11413
- chore(release): VERSION → 0.14.14 [skip ci] by @github-actions[bot] in #11414
- chore(release): staging VERSION → 0.14.14 [skip ci] by @github-actions[bot] in #11415
- docs(learnings): pick a platform binary in a Dockerfile by TARGETARCH by @DimitrijeGlibic in #11416
- fix(kortixd): a compaction summary shows once, inside its marker by @markokraemer in #11417
- Promote dev 09020dc to staging by @github-actions[bot] in #11418
- fix(learnings): MEMORY.md lists each entry once (stage-fix for v0.14.14) by @markokraemer in #11425
- Release v0.14.14 — Compaction summaries show once, and steadier deploys by @github-actions[bot] in #11422
Full Changelog: v0.14.13...v0.14.14
v0.14.13 — Your own Claude subscription, My Kortix teams, and clearer session costs
Your own Claude subscription, My Kortix teams, and clearer session costs
New
- Run Claude models on your own Claude Pro or Max subscription. Sign in under Models → Providers → Anthropic, like ChatGPT; the account is private to you until you share it, and the gateway keeps the token out of the sandbox (#11283, #11322, #11324, #11335, #11349).
- My Kortix runs agents, teams and workflows while you chat, remembers you, reuses its agents, and follows up on its own (#11240, #11255, #11332).
- Agent pages, Project administration, My Kortix, a unified Triggers list and Goals bring work into one place (#10877).
- Upload files of any size to Drive from the web, CLI and API (#11249).
- Add HTML comments and drawn feedback to artifacts, with more reliable document loading (#11196; drawing feedback commit bb8eba3).
- Session usage shows the cost of the session and the sessions it spawned (#11251).
- Background subagents report back to their parent session (#11230).
- The terminal UI shows one session at a time; every action is a slash command, and
/uicomposes the layout (#11250).
Improved
- Scheduled jobs run on their own worker service instead of on the web servers, so a busy job no longer slows requests or scales the API (#11367, #11382).
- A prompt shows in the session the moment it is accepted, under one id (#11259).
- Session titles recover from a failed model, spawned sessions show live, and the agent list card matches the agents line (#11266).
- Mobile and desktop download pages show the shipped apps rather than mockups; mobile is prepared for its next 1.5.4 store build (#11209, #11244).
- Dev sessions and new Files use us-east, with safe file moves between regions (#11213).
- New sessions and prompts avoid refetching large repositories (#11234).
- One unversioned kortix.yaml supports older formats and deprecated keys; edits keep the YAML map order (#11236, #11305).
- The CLI, SDK and web read the session log directly; the CLI removes
sessions connect(#11243, #11263, #11273). - The SDK answers, compacts, runs commands and stops through session-log actions; box log reads return whole pages and show queued prompts (#11238, #11247).
- A release ships a desktop update only when the desktop app changed (#11265).
Fixed
- Escape in the chat input no longer stops a turn accidentally; press Escape three times to stop (#11210).
- Session usage lookups avoid timeouts, and model usage loads in roughly 0.1 seconds rather than up to 25 seconds on long sessions (#11197, #11219).
- A long Claude turn no longer reads as a full context and compacts early (#11369).
- Toasts stay on the session and project on screen (#11328).
- My Kortix keeps a follow-up set with generic text, sets a follow-up without text after one refusal, checks in before your deadline, saves each fact once, and has the same desktop and tools as every session (#11262, #11344, #11347, #11351, #11361).
- A finished background agent shows as a tool row with a glyph (#11272).
- Lumen threads read the session log on current computers (#11270).
- Apps no longer show the manual "Add an App by URL" button (#11359).
- Mobile: Continue with Google lists your accounts in the browser, and workflow details open (#11319, #11380).
- Sign-in shows its welcome once; Terms change notices no longer email every user (#11217, #11220).
- A region move reports a drive deleted mid-run instead of stopping (#11222).
- Session-wide permission approval survives a closed tab, and compact no longer depends on OpenCode routes (#11221).
- The Desktop panel appears only on computers with a desktop; sleeping computers no longer add a notice above the composer (#11223, #11231).
- Reopening the session panel restores its artifact, with a centered header (#11227).
- Dev retains chunks from the last five web builds so open tabs survive deployments (#11228).
- My Kortix sessions no longer wait for a meta image build (#11241).
- CLI
chat --newprints the reply that ends the first turn (#11245). - Manifest healing preserves untouched lines, tool headers explain loading, and web/API edits preserve comments (#11253, #11254).
- Memory saves tolerate missing name, type or body; ask My Kortix about memory rather than opening a separate screen (#11256, #11258).
- The hosted MCP CLI matches the current commands (#11264).
- Japanese and Chinese plurals and every locale catalog are complete (#11373, #11384, #11388, #11405).
Security
- The API rejects malformed JWT signatures (#11336).
- Remove vulnerable minimatch and glob releases and repair the scanner and daemon audit findings (#11386, #11389, #11395).
- Trivy carries the documented decode-uri-component exception consistently (commit 359828a).
Internal
- Remove unused OpenCode daemon code and route session lifecycle, repair, question release and transcripts through Kortix routes (#11218, #11235, #11239).
- Serve session-log actions and live status from the box (#11232).
- Bake shared defaults into every Kortix image (#11233).
- Batch carried merge ancestry checks (#11301).
- Frozen pnpm installs work again after the Claude Agent SDK was added; the daemon installs with its pinned Bun (#11286, #11398, #11402).
- Keep release-suite tests aligned with the shipped product (#11191, #11226, #11252, and the KRTX test fixes).
- Run dev gateway parity and :dev promotion when Terraform is skipped (#11248).
- Document retained Next.js chunks, last-ready image fallbacks, safe secret reads in zsh, and Claude Code usage per call (#11229, #11242, #11246, #11371).
What's Changed
- feat(web): /mobile and /desktop show the shipped apps, not drawn mockups by @markokraemer in #11209
- feat!: agent pages, Project admin, My Kortix, one Triggers list, Goals by @markokraemer in #10877
- fix(session): one Escape in the chat input no longer stops the turn; Esc ×3 does by @markokraemer in #11210
- fix(security): Trivy carries the documented decode-uri-component exception too by @DimitrijeGlibic in #11212
- feat(drives): dev sessions and new Files run in us-east; Files move between regions safely by @DimitrijeGlibic in #11213
- test(channels): the Telegram webhook parity table expects each event's sequence by @DimitrijeGlibic in #11214
- refactor(kortixd): delete the OpenCode-only daemon code no pi box uses by @DimitrijeGlibic in #11218
- fix(db): prevent session usage lookup timeouts (KRTX-2754) by @agent-kortix in #11197
- fix(api): session model usage loads in ~0.1 s instead of up to 25 s on long sessions by @DimitrijeGlibic in #11219
- Artifact comments: HTML anchors and reliable Doc loading by @Ino-Bagaric in #11196
- fix(auth): the sign-in screen says "Welcome to Kortix CompanyOS" once by @markokraemer in #11217
- fix(legal): stop emailing the Terms change notice to every user by @markokraemer in #11220
- fix(drives): a region-move run reports a drive deleted mid-run instead of stopping by @DimitrijeGlibic in #11222
- fix(pi,sdk): "Allow all for this session" holds after the tab closes; compact works without OpenCode routes by @DimitrijeGlibic in #11221
- fix(web): the Desktop panel appears only on a computer that has a desktop by @markokraemer in #11223
- chore(release): staging VERSION → 0.14.13 [skip ci] by @github-actions[bot] in #11224
- chore(release): VERSION → 0.14.13 [skip ci] by @github-actions[bot] in #11225
- test(cli): expect the triggers help to name merged change requests by @markokraemer in #11226
- fix(artifacts): the session panel comes back with its artifact; header centered by @markokraemer in #11227
- fix(web): dev keeps the last 5 builds' chunks so open tabs survive a deploy by @markokraemer in #11228
- docs(learnings): a self-hosted Next.js image must carry earlier builds' chunks by @markokraemer in #11229
- fix(session): a sleeping computer is silent; no "computer is asleep" line over the composer by @markokraemer in #11231
- refactor(sandbox): every Kortix image bakes the same defaults from one place by @markokraemer in #11233
- perf(sessions): new sessions and prompts stop refetching large git repos by @DimitrijeGlibic in #11234
- refactor(api): the session lifecycle reaches the box only over Kortix routes by @DimitrijeGlibic in #11235
- feat(kortixd): the box serves session-log actions and live status (step 1 of removing the OpenCode format) by @DimitrijeGlibic in #11232
- feat(sdk): the SDK answers, compacts, runs commands and stops through the session-log action routes by @DimitrijeGlibic in #11238
- refactor(api): the API stops reading OpenCode box routes for repair, question release and transcripts by @DimitrijeGlibic in #11239
- feat(artifacts): draw feedback for agents (KRTX-3667) by @Ino-Bagaric in #11237
- fix(api): a My Kortix session never waits for the meta image build by @markokraemer in #11241
- docs(learnings): every image a session boots needs a last-ready fallback by @markokraemer i...