v0.9.5

Osmantic/ODSv0.9.5Sep 3, 2026by tashfeenahmed

Upgrading?

AI Summary

Introduces task-type-aware routing for code vs chat, adds a `/v1/quota-forecast` endpoint, enables persistent SQLite caching, and provides an encryption key rotation script. Also adds an MCP endpoint toggle.

Key Highlights

  • Task-type-aware routing with adjustable weight share.
  • New `/v1/quota-forecast` endpoint.
  • Response cache can persist to SQLite.
  • MCP endpoint has an on/off switch.
  • Encryption key rotation script for secrets.

New Features

  • Task-type-aware routing headers and detection.
  • Quota forecast endpoint.
  • Persistent SQLite cache support.
  • MCP toggle setting.
  • npm run rotate-encryption-key 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.

Related Repositories