Skip to content

Releases: logicplanes/kaeso

Kaeso 0.4.2

Choose a tag to compare

@github-actions github-actions released this 25 Oct 03:21
Immutable release. Only release title and notes can be modified.

Organizations add their own providers, keys rotate in one step, hard budgets hold for single requests, and Codex works with more models.

Highlights

  • Custom providers for organizations. Organization admins can add providers such as a self-hosted vLLM, on any API format Kaeso speaks, without waiting for a release. #427
  • Hard budgets refuse over-limit requests. A request that could cross a hard budget or token rate is refused even when it is the only one running. #385
  • One-step API key rotation. Rotate a key in one step, keeping its settings, with the old key working for a grace period you choose, up to seven days. #422
  • Finished streams logged as successful. A stream whose last event reached the app is logged as a success, even when the app closes the connection right after it. #421
  • Codex works with non-OpenAI models. Codex and the ChatGPT desktop app can use Claude, Grok and Mistral models, with namespaced tools and hosted web search translated. #396

Added

  • Organization admins can add custom providers, such as a self-hosted vLLM, Ollama or an internal proxy, on any API format Kaeso speaks. Managing them needs the new providers.custom.manage right, and the custom_providers.enabled and custom_providers.allowed_networks settings control whether they may be used and which networks they may reach. #427
  • API keys and platform keys can be rotated in one step, from the console or the Platform API. The new key keeps the old key's name, owner, access, models and key limits, and the old key keeps working for a grace period of 0, 1, 24 or 168 hours that you choose. #422
  • Request logs, the console and a Server-Timing header show the time Kaeso itself spends on each model request, apart from the provider's time. The log gains overhead_ms and stream_processing_ms columns, and the kaeso_gateway_overhead_seconds metric records the same per provider. #423
  • Codex and the ChatGPT desktop app can use Claude, Grok and Mistral models. Namespaced tools become plain function tools, hosted web search maps to Claude's web search tool, and client metadata stays out of other formats. Claude always searches live, so a Codex setting of cached search is refused for Claude with a hint to set live search or turn search off, and the refusal for Mistral gives the same hint. #396
  • Documentation: The new kaeso-bench crate measures the time and memory Kaeso adds under thousands of concurrent streams, client disconnects and slow clients, end to end over real sockets. Its report gives the Kaeso version, commit, CPU and every parameter with each run. #425

Changed

  • Requirements for the end-to-end suites are now installed in CI with hash checking, so every package is pinned with its hashes. Two advisory fixes update undici to 8.12.3 and crypto-bigint to 0.7.6. #384
  • Diagrams in the documentation sit centred in a framed well with a caption. Kaeso's own parts are drawn in ink, outside services are dashed, and edge labels no longer have lines running through them, with the frame provided by a new Figure component in the UI library. #388
  • On phones, long lines in code blocks wrap with a hanging indent instead of running off the edge, and Copy still copies the code as written. #402
  • The documentation search no longer shows a count beside each group, while the console's pickers and palette keep theirs. #403
  • Table headers can wrap onto several lines with the wrap option of Table.HeaderCell, and the documentation wraps headers longer than 24 characters, so the sign-in comparison fits its column. #405
  • The density option of Table set to compact puts 8px between columns, and the documentation uses it for tables of five or more columns. Wide Configuration and Chinese KPP tables now fit desktop widths, and long type names may break between words. #408
  • Development dependencies in the console, docs and UI library move happy-dom to 21.0.4, which fixes a code injection vulnerability in its ESM compiler. #414
  • On phones, a wide diagram in the documentation opens on the part it is about, the nodes marked in ink, instead of its middle. The Figure component takes a focus option for the share of its width to open on. #418
  • Wrapped code lines keep the indent of the line they continue, so a continued command option sits under its own option. The Platform API error example, the last code block that scrolled on desktop, now wraps at every width. #430
  • Documentation: The diagrams on the introduction, concept, self-hosting and development pages are redrawn to show the install's boundary, each check's statuses and the path of a request. The Upgrades page gains a diagram that links each update result to the step where it happens. #389, #390, #391
  • Documentation: On phones, documentation tables of three or more columns show each row as a list with its labels instead of scrolling sideways. #394
  • Documentation: Console, guide, API, self-hosting and contributor pages are split into shorter sentences and paragraphs, with lists where they listed things. No fact, setting or command changed. #395, #397, #398
  • Documentation: The KPP reference pages read in shorter sentences, with lists for what each codec refuses and drops. The provider profiles and the Chat Completions providers move to a new page, and links to it are updated. #399
  • Documentation: Documentation search shows pages whose title or description match first, then matching sections, then pages that only mention the words. #400
  • Documentation: The changelog is no longer built into the documentation. The sidebar's Changelog link goes to the changelog on the Kaeso website, in the page's language, and old changelog addresses redirect there. #401
  • Documentation: Long code in documentation tables breaks after separators such as slashes, dots and equals signs, so reference tables such as the Platform API routes fit the desktop column. #406
  • Documentation: The two KPP allowlist tables on the cross-format page now fit the desktop width, with scope and origin dialect in one column. #407
  • Documentation: Shell commands and code samples are reformatted to fit the page on desktop, with long commands continuing on the next line after a backslash. The upgrade script names the release address once and checks the hash in two steps. #409
  • Documentation: Markdown, text and plain-text examples wrap like prose at every width instead of scrolling sideways. #410
  • Documentation: On phones, a table column with mostly short values sits beside its labels even when one value is long. #411
  • Documentation: The diagram on the benchmark page runs top to bottom and fits a phone without scrolling. The stream counts in its options table are written as 100, 1,000 and 5,000. #428
  • Documentation: The key rotation example in the Platform API guide names the key's address once, so its command fits the desktop column. #429
  • Documentation: The German and Chinese custom provider examples send the English prompt, so their code matches the other languages. #431
  • Documentation: The Configuration settings tables show each variable and TOML key in one column, so most names stay on one line on desktop and phones, and a table cell can now hold a line break. #432

