v0.9.9

tashfeenahmed/freellmapiv0.9.9Sep 10, 2026by tashfeenahmed

Upgrading?

AI Summary

This release adds first-class adapters for Router9 and Septor Labs, enables response caching for streaming requests, and optimizes routing logic to stop keyless platforms from consuming attempt budgets. It also improves observability by adding an `execution_id` to all chat bodies and a `caller` column to request logs, alongside dashboard accessibility updates.

Key Highlights

  • Router9 and Septor Labs join with full adapter support including key import aliases, key-picker entries, and platform colors.
  • Streaming requests can now be cached and replayed as byte-identical SSE streams when a cache key exists.
  • Keyless platforms no longer consume the attempt budget, ensuring failures only count for candidates with healthy keys.
  • Added `execution_id` to all chat response types (success, cache hits, errors) for better request tracing.
  • Dashboard sign-in gate accessibility improved with proper ARIA labels and mobile viewport support.

New Features

  • Router9 and Septor Labs adapters with key import aliases, key-picker entries, and platform colors.
  • Streaming request caching that stores frames and replays them as SSE with a HIT header.
  • Attempt budget optimization to skip models on keyless platforms before routing.
  • New `execution_id` field returned in completion routes for all states.
  • New `caller` column in the `requests` table from OpenAI, Responses, Messages, and Ollama/Gemini paths.
  • Sign-in gate accessibility improvements including ARIA labels and `min-h-dvh` CSS.

Full Release Notes

## Providers
- **Router9 and Septor Labs** join the router with first-class adapters: key import aliases, key-picker entries, platform colours and account-wide quota observations. Router9 keys are validated with a no-inference probe; Septor responses that come back under a different model identity are rejected as retryable before any substituted content is streamed. (#1194)

## Routing
- **Keyless platforms no longer eat the attempt budget.** Models whose platform has no enabled, healthy key are dropped before the routing walk, so the "all attempts failed" summary and the retry budget only count candidates that could actually run. Pinned models are still tried and still report against their own label. (#1105, thanks @chongjiazhen)

## Cache
- **Streaming requests can hit the response cache.** `stream: true` completions are stored frame by frame in their own store and replayed as byte-identical SSE on a hit, with `X-FreeLLM-Cache: HIT`. Streams are only buffered when a cache key exists, buffering stops at 2 MB, truncated or broken streams are never stored, stream lookups feed the hit-rate counters, and both stores share the one `RESPONSE_CACHE_MAX_ENTRIES` cap. Off by default, as before. (#1099, #1197, thanks @suantea)

## Observability
- **`execution_id` in every chat body.** Both completion routes now return the request's execution id on success, cache hits, idempotency replays and every error body, so a client can quote it against the request log. The `requests` table gains a `caller` column, written by the OpenAI, Responses, Messages, Ollama/Gemini and fusion paths. (#1103, #1196, thanks @suantea)

## Dashboard
- **Sign-in gate accessibility.** Fields are labelled, validation errors are tied to their inputs with `aria-describedby` and announced with `role="alert"`, the desktop session-repair error is announced the same way, and the gate uses `min-h-dvh` so it centres correctly on mobile viewports. Covered by tests. (#1078, #1195, thanks @Kaban15)

## Docs
- Streaming-pipeline, REST API, environment and idempotency pages in `docs/en` and `docs/zh-cn` now describe streaming replay; the observability page documents `execution_id` and `caller`. README credits @Kaban15.

Full changelog: https://github.com/tashfeenahmed/freellmapi/compare/v0.9.8...v0.9.9

---
⭐ Like the free router? [Go Premium](https://freellmapi.co/?utm_source=github&utm_medium=release&utm_campaign=premium&utm_content=v0.9.9#pricing) — the live signed catalog, $19/yr, cancel anytime.

Related Repositories