Releases: lettland/opencode-free-router
Release list
opencode-free-router v0.1.2
- Split the plugin's server closure into named factories
opencode-free-router v0.1.1
-
The code is now TypeScript, type-checked by TypeScript 7 in strict mode, and still ships as source
with no build step: opencode loadsplugin.ts, and Node or Bun runsrank.mts. Node 22.18 or
newer is now required (Bun works as before);install.shrefuses an oldernodeonPATH,
since the plugin starts the ranker with it. -
Upgrading with
install.shreplacesplugin.js,lib.mjsandrank.mjswith the new files and
points thepluginentry of an existingfree.jsoncat./plugin.ts. Nothing else in your files
changes. -
config.json,pins.json,state.json, the ranking and every API response are now checked field
by field when read. A value of the wrong type inconfig.jsonkeeps its default, and malformed
entries inpins.jsonare skipped, where before they could break a ranking run. -
Four more free providers on the
freeTierallowlist, each checked against the provider's own terms
rather than a price of 0: Z.AI and Zhipu AI (the free GLM Flash models, same key for both
endpoints), ModelScope (all of its inference is free, with a 2,000 requests a day quota) and
Mistral (Devstral Small, Codestral and Mistral Small on the free Experiment plan, matched by name
since the catalog prices them).providers.env.exampleand the README list their keys and caveats.
Cloudflare Workers AI, Vercel AI Gateway, Hugging Face and the OpenRouter clone gateways were left
out on purpose, and the README says why. -
A new test keeps
templates/config.example.jsonin step with the shipped defaults. -
A
402 Payment Requirednow fails over like a removed model (24-hour cooldown) instead of being
ignored, so a free-plan account that asks for a model it cannot pay for moves on instead of
retrying a request that can never succeed. -
Tests now run
rank.mjsas a CLI (stubbed network, fakeopencode) andplugin.jsagainst a
fake opencode client, bringing line coverage ofsrc/to 100%. No behavior change; an
unreachable API-key check inrank.mjswas removed. -
The bb agent registered by
install.sh --bbnow lists its model withopencode-free --list-models, which printsfree/autowithout starting opencode. Listing it through opencode
(an ACP probe, oropencode models free) sometimes failed, for example with "database is locked"
while other opencode processes were running, and bb then showed only "Agent default" until a
later refresh happened to succeed. Re-registering keeps fields you set on the entry by hand, such
asicon, and a failed registration no longer prints the other agents' env values.
opencode-free-router v0.1.0
First public release.
free/automodel for opencode: the plugin swaps it for the best-ranked free model and keeps it
for the whole session.- Ranking from LMArena (agent, webdev, text) and Artificial Analysis (coding, agentic,
intelligence), with stealth-model detection via OpenRouter andpins.jsonoverrides. - Failover on quota, rate limit, removal or refusal: cooldown, next-ranked model, automatic
continue (a visible thread message under bb). - Free providers are an explicit allowlist (Zen, OpenRouter and NVIDIA 0-priced models; Groq,
Cerebras and Google free tiers). Subscription plans that report price 0 are never used. - The plugin refreshes the ranking itself when it is older than 6 hours.
install.sh/uninstall.sh, theopencode-freewrapper, and optional bb agent
registration (--bb).