Add moonshotai/kimi-k3 to the catalog (Fireworks primary) - #838
Merged
Conversation
Kimi K3 is a 2.8T-parameter open-weight MoE with a 1M context window and native vision. Fireworks is the primary binding at $3.00/$15.00 per MTok ($0.30 cached reads); OpenRouter carries it at the identical list price and serves as the outage fallback, since no Together endpoint exists yet. It is a separate price class from kimi-k2.7 ($0.95/$4.00), not its successor, so both stay routable and the generic `kimi` alias deliberately stays pinned to 2.7 rather than silently tripling the cost of an unqualified pin. Unlike k2.5-k2.7 this model accepts image parts, so it carries no ImageInputUnsupported marker. It gets no internal/router/model.go spec entry, matching every other Kimi: the zero-value ModelSpec strips capability-gated reasoning fields, which is the safe default for an OpenAI-compat upstream.
|
Claude finished @aminsamir45's task —— View job . |
What T-Rex did
Reviews (1): Last reviewed commit: "Add moonshotai/kimi-k3 to the catalog (F..." | Re-trigger Greptile |
|
Claude finished @aminsamir45's task —— View job
|
resolveOpenAIOverrides clamps an explicit max_tokens to modelMaxOutputTokens[TargetModel], and an absent key's zero value falls back to defaultMaxOutputTokenCap (8192). Kimi K3 accepts 131072 output tokens, so a client asking for more than 8192 was silently truncated ~16x — material for a model whose main use is long agentic edits. The map is keyed by full catalog ID because decision.Model keeps the vendor prefix. Note this fallback still applies to every other OSS row (deepseek, qwen, glm, minimax, earlier kimi); that pre-existing gap is left alone here rather than widened into an unrelated sweep. Regression test asserts 32000 survives; it fails at 8192 without the entry.
|
Claude finished @aminsamir45's task —— View job
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Kimi K3 as a servable, correctly-priced catalog model.
Specs (verified against provider docs, not guessed)
accounts/fireworks/models/kimi-k3CacheReadMultiplier: 0.10OpenRouter (
moonshotai/kimi-k3) carries it at the identical $3/$15/$0.30 and isadded as the outage fallback. Together has no K3 endpoint yet — k2.7 originally
stood on Fireworks alone until an outage argued for a second binding, so this one
gets a fallback day-one.
Notable decisions
stay routable and the generic
kimialias stays pinned to 2.7. Only the explicitkimi-k3alias reaches the new model — an unqualified pin shouldn't silentlytriple in cost.
ImageInputUnsupported. First multimodal Kimi, so it takes theImageInputUnknownzero value (= no restriction) unlike k2.5–k2.7.internal/router/model.gospec entry. Matches every other Kimi. Thezero-value
ModelSpecis documented-safe and strips capability-gated reasoningfields, which is the right default for an OpenAI-compat upstream; inventing an
always-on reasoning spec here is how you get 400s on mid-session switches.
ROUTER_DEFAULT_STRATEGY=hmm, so routability comes from the HMM roster, not acluster bundle. The one-deployed-model-per-family test is scoped to the latest
cluster bundle and is unaffected.
Validation
go build ./...cleango vet ./...cleango test ./...— 46 packages ok, 0 failuresgo run ./cmd/genpricesregeneratedinstall/install.sh+install/cc-statusline.sh(committed); no hand-maintained OpenCode/pi list contains OSS models
Follow-up (separate PRs): WorkWeave gitlink bump + pricing/install-template companions,
then the HMM
maximum-cluster roster add with a neutral prior.