Skip to content

Busbar

v1.2.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

Published 16d LLM Frameworks
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-gateway anthropic bedrock circuit-breaker claude failover
+13 more
gemini litellm-alternative llm llm-gateway llm-proxy llmops load-balancing openai openrouter-alternative proxy rust sigv4 streaming

ReleasePort's take

Light signal
editorial:auto 11d

Busbar v1.2.0 adds Embeddings, Moderations, Image generation, Audio, and Rerank operations; introduces attempt_timeout_ms for time‑boxed attempts; preserves Logprobs across protocol translations; fixes Gemini streamed thinking leakage; switches to Apache 2.0 licensing.

Why it matters: These feature additions (Embeddings, Moderations, etc.) expand API capabilities while the new attempt_timeout_ms provides a measurable timeout trigger to cap single‑attempt duration and initiate failover on hangs, directly impacting reliability for developers and SREs.

Summary

AI summary

Broad release touches New operations, Verification, Internal, and Titan.

Changes in this release

Feature Medium

Adds Embeddings, Moderations, Image generation, Audio, and Rerank operations.

Adds Embeddings, Moderations, Image generation, Audio, and Rerank operations.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Preserves Logprobs, reasoning/thinking fields, and user/parallel_tool_calls across protocol translations.

Preserves Logprobs, reasoning/thinking fields, and user/parallel_tool_calls across protocol translations.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Adds attempt_timeout_ms to cap single-attempt time and trigger failover on hang.

Adds attempt_timeout_ms to cap single-attempt time and trigger failover on hang.

Source: llm_adapter@2026-07-15

Confidence: low

Feature Low

Changes license to Apache 2.0 for Busbar 1.2.0 and onward.

Changes license to Apache 2.0 for Busbar 1.2.0 and onward.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Low

Introduces `attempt_timeout_ms` to limit attempt duration and trigger failover on hangs.

Introduces `attempt_timeout_ms` to limit attempt duration and trigger failover on hangs.

Source: granite4.1:30b@2026-07-15-audit

Confidence: low

Bugfix Medium

Fixes Gemini streamed thinking leaking into answer text on cross-protocol streams.

Fixes Gemini streamed thinking leaking into answer text on cross-protocol streams.

Source: llm_adapter@2026-07-15

Confidence: high

Full changelog

Busbar 1.2.0

Busbar now speaks more than chat. Five new operations land on top of it, and every one runs through the same lossless translation, pools, failover, and breakers that carried chat: Embeddings, Moderations, Image generation, Audio (transcription, speech-to-English translation, text-to-speech), and Rerank. A Gemini client can call embeddings on a Bedrock backend. An OpenAI client can route images and audio to Gemini. A Cohere client can rerank on Bedrock. Every answer comes back in the caller's own dialect, errors included.

This release also changes the license: Busbar 1.2.0 and onward is Apache 2.0. Permissive, commercial-friendly, with an explicit patent grant and no copyleft obligations.

New operations

  • Embeddings: OpenAI, Bedrock (Titan), Cohere (v2), and Gemini, any dialect in, any of them out. Vectors, token accounting, and errors survive the hop.
  • Moderations: OpenAI surface, translated through the IR.
  • Image generation: OpenAI, Gemini (Imagen), Bedrock (Titan).
  • Audio: transcription, speech-to-English translation, and text-to-speech on OpenAI and Gemini.
  • Rerank: Cohere v2 rerank and Bedrock rerank models, cross-protocol between the two. The wires share a result shape, so translation is exact.
  • Calling an operation a backend does not implement returns a clean 404 in your own protocol's dialect. Never a crash, never a lane penalty.

Reliability: catch the hang

Some providers fail by hanging: the connection opens and response headers never come back, silently eating the whole failover budget. attempt_timeout_ms caps a single attempt's time to response headers; on expiry the attempt counts as a transient breaker failure and the request fails over within the same request. Set it on a model as a default and override it per pool member, so the same model can carry a 10s cap in a batch pool and a 50ms cap in a latency-critical one. It never cuts off a stream that has started answering.

More survives translation

Fields that used to die at the protocol seam now cross it:

  • Logprobs (OpenAI and Gemini), buffered and streaming. The ask travels one way, the per-token data travels back in your own shape, chunk by chunk on streams.
  • Reasoning and thinking, gated per lane. OpenAI reasoning_effort, Anthropic thinking.budget_tokens, and Gemini thinkingBudget translate between each other: numbers copy exactly, words convert through a configurable effort table. Because thinking support is per model, you declare it: reasoning: true on a model or pool member. Without the flag the ask is dropped with a warning and never sent, so a non-reasoning model can never 400 from translation.
  • user and parallel_tool_calls carry between OpenAI and Anthropic (metadata.user_id and tool_choice.disable_parallel_tool_use are the same fields in different spellings).
  • The documented field-survival table in the protocols doc is now measured against real egress capture, not asserted.

Fixed

  • Gemini streamed thinking no longer leaks into answer text on cross-protocol streams. Thought parts stream as proper thinking blocks with balanced framing.

Internal (but load-bearing)

  • The request path is now Router → RequestHandler → OperationHandler → IR: every operation is a small codec over one shared reliability engine, and chat is operation #1 rather than a special case. Adding rerank touched zero lines of routing, failover, or breaker code.
  • Billing is a polymorphic data model (tokens, duration, characters, images, flat units). The pricing engine that turns units into cost lands in 1.3.

Verification

  • 1,775 unit tests, clippy clean.
  • A user-emulating acceptance harness drives a real busbar binary against a six-protocol mock that mimics real providers (native stream framings including AWS eventstream, SigV4 verification, real-capture-modeled payloads): 188/188 offline rows green across translation, streaming, operations, no-handler 404s, reliability (hang/failover/breaker), auth (token and passthrough), governance, and the full admin key lifecycle with exact billing assertions.
  • Live-validated against real providers, including streaming logprobs from a Gemini-dialect client served by OpenAI.

Upgrading

No breaking changes: the HTTP API, configuration schema, and all six wire-protocol contracts are unchanged under Semantic Versioning. New config surface is opt-in only (attempt_timeout_ms, reasoning, limits.reasoning_effort_budgets).

As with every release: binaries for Linux/macOS (Intel and ARM) and Windows (Intel), a CycloneDX SBOM, a build-provenance attestation, and cosign-signed GHCR images. Docker: getbusbar/busbar:1.2.0.

Full detail: CHANGELOG · Docs · The 1.2 post

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Busbar

Get notified when new releases ship.

Sign up free

About Busbar

All releases →

Beta — feedback welcome: [email protected]