Fixed

  • A non-streaming Responses request through a ChatGPT plan now returns the reasoning, web search call and message items with their types, as OpenAI does. Before, the items came back without a type. #416
  • A stream whose last event reached the app is logged as a success, even when the app closes the connection right after it. Before, such requests could be logged as client disconnects with status 499, and a provider that closed its stream after the last event could fail the request. #421
  • A stream that ends because the app stopped reading it is logged as client_stalled instead of client_disconnected, and the console and metrics show the new kind. Real disconnects stay client_disconnected. [#424](https://gith...
Read more

Kaeso 0.4.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 16:21
Immutable release. Only release title and notes can be modified.

Fixes ChatGPT tool-call stop reasons, console layouts on phones and desktop, and dark mode and sheets in the UI library.

Highlights

  • ChatGPT tool-call stop reasons. Chat Completions and Messages clients now receive tool_calls and tool_use when a ChatGPT account calls a tool, instead of stop or end_turn. #379
  • Console tables fit their content. Console tables give room to the columns with the most text, so names, models, targets and costs stay readable on phones and desktop. #383
  • Dark mode and phone fixes. Off switches read in dark mode, side sheets fill phone screens, and settings rows and page headers stack cleanly on phones. #380, #381, #382

Changed

  • The Rust workspace moves the p256 crate from 0.13.2 to 0.14.0. Installs need no configuration change. #372
  • The pnpm workspace moves React and React DOM to 19.3.1 and happy-dom to 21.0.3 across the console, docs, showcase and UI library, with their type packages and @tanstack/react-virtual updated alongside. #376
  • UI library: The showcase app moves @astrojs/react to 7.1.0 and @astrojs/mdx to 8.1.0, which raise the minimum Node.js version to 22.22.0 for the showcase. #374, #375

Fixed

  • The QR code keeps its square size beside text, so the Grok sign-in code and the authenticator setup code on Security no longer sit small in a tall box. #377
  • Chat Completions and Messages clients now get finish_reason tool_calls and stop_reason tool_use when a ChatGPT account calls a tool, streamed or not, instead of stop or end_turn. The openai_responses mapping page now describes how the stop reason is derived. #379
  • Project limit meters, audit log filters, the instance organization stat captions, settings page headers and role badges now line up across the console, including on phones. The settings header wraps like the page header, and role badges use one neutral style everywhere. #380
  • Console: Console tables give room to the columns that hold the most text, so names, models, targets and costs stay readable on phones and desktop. The org overview breakdown is now a data table on phones, where it previously ran off screen. #383
  • UI library: Collapsible rows such as Customize and Every right are now plain disclosures without a box or padding, so their chevrons and hints line up with the section around them. #378
  • UI library: Settings rows stack their controls under their text on phones, and ghost buttons at a row's end align with outlined buttons. Chart table toggles get their own line on phones, code blocks fade out at the edge they can scroll to, and pinned table headers run straight to the edge. #381
  • UI library: Off switches read clearly in dark mode, and select and date triggers share the outline of text inputs. Side sheets fill the phone screen, copyable ids keep their copy icon inside the card edge, and picker option counts line up with the values beside them. #382

Contributors: @dvnold

Full changelog · v0.4.0...v0.4.1

Kaeso 0.4.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 11:13
Immutable release. Only release title and notes can be modified.

Adds ChatGPT and experimental Grok accounts as provider keys, and fixes a timing advisory in the gateway's dependencies.

Highlights

  • ChatGPT accounts as provider keys. Organizations can use a ChatGPT account as an OpenAI provider key, so requests draw on its ChatGPT plan instead of an API account. #365, #366, #367
  • Experimental Grok provider key. Grok accounts can be added as an experimental SpaceX provider key where the plan includes API access, relying on xAI's device sign-in. #369
  • Constant-time comparison fix. The gateway moves to ctutils 0.4.4, which fixes a timing advisory affecting encryption and password hashing; no configuration change is needed. #370

Added

  • An organization can add a ChatGPT account as an OpenAI provider key, so a project's requests use the account's ChatGPT plan instead of an OpenAI API account. Sign-in ends with pasting the loopback address the browser lands on, and the account's requests go to OpenAI's plan endpoint, which refuses embeddings and token counts. Its tokens renew before they expire, and an account whose sign-in is revoked shows as signed out until an admin signs it in again. #365, #366, #367
  • Organizations can add a Grok account as an experimental SpaceX provider key, so a project's requests use the account's Grok plan where it includes API access. The key is marked experimental in the console, the Platform API and the documentation, because it relies on xAI's device sign-in rather than a documented contract for third-party apps. A plan without API access is reported as such, and requests are not sent to xAI. #369

Changed

  • Documentation: The repository runs the OpenSSF Scorecard weekly, after pushes to dev and on demand, and the README shows its score. The rsa timing advisory it reports, which no release of that crate fixes and which cannot affect Kaeso, is ignored in osv-scanner.toml with the same reason as in deny.toml, and a test keeps the two files in step. #363, #364

Security

  • The gateway now uses ctutils 0.4.4, which fixes RUSTSEC-2026-0385: a dependency that generated masks and compared values in non-constant time, used by envelope encryption, password hashing and signed tokens. Installs need no configuration change. #370

Contributors: @dvnold

Full changelog · v0.3.9...v0.4.0

Kaeso 0.3.9

Choose a tag to compare

@github-actions github-actions released this 23 Oct 03:41
Immutable release. Only release title and notes can be modified.

Kaeso 0.3.9 adds a shell command for instance admin single sign-on and narrows sign-in again to options that can confirm a recent sign-in.

Highlights

  • Sign-in again offers fewer options. Single sign-on is offered for a recent sign-in only when nothing else can confirm the account, and providers that cannot confirm are dropped. #361
  • Instance admin SSO choice. Operators set the organization whose single sign-on may administer the instance with kaeso instance admin-sso, without editing the database. #360

Breaking

  • Read confirms_sign_in for sends_auth_time, handle cannot_confirm for replaced sso_error codes, and expect sso empty when a password is available. #361

Added

  • The kaeso instance admin-sso command sets the organization whose single sign-on may administer the instance, or clears it with none, from the server's shell. Installs without passwords or sign-in links could not set this before without editing the database. Each change is written to the audit log and applies at once. #360

Changed

  • Documentation: The GitHub release page keeps its tagline, highlights and breaking changes, then lists every changelog entry under its section heading instead of linking to the full changelog. #359

Fixed

  • Sign-in again offers single sign-on only when no password or sign-in link can confirm the account, so people are no longer sent back to a dialog that single sign-on cannot satisfy. A confirmation whose ID token has no auth_time, or a stale one, is refused with the cannot_confirm code, and the provider is no longer offered for recent sign-in. #361

Contributors: @dvnold

Full changelog · v0.3.8...v0.3.9

Kaeso 0.3.8

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:04
Immutable release. Only release title and notes can be modified.

Kaeso 0.3.8 brings newer base images and Compose image versions, updated dependencies, and a fix for toasts that caught clicks meant for nearby buttons.

Highlights

  • Toasts stop blocking nearby buttons. The hover area under a toast no longer intercepts clicks on buttons beside or below it. #358
  • Newer base images. The console, gateway and updater images build on newer Go, Node and distroless bases, and the Compose files pin newer ClickHouse and Mailpit versions. #348, #349, #350
  • Console drops the Redocly dependency. The console generates its API client without a Redocly config of its own, so the Redocly OpenAPI core package is no longer part of its build. #354

Contributors: @dvnold

Full changelog · v0.3.7...v0.3.8

Kaeso 0.3.7

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:53
Immutable release. Only release title and notes can be modified.

Single sign-on starts only after the email, managed accounts open every organization, and the gateway closes several security gaps.

Highlights

  • Organization sign-in links removed. Single sign-on starts only after the email, so a planted link can no longer sign a signed-out browser in to another account. #319
  • Sessions end with their connection. Changing or deleting an SSO connection, or unlinking an account, ends the sessions it signed in, and a revoked session stops at once. #320, #322
  • Nested requests no longer crash. A deeply nested model API request gets 400 instead of aborting the whole gateway, which had dropped every organization's requests and streams. #326
  • Managed accounts sign in everywhere. An SSO sign-in from the managing organization opens all of the person's organizations, and that provider owns the account's address. #337, #339
  • Edge Caddy rebuilt for HTTP/2. The edge and console run a Caddy built with Go 1.26.9 and x/net 0.60.0, which fix six HTTP/2 vulnerabilities. #342

Breaking

  • Organization start links are removed and sign-in starts after the email, so point links and bookmarks at /sign-in instead. #319
  • A model a key may not use now answers 404 like an unknown model instead of 403, so clients that match on 403 must change. #334
  • Metrics listen on loopback by default, so a scraper on another host needs metrics_listen set to a reachable address. #335
  • compose.yaml changed beyond its image versions, so install the release's file by hand and run Compose from the install's folder. #342, #343
  • A reverse proxy of your own is trusted only when named in the trusted proxies setting, since the default trusts loopback and the edge network. #344

Contributors: @dvnold

Full changelog · v0.3.6...v0.3.7

Kaeso 0.3.6

Choose a tag to compare

@github-actions github-actions released this 22 Oct 02:07
Immutable release. Only release title and notes can be modified.

Highlights

  • The sign-in page always asks for the email first, and offers single sign-on only for the organization that verified the email's domain, as large services do.
  • Single sign-on is set up per organization and no longer switched on for the whole install: auth.oidc and KAESO_AUTH_OIDC are gone.
  • An organization's start link (/platform/v1/auth/oidc/start?org=…) goes straight to its identity provider only while Start without a click is on; otherwise it opens the email page and keeps next.
  • auth/methods no longer has sso, and names a provider only after an email or for a start link with Start without a click; instance/settings no longer has sign_in.sso.

Full changelog · v0.3.5...v0.3.6

Kaeso 0.3.5

Choose a tag to compare

@github-actions github-actions released this 21 Oct 18:03
Immutable release. Only release title and notes can be modified.

Kaeso 0.3.5 lowers request body limits, bounds gateway memory, and tightens second-factor, SSO, invitation and project membership rules.

Highlights

  • Lower request body limits. The model API accepts 8 MiB bodies by default instead of 32 MiB, so raise body_limits.model_api for large uploads.
  • Bounded gateway memory. Requests are counted before decoding and translation shares a memory budget set by body_limits.in_flight, so one request can no longer exhaust memory.
  • Second-factor lockout. Wrong second-factor codes now count against the sign-in, and ten in a row stop authenticator codes until a recovery code or email reset.
  • SSO start links need confirmation. An SSO start link no longer signs a browser in by itself when someone is already signed in, and it cannot replace that person's session.
  • Spend budgets refuse unpriced options. Under a spend budget, requests using provider-side tools, MCP servers, search options or service tiers that Kaeso cannot price are refused.

Full changelog · v0.3.4...v0.3.5

Kaeso 0.3.4

Choose a tag to compare

@github-actions github-actions released this 21 Oct 15:39
Immutable release. Only release title and notes can be modified.

The Console's Security page shows single sign-on verification, and sign-in prompts stop offering options an account may not have.

Highlights

  • Verified-address status in Security. The Organization Security page shows whether single sign-on admits only addresses the identity provider marks verified, without opening Edit.
  • Clearer single sign-on sign-in prompts. Sign-in pages for single sign-on sessions no longer offer a password or email link that the account may not have.

Full changelog · v0.3.3...v0.3.4

Kaeso 0.3.3

Choose a tag to compare

@github-actions github-actions released this 21 Oct 14:53
Immutable release. Only release title and notes can be modified.

Kaeso 0.3.3 fixes the changelog so each release's artwork fills its 16:9 frame.

Highlights

  • Changelog artwork fills its frame. Release artwork on the changelog now fills its 16:9 frame instead of sitting between empty bars.

Full changelog · v0.3.2...v0.3.3