Skip to content

feat(kenari): add new provider - #457

Open
doedja wants to merge 2 commits into
charmbracelet:mainfrom
kenarihq:feat/kenari-provider
Open

feat(kenari): add new provider#457
doedja wants to merge 2 commits into
charmbracelet:mainfrom
kenarihq:feat/kenari-provider

Conversation

@doedja

@doedja doedja commented Jul 22, 2026

Copy link
Copy Markdown

What

Adds Kenari, an Indonesian LLM gateway with an OpenAI-compatible API, as a provider.

  • internal/providers/configs/kenari.json: 31 chat models (all support tool calling and streaming), generated from the live catalog at GET https://kenari.id/v1/models (public, no auth)
  • Registered in internal/providers/providers.go (alphabetical slot)

Details

  • type: openai-compat, endpoint https://kenari.id/v1, key env $KENARI_API_KEY
  • Costs are set to 0 like copilot and kimi-coding: Kenari bills a local-currency (IDR) wallet per token, so there is no stable USD per-token price to pin. Live pricing is on the models endpoint and https://kenari.id/models
  • context_window, can_reason, reasoning_levels, and supports_attachments come from the same models endpoint
  • Free-tier model variants (:free ids) are excluded, only the stable paid catalog is listed
  • Defaults: claude-sonnet-5 (large) / deepseek-v4-flash (small)

Testing

  • go build ./... and go test ./... pass (41 tests, 22 packages)
  • gofmt clean

Docs: https://kenari.id/docs

@doedja
doedja requested a review from andreynering as a code owner July 22, 2026 15:52
@doedja
doedja force-pushed the feat/kenari-provider branch from e3dd9e7 to 2da51fb Compare August 8, 2026 19:31
@doedja

doedja commented Aug 8, 2026

Copy link
Copy Markdown
Author

Rebased onto current main, and this now ships an updater at cmd/kenari/main.go, registered in .github/workflows/update.yml and the Taskfile, so the model data refreshes on the same schedule as the other providers instead of needing hand maintenance. That was the piece the original version was missing.

Verified locally before pushing: go build ./... and go test -count=1 both clean, and running the updater reproduces the committed internal/providers/configs/kenari.json byte for byte, with a second run producing no change.

Costs are 0 on every entry. The gateway bills a prepaid wallet in Indonesian rupiah, so a USD per-token figure would be invented and would drift with the exchange rate.

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