fix: delist UA-gated free models from opencode-free — big-pickle and mimo-v2.5-free 429 every non-opencode client
Live verification (2026-08-21): big-pickle and mimo-v2.5-free return 429 FreeUsageLimitError for ANY User-Agent except the opencode CLI's own 'opencode/latest' — same IP, no cooldown effect, while the other six free models serve our honest HermesAgent UA freely. Hermes sends deliberate attribution headers and does not impersonate other clients, so these two models are broken for our users by policy on OpenCode's side; delist them rather than ship dead picker entries. - opencode-free catalog: 8 -> 6 models (both curated lists) - plugin default_aux_model: big-pickle -> laguna-s-2.1-free (fastest non-gated free model) - keyless predicate keeps big-pickle (it IS free-tier; correct routing if a user enters it manually — they get the relay's own 429, not our 401) E2E: picker shows 6, laguna aux default completes a keyless agent turn.
This commit is contained in:
@@ -559,12 +559,14 @@ _PROVIDER_MODELS: dict[str, list[str]] = {
|
||||
# OpenCode free tier — keyless (no OpenCode account needed). Synced
|
||||
# against live GET /zen/v1/models + anonymous probes (2026-08-21);
|
||||
# deepseek-v4-flash-free delisted (promo ended, now 401s).
|
||||
# big-pickle + mimo-v2.5-free delisted (UA-gated: the relay 429s
|
||||
# FreeUsageLimitError for every client except User-Agent
|
||||
# "opencode/latest"; we send honest Hermes attribution and don't
|
||||
# impersonate other clients — verified 2026-08-21).
|
||||
"opencode-free": [
|
||||
"x-preview-f-free", # "Ox Alpha" stealth model — free, 1M ctx, ZDR
|
||||
"big-pickle",
|
||||
"hy3-free",
|
||||
"laguna-s-2.1-free",
|
||||
"mimo-v2.5-free",
|
||||
"nemotron-3-ultra-free",
|
||||
"nemotron-3.5-lightning-free",
|
||||
"muse-spark-1.2-contributor-free",
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@ _DEFAULT_PROVIDER_MODELS = {
|
||||
"ai-gateway": ["anthropic/claude-opus-4.6", "anthropic/claude-sonnet-4.6", "openai/gpt-5", "google/gemini-3-flash"],
|
||||
"kilocode": ["anthropic/claude-sonnet-5", "anthropic/claude-opus-4.6", "anthropic/claude-sonnet-4.6", "openai/gpt-5.4", "google/gemini-3-pro-preview", "google/gemini-3-flash-preview"],
|
||||
"opencode-zen": ["x-preview-f-free", "gpt-5.6-sol", "gpt-5.4", "gpt-5.3-codex", "claude-opus-5", "claude-sonnet-5", "gemini-3.7-flash", "glm-5.2", "kimi-k3", "minimax-m3"],
|
||||
"opencode-free": ["x-preview-f-free", "big-pickle", "hy3-free", "laguna-s-2.1-free", "mimo-v2.5-free", "nemotron-3-ultra-free", "nemotron-3.5-lightning-free", "muse-spark-1.2-contributor-free"],
|
||||
"opencode-free": ["x-preview-f-free", "hy3-free", "laguna-s-2.1-free", "nemotron-3-ultra-free", "nemotron-3.5-lightning-free", "muse-spark-1.2-contributor-free"],
|
||||
"opencode-go": ["kimi-k3", "kimi-k2.7-code", "kimi-k2.6", "gpt-5.6-luna", "grok-4.5", "glm-5.3", "glm-5.2", "mimo-v2.5-pro", "mimo-v2.5", "minimax-m3", "minimax-m2.7", "qwen3.8-max", "qwen3.7-max", "deepseek-v4-pro", "hy3"],
|
||||
"huggingface": [
|
||||
"Qwen/Qwen3.5-397B-A17B", "Qwen/Qwen3-235B-A22B-Thinking-2507",
|
||||
|
||||
@@ -59,7 +59,9 @@ opencode_free = OpenCodeFreeProfile(
|
||||
display_name="OpenCode Free",
|
||||
description="OpenCode free models — keyless, no account needed",
|
||||
default_headers=dict(_KEYLESS_HEADERS),
|
||||
default_aux_model="big-pickle",
|
||||
# laguna is the fastest non-UA-gated free model; big-pickle 429s every
|
||||
# client except the opencode CLI's own User-Agent (verified 2026-08-21).
|
||||
default_aux_model="laguna-s-2.1-free",
|
||||
)
|
||||
|
||||
register_provider(opencode_free)
|
||||
|
||||
Reference in New Issue
Block a user