Skip to content

Add moonshotai/kimi-k3 to the catalog (Fireworks primary) - #838

Merged
aminsamir45 merged 3 commits into
mainfrom
add-kimi-k3
Jul 28, 2026
Merged

Add moonshotai/kimi-k3 to the catalog (Fireworks primary)#838
aminsamir45 merged 3 commits into
mainfrom
add-kimi-k3

Conversation

@aminsamir45

Copy link
Copy Markdown
Contributor

Adds Kimi K3 as a servable, correctly-priced catalog model.

Specs (verified against provider docs, not guessed)

Fireworks upstream ID accounts/fireworks/models/kimi-k3
Price $3.00 in / $0.30 cached / $15.00 out per MTok → CacheReadMultiplier: 0.10
Context window 1,048,576 (native, no beta header)
Max output 131,072
Modalities text + image

OpenRouter (moonshotai/kimi-k3) carries it at the identical $3/$15/$0.30 and is
added 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

  • Not a k2.7 successor. $3/$15 vs $0.95/$4 is a different price class, so both
    stay routable and the generic kimi alias stays pinned to 2.7. Only the explicit
    kimi-k3 alias reaches the new model — an unqualified pin shouldn't silently
    triple in cost.
  • No ImageInputUnsupported. First multimodal Kimi, so it takes the
    ImageInputUnknown zero value (= no restriction) unlike k2.5–k2.7.
  • No internal/router/model.go spec entry. Matches every other Kimi. The
    zero-value ModelSpec is documented-safe and strips capability-gated reasoning
    fields, 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.
  • No cluster-artifact changes. Prod and staging both run
    ROUTER_DEFAULT_STRATEGY=hmm, so routability comes from the HMM roster, not a
    cluster bundle. The one-deployed-model-per-family test is scoped to the latest
    cluster bundle and is unaffected.

Validation

  • go build ./... clean
  • go vet ./... clean
  • go test ./... — 46 packages ok, 0 failures
  • go run ./cmd/genprices regenerated install/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.

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

claude Bot commented Jul 27, 2026

Copy link
Copy Markdown

Claude finished @aminsamir45's task —— View job


.

@greptile-apps

greptile-apps Bot commented Jul 27, 2026

Copy link
Copy Markdown

T-Rex T-Rex Logs

What T-Rex did

  • Ran a focused Go test exercising Kimi K3 OpenAI-compatible and Gemini translation paths; observed the output cap at 8192 instead of the declared 131072, and the runtime catalog shows a 1048576-token context window.
  • Reviewed the verbose test output to confirm the 8192 cap and redacted max token values were consistently reported across both translation paths.
  • Conducted broader contract-validation checks: the full verbose test output contained no package/test failures, Git SHA checks matched before and after, and the accepted max-output-cap exclusion was applied as requested.
  • Archived and linked the reproduction and validation artifacts to support reviewer inspection.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "Add moonshotai/kimi-k3 to the catalog (F..." | Re-trigger Greptile

Comment thread internal/router/catalog/catalog.go
@claude

claude Bot commented Jul 27, 2026

Copy link
Copy Markdown

Claude finished @aminsamir45's task —— View job


  • Run git diff to inspect added Go comments
  • Analyze comment blocks (3+ consecutive lines)
  • No verbose blocks found — no review posted

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

claude Bot commented Jul 28, 2026

Copy link
Copy Markdown

Claude finished @aminsamir45's task —— View job


  • Run git diff to inspect added Go comments
  • Analyze comment blocks (3+ consecutive lines)
  • No verbose blocks found — no review posted

@aminsamir45
aminsamir45 merged commit a50cf98 into main Jul 28, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant