github vava-nessa/free-coding-models v0.5.89

latest releases: v0.5.99, v0.5.98, v0.5.97...
one month ago

Added

  • ๐Ÿงช Smart Model Router v2 engine (built in): the regular router daemon (--daemon-bg, historical port) now runs the hardened v2 engine - same command, same port, same endpoints, existing setups upgrade transparently. A hardened parallel beta ran on port 19380 during development; it is retired by this release. Open the TUI overlay with Shift+V, or use the "Router v2" page in the Web Dashboard (BETA badge on both surfaces).
  • ๐Ÿ›ก๏ธ Content-validated failover: a 200 only counts as a success when the answer holds real content. Empty choices, embedded error objects or content-less replies now fail over to the next model, in both streaming and non-streaming. This closes the biggest v1 blind spot where free providers serving empty 200s were reported as successes.
  • โฑ๏ธ Body-read timeout: a provider that sends headers but trickles (or never sends) the body can no longer hang your coding tool; the read is raced against router.failover.bodyReadTimeoutMs (default 30s) and fails over.
  • ๐Ÿ”ฅ Quota-aware routing: models answering 429 are paused for their Retry-After window and skipped; when every model is paused the client gets a proper 429 + Retry-After instead of a generic 503.
  • โš–๏ธ Blame attribution: client-caused 4xx (bad payload, unsupported fields) fail over but never damage healthy models' circuit breakers, and client disconnects never mark failures.
  • ๐Ÿ’พ Persisted circuit breakers: breaker state survives daemon restarts, with a new amber DEGRADED warning state (60% of the failure threshold) and escalating cooldowns for repeatedly-tripping models.
  • ๐Ÿ” Decision traces: every response carries x-fcm-v2-model, x-fcm-v2-attempts and x-fcm-v2-decision headers, and every request chain (attempts, statuses, skip reasons) is persisted locally and rendered in the TUI overlay and the web page. Routing metadata only: no prompts, no keys.
  • ๐Ÿค– Anthropic /v1/messages support on the v2 port: request, response and SSE stream translation (including tool_use / input_json_delta), so Anthropic-protocol agents can use the router directly.
  • ๐Ÿ“Œ Pinned-model requests: model: "fcm:@provider/modelId" routes to one exact model through the full chain with failover disabled. New Ctrl+T (test selected model) and Ctrl+Shift+T (test all visible models) TUI hotkeys use it to test the real routing path, unlike the direct-to-provider Ctrl+A / Ctrl+U benchmarks.
  • ๐Ÿš‘ Last-resort model: optional router.failover.lastResortModel config gives a designated model one final shot when the whole set fails.
  • โšก Fast first boot: v2 listens before its first probe pass, removing the old first-boot stall where the router port stayed dark for up to ~36 seconds.

Security

  • ๐Ÿ”’ Client x-api-key headers are now stripped before proxying to upstream providers on v2, so the local router token can never leak to a provider.

Fixed

  • ๐Ÿ› Ghost "active requests" no longer accumulate in v2 stats when a request is rejected before routing (v1 leaks one entry per rejected request until restart).

Don't miss a new free-coding-models release

NewReleases is sending notifications on new releases.