Skip to content

Add Kunavo provider#3315

Open
cooldk wants to merge 1 commit into
anomalyco:devfrom
cooldk:add-kunavo-provider
Open

Add Kunavo provider#3315
cooldk wants to merge 1 commit into
anomalyco:devfrom
cooldk:add-kunavo-provider

Conversation

@cooldk

@cooldk cooldk commented Jul 17, 2026

Copy link
Copy Markdown

Adds Kunavo — a unified AI gateway to Claude, Gemini, GPT and media models behind one OpenAI-compatible API, with transparent per-token pricing 30–70% under providers' list prices.

  • providers/kunavo/provider.toml — OpenAI-compatible, env = ["KUNAVO_API_KEY"], api = https://api.kunavo.com/v1
  • 10 model TOMLs using base_model inheritance (anthropic / google / openai upstreams) with Kunavo's own [cost] — model ids match GET /v1/models exactly
  • logo.svg — currentColor mono

Compatibility verified today against the live endpoint: streaming ✓, tool calling (streamed tool_call deltas, finish_reason=tool_calls) ✓, stream_options.include_usage ✓, GET /v1/models lists all 10 ids ✓ — tested on both a Gemini and a Claude model.

Machine-readable catalog: https://kunavo.com/llms.txt · Docs: https://kunavo.com/docs/quickstart

Also serves the native Anthropic Messages API on the same key (/v1/messages); this PR registers the OpenAI-compatible surface only.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/kunavo/models/*.toml (all 10 new model files) - Check: Reasoning models must declare reasoning_options reflecting the provider's actual API surface. Why: Each file uses base_model pointing at metadata where reasoning = true (e.g. anthropic/claude-sonnet-5, anthropic/claude-fable-5, openai/gpt-5.5, openai/gpt-5.3-codex, openai/gpt-5.4-mini, google/gemini-2.5-pro, google/gemini-2.5-flash), and that boolean is inherited through the merge — but none of the Kunavo TOMLs define reasoning_options. The schema refinement Must set reasoning_options when reasoning is true (packages/core/src/schema.ts:282) and the AGENTS.md checklist make this a hard merge blocker; bun validate will reject every file. Comparable aggregators serving these same models (OpenRouter, Kilo, Venice) all declare reasoning_options for them. Action: Add a reasoning_options array to each of the 10 files — reasoning_options = [] if Kunavo exposes no verified reasoning control, or the actual effort/toggle/budget_tokens controls Kunavo's API accepts (with a TOML comment documenting the exact request syntax for niche controls, per AGENTS.md).

  • [low] [possible mistake] providers/kunavo/models/*.toml (all 10 [cost] blocks) - Check: Per-token pricing must be supported by a direct provider citation that states what it supports, and cache dimensions should be declared where the provider charges for them. Why: The PR body lists a catalog/docs URL but does not map it to the specific input/output/cache_read values. The Claude models declare cache_read while omitting cache_write, which every comparable Claude provider entry includes (OpenRouter, Kilo, Venice all publish cache_write); the Gemini/GPT models omit cache pricing entirely. These material factual values cannot be reviewed against an unmapped source. Action: Cite Kunavo's pricing source for the per-token costs (e.g., state explicitly that https://kunavo.com/llms.txt provides the pricing used) and confirm whether cache_write (Claude) and cache_read (Gemini/GPT) apply — add them wherever Kunavo charges for those dimensions.

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