Kaeso 0.4.2 lets organization admins add their own providers and rotate keys in one step. Hard budgets and token rates now refuse a single request that could cross them, so operators may see more refusals up front. Streams that finished are no longer logged as client disconnects, and request logs, the console and a Server-Timing header show the time Kaeso adds to each request. Codex and the ChatGPT desktop app can use Claude, Grok and Mistral models, and many documentation and console layouts were reworked for phones.
Contributors: @dvnold
Full changes: v0.4.1...v0.4.2(在新标签页中打开)
新增
- 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.manageright, and thecustom_providers.enabledandcustom_providers.allowed_networkssettings 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-Timingheader show the time Kaeso itself spends on each model request, apart from the provider's time. The log gainsoverhead_msandstream_processing_mscolumns, and thekaeso_gateway_overhead_secondsmetric 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-benchcrate 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(在新标签页中打开))
变更
- 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
undicito 8.12.3 andcrypto-bigintto 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
Figurecomponent 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
wrapoption ofTable.HeaderCell, and the documentation wraps headers longer than 24 characters, so the sign-in comparison fits its column. (#405(在新标签页中打开)) - The
densityoption ofTableset 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-domto 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
Figurecomponent takes afocusoption 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(在新标签页中打开))
- On phones, documentation tables of three or more columns show each row as a list with its labels instead of scrolling sideways. (#394(在新标签页中打开))
- 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(在新标签页中打开))
- 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 search shows pages whose title or description match first, then matching sections, then pages that only mention the words. (#400(在新标签页中打开))
- 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(在新标签页中打开))
- 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(在新标签页中打开))
- The two KPP allowlist tables on the cross-format page now fit the desktop width, with scope and origin dialect in one column. (#407(在新标签页中打开))
- 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(在新标签页中打开))
- Markdown, text and plain-text examples wrap like prose at every width instead of scrolling sideways. (#410(在新标签页中打开))
- On phones, a table column with mostly short values sits beside its labels even when one value is long. (#411(在新标签页中打开))
- 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(在新标签页中打开))
- The key rotation example in the Platform API guide names the key's address once, so its command fits the desktop column. (#429(在新标签页中打开))
- The German and Chinese custom provider examples send the English prompt, so their code matches the other languages. (#431(在新标签页中打开))
- 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(在新标签页中打开))
修复
- 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_stalledinstead ofclient_disconnected, and the console and metrics show the new kind. Real disconnects stayclient_disconnected. (#424(在新标签页中打开))
UI library
- On this page marks the section you are reading when you scroll back up, and marks the last section at the bottom of a page. (#393(在新标签页中打开))
- Tables no longer scroll sideways by two pixels when a link ends a text column at the table's edge. (#404(在新标签页中打开))
Documentation
- Long page titles in the documentation sidebar no longer end in an ellipsis, with short navigation labels in English, German and Chinese. (#392(在新标签页中打开))
- A diagram group's title moves along its top edge when an arrow enters the group at its top-left corner, so the arrow is no longer hidden behind the title. (#415(在新标签页中打开))
安全
- Hard spend budgets and token rates refuse a request whose output bound could cross them, even when it is the only request in flight. Password reset is refused where the organization requires SSO, and the Azure wire server address is blocked as a metadata address. (#385(在新标签页中打开))