model_list: # ── Anthropic ────────────────────────────────────────────────── # Sprint 10 Task 1.2 (2026-04-21): Sonnet 4.6 dated-snapshot suffix # `-20250514` was never a valid Claude API ID for the 4.6 family (docs # list plain `claude-sonnet-4-6` as current ID + alias as of 2026-04-21 # per https://platform.claude.com/docs/en/docs/about-claude/models/overview). # Repointed to the plain alias. Migration note: ops/litellm/README.md. # refs sprint-10-brief §1.1 - model_name: claude-sonnet-4-6 litellm_params: model: anthropic/claude-sonnet-4-6 api_key: os.environ/ANTHROPIC_API_KEY - model_name: claude-opus-4-6 litellm_params: model: anthropic/claude-opus-4-6 api_key: os.environ/ANTHROPIC_API_KEY - model_name: claude-haiku-4-5 litellm_params: model: anthropic/claude-haiku-4-5-20251001 api_key: os.environ/ANTHROPIC_API_KEY # Legacy aliases (backwards compat). Both now point to the plain # `claude-sonnet-4-6` alias per Sprint 10 Task 1.2 (see note above). - model_name: claude-3-5-sonnet-20241022 litellm_params: model: anthropic/claude-sonnet-4-6 api_key: os.environ/ANTHROPIC_API_KEY - model_name: anthropic/claude-sonnet-4-6 litellm_params: model: anthropic/claude-sonnet-4-6 api_key: os.environ/ANTHROPIC_API_KEY - model_name: anthropic/claude-opus-4.6 litellm_params: model: anthropic/claude-opus-4-6 api_key: os.environ/ANTHROPIC_API_KEY # ── OpenAI ───────────────────────────────────────────────────── - model_name: gpt-4o litellm_params: model: openai/gpt-4o api_key: os.environ/OPENAI_API_KEY - model_name: gpt-4o-mini litellm_params: model: openai/gpt-4o-mini api_key: os.environ/OPENAI_API_KEY - model_name: o3 litellm_params: model: openai/o3 api_key: os.environ/OPENAI_API_KEY # ── Google Gemini ────────────────────────────────────────────── # Use stable slug (not dated preview). Google deprecated -preview-05-20 # and -preview-06-05 — verified 2026-04-21 via live /v1beta/models list. - model_name: gemini-2.5-pro litellm_params: model: gemini/gemini-2.5-pro api_key: os.environ/GEMINI_API_KEY - model_name: gemini-2.5-flash litellm_params: model: gemini/gemini-2.5-flash api_key: os.environ/GEMINI_API_KEY # ── xAI (Grok) ──────────────────────────────────────────────── - model_name: grok-3 litellm_params: model: xai/grok-3 api_key: os.environ/XAI_API_KEY - model_name: grok-3-mini litellm_params: model: xai/grok-3-mini api_key: os.environ/XAI_API_KEY # ── DeepSeek ─────────────────────────────────────────────────── - model_name: deepseek-chat litellm_params: model: deepseek/deepseek-chat api_key: os.environ/DEEPSEEK_API_KEY - model_name: deepseek-reasoner litellm_params: model: deepseek/deepseek-reasoner api_key: os.environ/DEEPSEEK_API_KEY # ── Perplexity ───────────────────────────────────────────────── - model_name: perplexity-sonar litellm_params: model: perplexity/sonar api_key: os.environ/PERPLEXITY_API_KEY - model_name: perplexity-sonar-pro litellm_params: model: perplexity/sonar-pro api_key: os.environ/PERPLEXITY_API_KEY # ── OpenRouter (fallback to any model) ───────────────────────── - model_name: openrouter/auto litellm_params: model: openrouter/auto api_key: os.environ/OPENROUTER_API_KEY # OpenRouter-routed aliases — usable when native provider key is missing - model_name: claude-opus-4-7-via-openrouter litellm_params: model: openrouter/anthropic/claude-opus-4.7 api_key: os.environ/OPENROUTER_API_KEY - model_name: claude-sonnet-4-6-via-openrouter litellm_params: model: openrouter/anthropic/claude-sonnet-4.6 api_key: os.environ/OPENROUTER_API_KEY # ── Moonshot / Kimi ──────────────────────────────────────────── # Legacy endpoint (kept for backwards compatibility) - model_name: moonshot-v1 litellm_params: model: moonshot/moonshot-v1-128k api_key: os.environ/MOONSHOT_API_KEY # Current Kimi K2 family — routed via OpenRouter because the slugs # moonshotai/kimi-k2.5, kimi-k2-thinking, kimi-k2.6 are all live on # openrouter.ai/api/v1/models (verified 2026-04-21). Native # platform.moonshot.cn slugs differ (kimi-k2-0905 etc) and the API # surface drifts; OR normalizes. - model_name: kimi-k2 litellm_params: model: openrouter/moonshotai/kimi-k2 api_key: os.environ/OPENROUTER_API_KEY - model_name: kimi-k2.5 litellm_params: model: openrouter/moonshotai/kimi-k2.5 api_key: os.environ/OPENROUTER_API_KEY # Reasoning variant (chain-of-thought exposed). Keep ... # tags in message history — see the MiniMax M2.7 note below. - model_name: kimi-k2-thinking litellm_params: model: openrouter/moonshotai/kimi-k2-thinking api_key: os.environ/OPENROUTER_API_KEY # Kimi K2.6 — Moonshot's latest (added 2026-04-21). OR slug verified. - model_name: kimi-k2.6 litellm_params: model: openrouter/moonshotai/kimi-k2.6 api_key: os.environ/OPENROUTER_API_KEY # Native Moonshot fallback (used if OR is rate-limited). The user's # MOONSHOT_API_KEY is registered on the intl tenant (api.moonshot.ai, # NOT api.moonshot.cn — the .cn endpoint returned empty on probe # 2026-04-21). Using `moonshot-v1-auto` instead of pinning to a k2.x # variant: kimi-k2.6 enforces temperature=1 at the API layer, which # breaks generic smoke tests and deterministic eval harnesses. The # `-auto` slug lets Moonshot pick the right variant and accepts # standard temperature ranges. - model_name: kimi-k2-native litellm_params: model: openai/moonshot-v1-auto api_base: https://api.moonshot.ai/v1 api_key: os.environ/MOONSHOT_API_KEY # UI aliases — providers.ts surfaces `kimi-2.5` and `kimi-2.5-thinking` # in the Waggle UI model picker. Route them to the live OR entries so # the UI doesn't 404. - model_name: kimi-2.5 litellm_params: model: openrouter/moonshotai/kimi-k2.5 api_key: os.environ/OPENROUTER_API_KEY - model_name: kimi-2.5-thinking litellm_params: model: openrouter/moonshotai/kimi-k2-thinking api_key: os.environ/OPENROUTER_API_KEY # ── Alibaba / Qwen ──────────────────────────────────────────── # Sprint 10 Task 1.4 (2026-04-21): classic DashScope Model Studio API # key (sk-…) provisioned on the intl tenant. Smoke-verified: target # `qwen3.6-35b-a3b` returns HTTP 200 on # https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions # with reasoning_content populated (thinking mode default on). The # mainland endpoint `dashscope.aliyuncs.com` returns 401 invalid_api_key # — the provisioned key is intl-bound. Failover policy documented in # ops/litellm/README.md §Sprint-10-Task-1.4. # refs sprint-10-brief §1.4 - model_name: qwen-max litellm_params: model: openrouter/qwen/qwen-max api_key: os.environ/OPENROUTER_API_KEY # ── Qwen3.6-35B-A3B canonical + dual-route (primary + fallback) ── # # Canonical alias routes to DashScope-intl direct as primary. The # 3.6-35B slug IS live on the intl tenant (verified 2026-04-21 Sprint # 10 Task 1.4 smoke). Earlier comment asserting the slug was "not live # on any public API" was wrong on the intl tenant — only the mainland # DashScope and OpenRouter catalogs lacked the exact slug. # # Callers should prefer the canonical `qwen3.6-35b-a3b` alias — it # routes to DashScope-intl native, giving us the real 3.6 model # rather than the Qwen3.5-35B-A3B OpenRouter fallback. If DashScope # rate-limits or is unavailable, caller-side retry should fall back # to `qwen3.6-35b-a3b-via-openrouter` (bridge route, one-minor regress # to 3.5 until OR carries 3.6). - model_name: qwen3.6-35b-a3b litellm_params: model: openai/qwen3.6-35b-a3b api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 api_key: os.environ/DASHSCOPE_API_KEY # Explicit DashScope alias (same target, stable naming for operator # scripts that want to pin to DashScope irrespective of canonical # alias flips). - model_name: qwen3.6-35b-a3b-via-dashscope litellm_params: model: openai/qwen3.6-35b-a3b api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 api_key: os.environ/DASHSCOPE_API_KEY # Sprint 12 Task 2 C3 Stage 2 Mini Retry v3 (2026-04-23): -direct suffix # alias expected by the v3 brief §0.2 alias roster. Same route as the # `qwen3.6-35b-a3b-via-dashscope` sibling above, but with the Stage 2 # LOCKED config materialized as explicit LiteLLM params: # - extra_body.enable_thinking: true (per models.json `stage2Config`) # - max_tokens: 16000 (Mini Retry v3 §2.1 — reduced # from v2 64000 to avoid DashScope tail-latency timeouts) # 2026-05-26 fix: 0/15 fail rate at N=160 vs 86.5% Sonnet baseline was # caused by thinking NOT actually defaulting on through this route — # verbose-but-imprecise output failed user_message_checker. Forcing # thinking on at the LiteLLM layer is the durable fix and matches the # stage2Config metadata that always claimed this behavior. - model_name: qwen3.6-35b-a3b-via-dashscope-direct litellm_params: model: openai/qwen3.6-35b-a3b api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 api_key: os.environ/DASHSCOPE_API_KEY max_tokens: 16000 extra_body: enable_thinking: true # OpenRouter bridge — failover when DashScope rate-limits or is # unavailable. Note: OpenRouter's Qwen catalog does NOT have the exact # 3.6-35b-a3b slug — this route lands on qwen3.5-35b-a3b, so it's a # one-minor-version regression. Acceptable for transient failover, # not for primary use. - model_name: qwen3.6-35b-a3b-via-openrouter litellm_params: model: openrouter/qwen/qwen3.5-35b-a3b api_key: os.environ/OPENROUTER_API_KEY # Sibling alias that points to Qwen3.5-35B-A3B directly (no ambiguity). - model_name: qwen3.5-35b-a3b litellm_params: model: openrouter/qwen/qwen3.5-35b-a3b api_key: os.environ/OPENROUTER_API_KEY # ── Mistral ──────────────────────────────────────────────────── - model_name: mistral-large-latest litellm_params: model: mistral/mistral-large-latest api_key: os.environ/MISTRAL_API_KEY - model_name: mistral-small-latest litellm_params: model: mistral/mistral-small-latest api_key: os.environ/MISTRAL_API_KEY - model_name: codestral-latest litellm_params: model: mistral/codestral-latest api_key: os.environ/MISTRAL_API_KEY # ── MiniMax ──────────────────────────────────────────────────── # `abab6.5s-chat` was deprecated by MiniMax (confirmed 2026-04-21 via # 400 "unknown model" response). Repointed to MiniMax-M1, the nearest # current successor. The `minimax-01` alias is preserved for any # callers using the provider.ts UI slug. - model_name: minimax-01 litellm_params: model: openai/MiniMax-M1 api_base: https://api.minimaxi.chat/v1 api_key: os.environ/MINIMAX_API_KEY - model_name: minimax-2.7 litellm_params: model: openai/MiniMax-Text-01 api_base: https://api.minimaxi.chat/v1 api_key: os.environ/MINIMAX_API_KEY # ── GLM / Zhipu ──────────────────────────────────────────────── - model_name: glm-4-plus litellm_params: model: openai/glm-4-plus api_base: https://open.bigmodel.cn/api/paas/v4 api_key: os.environ/ZHIPU_API_KEY - model_name: glm-5 litellm_params: model: openai/glm-5 api_base: https://open.bigmodel.cn/api/paas/v4 api_key: os.environ/ZHIPU_API_KEY # ── Tavily (search — not LLM, but here for completeness) ─────── # Tavily is consumed by Waggle search routes, not LiteLLM. # ── Added for PromptAssembler eval (v4) ──────────────────────── # Spec: docs/specs/PROMPT-ASSEMBLER-V4.md §11.2 # Claude Opus 4.7 — native Anthropic. Plain family alias verified via # /v1/models probe 2026-04-17 (brief's speculative date suffix 20260416 # returned 404; plain alias resolves). - model_name: claude-opus-4-7 litellm_params: model: anthropic/claude-opus-4-7 api_key: os.environ/ANTHROPIC_API_KEY # Gemma 4 31B Dense — OpenRouter (verified live 2026-04-17) - model_name: gemma-4-31b litellm_params: model: openrouter/google/gemma-4-31b-it api_key: os.environ/OPENROUTER_API_KEY # Gemma 4 26B MoE (3.8B active) — OpenRouter # NOTE: live OpenRouter slug is `google/gemma-4-26b-a4b-it` (a4b middle) # vs brief's suggested `gemma-4-26b-it`. Substitution logged 2026-04-17. - model_name: gemma-4-26b-moe litellm_params: model: openrouter/google/gemma-4-26b-a4b-it api_key: os.environ/OPENROUTER_API_KEY # Qwen3-30B-A3B (30B total / 3B active) — OpenRouter # NOTE: live slug is `qwen/qwen3-30b-a3b-instruct-2507` (date-tagged) # vs brief's suggested `qwen3-30b-a3b-instruct`. Substitution logged. - model_name: qwen3-30b-a3b litellm_params: model: openrouter/qwen/qwen3-30b-a3b-instruct-2507 api_key: os.environ/OPENROUTER_API_KEY # ── Qwen3.6-35B-A3B LOCKED decision (2026-04-19) ────────────── # Canonical engine for Waggle Pro/Teams default + KVARK prod + # Track 2 benchmarks (H-42 / H-43 / H-44). Per LOCKED decision: # D:\Projects\PM-Waggle-OS\decisions\2026-04-19-target-model-qwen35b-locked.md # 35B total / 3B active MoE, Apache-2.0, 262K native / 1M YaRN. # Thinking mode default ON, togglable via `enable_thinking: false`. # HF source (verified 2026-04-19): # https://huggingface.co/Qwen/Qwen3.6-35B-A3B # # The canonical `qwen3.6-35b-a3b` routing ENTRY lives above in the # Alibaba/Qwen section (next to its dashscope + openrouter siblings). # DashScope-intl direct is primary as of Sprint 10 Task 1.4 # (2026-04-21). This comment block stays here as the LOCKED decision # memo anchor — do not duplicate the route entry. # ── Added for PromptAssembler v5 eval ────────────────────────── # Spec: v5 brief §11.2. Entries verified live via provider docs on # 2026-04-17. Eval harness runs a slug probe at start and logs any # substitutions. Cost is deliberately high for this run — v5 uses a # 4-model frontier judge ensemble to avoid same-family judge bias # from v4 (Sonnet 4.6 judging Claude candidates). # ── Judge panel (4 frontier models, 4 different labs) ── # Gemini 3.1 Pro — Google's frontier (released Feb 19, 2026) # Current SOTA on GPQA Diamond (94.3%), LMArena #1 (1501 Elo). # Neutral to all candidate families. # # Manifest v5 §5.2 addendum (2026-04-24, Stage 3 rekick): rpm: 20 applied # after §1.3 Gate P+ probe FAIL (24/50 HTTP 429) revealed Google per-model # preview cap of 25 RPM on generate_requests_per_model for this upstream. # 20 < 25 Google cap with 5 RPM margin for burst variance. This is the # single permitted §11 code-freeze exception in v5 per PM P4 path. See # benchmarks/preregistration/manifest-v5-preregistration.md §5.2 and §11. - model_name: gemini-3.1-pro litellm_params: model: gemini/gemini-3.1-pro-preview api_key: os.environ/GEMINI_API_KEY rpm: 20 # Sprint 12 Task 2 C3 Stage 2 Mini Retry v3 (2026-04-23): -preview suffix # alias expected by the v3 brief §0.2 alias roster (judge_tie_breaker). # Same upstream as `gemini-3.1-pro` above — alias name encodes the # "-preview" provenance explicitly for manifest audit clarity. # # Manifest v5 Fold-in 3.5b (2026-04-24): defensive-mirror rpm: 20 applied # here as well because this alias shares the same Google upstream bucket # (`gemini/gemini-3.1-pro-preview` at 25 RPM per-model cap) with the # primary `gemini-3.1-pro` alias (edited in Step 2). Isolation sweep # found non-zero (dormant) references to this alias in repo-wide grep, # so defensive posture per PM brief Fold-in 3.5b decision tree. - model_name: gemini-3.1-pro-preview litellm_params: model: gemini/gemini-3.1-pro-preview api_key: os.environ/GEMINI_API_KEY rpm: 20 # GPT-5.4 — OpenAI's flagship (released Mar 5, 2026) # Strong judgment on structured outputs. Neutral to all candidates. - model_name: gpt-5.4 litellm_params: model: openai/gpt-5.4 api_key: os.environ/OPENAI_API_KEY # GPT-5.4 Pro — stronger variant. Held in reserve as ensemble fallback # per brief §11.2 ("GPT-5.4 Pro optional fallback"). Not called by default. - model_name: gpt-5.4-pro litellm_params: model: openai/gpt-5.4-pro api_key: os.environ/OPENAI_API_KEY # Grok 4.20 — xAI frontier with reasoning toggle (released Mar 31, 2026) # 2M context, lowest hallucination rate on market. Fully outside # Claude/Qwen/Gemma training lineage. - model_name: grok-4.20 litellm_params: model: xai/grok-4.20 api_key: os.environ/XAI_API_KEY # MiniMax M2.7 — SOTA agentic reasoning (released Apr 2026) # 56.22% SWE-Pro, beats Opus 4.6 on agentic benchmarks. Chinese lab, # maximally different training lineage from Western frontier. Per # brief: the existing `minimax-2.7` alias above points to the older # MiniMax-Text-01 endpoint — this new entry routes to the M2.7 API. # Note: MiniMax uses interleaved thinking; keep ... # tags in message history to preserve scoring quality. - model_name: minimax-m2.7 litellm_params: model: openai/MiniMax-M2.7 api_base: https://api.minimaxi.chat/v1 api_key: os.environ/MINIMAX_API_KEY # ── Manifest v6 judge ensemble swap (2026-04-24) ────────────────── # Added under v6 Phase 1 Commit 2 authority on PM ratification of # §1.3g-§1.3h-C sequence closure. v6 supersedes v5 §11 freeze on # litellm-config.yaml (single permitted amendment; Gemini rpm:20 # entry retained above as orphan audit artefact). # Anchor: benchmarks/preregistration/manifest-v6-preregistration.md # v6 selection rationale documented in §0.5 delta log (MD) + judge_ensemble # block (YAML). All v5 aliases retained; v6 additions are orthogonal. # v6 primary_judge_3 — MiniMax M2.7 via OpenRouter. # §1.3h verified: direct routes (api.minimaxi.com + api.minimax.chat v2) # fail 401 on MINIMAX_GROUP_ID + Bearer auth; OR fallback 7/7 parse. # OR catalog slug verified live 2026-04-24: minimax/minimax-m2.7 # @ 196K ctx, $0.30 prompt / $1.20 completion per 1M tokens. - model_name: minimax-m27-via-openrouter litellm_params: model: openrouter/minimax/minimax-m2.7 api_key: os.environ/OPENROUTER_API_KEY # v6 backup_judge — Kimi K2.6 via Moonshot direct. # §1.3g verified: direct route (api.moonshot.ai/v1, intl tenant) stable. # Moonshot catalog verified live 2026-04-24: kimi-k2.6. # Per-instance failover on primary_judge_3 (MiniMax) failure per v6 §5.2 # (API error / parse failure / 60s timeout). If both fail same instance # -> judge_ensemble_fail (evaluator_loss in denominator, §9). # Routed as OpenAI-compatible via api_base override (same pattern as # kimi-k2-native above); LiteLLM's moonshot/ provider prefix not used # because the openai/ prefix + api_base is proven stable per v5 config. - model_name: kimi-k26-direct litellm_params: model: openai/kimi-k2.6 api_base: https://api.moonshot.ai/v1 api_key: os.environ/MOONSHOT_API_KEY # ── Small-model additions for v5 eval (candidate, not judge) ── # Qwen3-30B-A3B Thinking variant — dedicated reasoning mode. # v4 used the instruct variant above; v5's H condition tests this # thinking variant to measure whether reasoning mode flips PA's # benefit direction (the publishable claim if it does). # OpenRouter slug verified 2026-04-17: 131K context. - model_name: qwen3-30b-a3b-thinking litellm_params: model: openrouter/qwen/qwen3-30b-a3b-thinking-2507 api_key: os.environ/OPENROUTER_API_KEY # ── Genspark ─────────────────────────────────────────────────── # Added 2026-04-21. Genspark's gsk-* token is a JWT whose payload # references `claude_big_model` / `claude_middle_model` / `claude_small_model` # fields — i.e. they run a Claude-compatible proxy. Endpoint slug below # is a best-effort based on their public docs; validate with a smoke # call after first use. The user's key is in vault + .env as # GENSPARK_API_KEY but this route is NOT wired into Waggle UI yet. - model_name: genspark-claude litellm_params: model: anthropic/claude-sonnet-4-5-20250929 api_base: https://api.genspark.ai/anthropic/v1 api_key: os.environ/GENSPARK_API_KEY litellm_settings: drop_params: true request_timeout: 120