v0.9.5
tashfeenahmed/freellmapiv0.9.5Sep 3, 2026by tashfeenahmed
AI Summary
This release introduces task-type-aware routing for intelligent or fast responses, adds SQLite persistence for the response cache, and enhances quota management with a new forecast endpoint. It also includes security improvements like a key rotation script and updates to CI/CD workflows.
Key Highlights
- Task-type-aware routing allows users to send `x-freellm-task-type: code` or `chat` to adjust model bandit weights.
- Response cache now supports SQLite persistence to survive restarts (configurable via `RESPONSE_CACHE_PERSIST`).
- New `/v1/quota-forecast` endpoint provides daily remaining headroom per quota pool.
- `/v1/models` endpoint now reports model execution status (ready, needsKey, exhausted).
- A new `rotate-encryption-key` script allows re-encrypting stored secrets.
New Features
- Task-type-aware routing with tunable weight share
- SQLite persistence for response cache
- New `/v1/quota-forecast` endpoint
- Execution status reporting in `/v1/models`
- MCP on/off switch
- Key rotation script
Full Release Notes
## Routing - Task-type-aware routing: send `x-freellm-task-type: code` or `chat` to nudge the bandit weights toward intelligence or speed for that request. Code is also detected from unambiguous markers in the prompt. The `fastest`, `reliable` and `custom` strategies are never adjusted. (#1128) - The share of the weight shift is tunable via `GET/PUT /api/settings/task-weight-share`; `0` turns it off. (#1129) ## Models and quota - `/v1/models` now reports `execution_status` per model (`ready`, `needsKey`, `exhausted`) using the router's own cooldown, rate-window and key-scope checks, and accepts `?execution_status=` as a filter. (#1101) - New `GET /v1/quota-forecast` endpoint: remaining daily headroom per quota pool with a low-balance flag before the UTC reset. (#1111) ## Cache - The response cache can now persist to SQLite so it survives restarts. Opt out with `RESPONSE_CACHE_PERSIST=0`. Only active when the cache itself is enabled, and note that it stores model responses on disk in plaintext. (#1097) - Analytics shows a cache card with hit rate and saved tokens when the cache is on. (#1117) ## MCP - The `/mcp` endpoint has an on/off switch (`GET/PUT /api/settings/enable-mcp`) and a toggle under Keys → agent compatibility. Existing installs stay on; fresh installs start with it off. A disabled server answers 403 on every verb. (#1073) ## Security and operations - `npm run rotate-encryption-key` re-encrypts every stored secret (provider keys, proxy credentials, client profile keys, Fetch Relay token) under a new `ENCRYPTION_KEY`, with `--dry-run`. (#1113) - CI: GitHub Actions bumped to current majors and pinned to full commit SHAs, Dependabot keeps them fresh, server test coverage is reported on the Node 22 leg, and ESLint now runs for the server and CLI workspaces. (#1067, #1118, #1119, #1121) ## Fixes - `setup-opencode` writes `limit.output`, which OpenCode's config schema requires. Shipped as CLI 0.5.1 on npm. (#1055) ## Docs - QwenPaw setup guide in English and Chinese. Thanks @qinghuanandejiangshi. (#1137) Thanks to @suantea and @yfdyh000 for the contributions in this release. Full changelog: https://github.com/tashfeenahmed/freellmapi/compare/v0.9.4...v0.9.5 --- ⭐ Like the free router? [Go Premium](https://freellmapi.co/?utm_source=github&utm_medium=release&utm_campaign=premium&utm_content=v0.9.5#pricing) — the live signed catalog, $19/yr, cancel anytime.