go.bigb.es/claudio

v0.7.0
Doc Versions Source

Variables

var Order = []string{"claude", "deepseek", "mistral", "zai", "zai-coding", "minimax", "kimi", "kimi-api-cn", "kimi-api-intl", "copilot", "nvidia", "openrouter", "ollama", "ollama-cloud", "lmstudio", "vkproxy"}

Order defines the display order of providers.

var Registry = map[string]Provider{
	"deepseek": {
		Name:          "DeepSeek",
		Description:   "DeepSeek Reasoner / V3 via Anthropic-compatible API",
		BaseURL:       "https://api.deepseek.com/anthropic",
		Model:         "deepseek-reasoner",
		SmallModel:    "deepseek-chat",
		SonnetModel:   "deepseek-reasoner",
		OpusModel:     "deepseek-reasoner",
		HaikuModel:    "deepseek-chat",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 128_000,
	},
	"zai": {
		Name:          "z.AI API",
		Description:   "GLM-5 / GLM-4.7 via z.AI (pay-per-token)",
		BaseURL:       "https://api.z.ai/api/anthropic",
		Model:         "glm-5",
		SmallModel:    "glm-4.5-air",
		SonnetModel:   "glm-5",
		OpusModel:     "glm-5",
		HaikuModel:    "glm-4.5-air",
		TimeoutMS:     "3000000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 205_000,
	},
	"zai-coding": {
		Name:          "z.AI Coding",
		Description:   "GLM-5.1 / GLM-5 via z.AI (subscription)",
		BaseURL:       "https://api.z.ai/api/coding/anthropic",
		Model:         "glm-5.1",
		SmallModel:    "glm-4.5-air",
		SonnetModel:   "glm-5.1",
		OpusModel:     "glm-5.1",
		HaikuModel:    "glm-4.5-air",
		TimeoutMS:     "3000000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 205_000,
	},
	"minimax": {
		Name:          "MiniMax",
		Description:   "MiniMax-M2.5 via MiniMax Anthropic gateway",
		BaseURL:       "https://api.minimax.io/anthropic",
		Model:         "MiniMax-M2.5",
		SmallModel:    "MiniMax-M2.5",
		SonnetModel:   "MiniMax-M2.5",
		OpusModel:     "MiniMax-M2.5",
		HaikuModel:    "MiniMax-M2.5",
		TimeoutMS:     "3000000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 205_000,
	},
	"kimi": {
		Name:          "Kimi Code",
		Description:   "Kimi K2.5 / K2 via Kimi Code (International)",
		BaseURL:       "https://api.kimi.com/coding/",
		Model:         "kimi-k2.5",
		SmallModel:    "kimi-k2-turbo-preview",
		SonnetModel:   "kimi-k2.5",
		OpusModel:     "kimi-k2.5",
		HaikuModel:    "kimi-k2-turbo-preview",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 256_000,
	},
	"kimi-api-cn": {
		Name:          "Kimi API (China)",
		Description:   "Kimi via Moonshot Open Platform (api.moonshot.cn)",
		BaseURL:       "https://api.moonshot.cn/v1/",
		Model:         "kimi-k2.5",
		SmallModel:    "kimi-k2-turbo-preview",
		SonnetModel:   "kimi-k2.5",
		OpusModel:     "kimi-k2.5",
		HaikuModel:    "kimi-k2-turbo-preview",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 256_000,
		Compat:        "openai",
	},
	"kimi-api-intl": {
		Name:          "Kimi API (Intl)",
		Description:   "Kimi via Moonshot Open Platform (api.moonshot.ai)",
		BaseURL:       "https://api.moonshot.ai/v1/",
		Model:         "kimi-k2.5",
		SmallModel:    "kimi-k2-turbo-preview",
		SonnetModel:   "kimi-k2.5",
		OpusModel:     "kimi-k2.5",
		HaikuModel:    "kimi-k2-turbo-preview",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 256_000,
		Compat:        "openai",
	},
	"mistral": {
		Name:          "Mistral",
		Description:   "Devstral / Mistral Large via OpenAI-compatible API",
		BaseURL:       "https://api.mistral.ai/v1",
		Model:         "devstral-latest",
		SmallModel:    "devstral-small-latest",
		SonnetModel:   "devstral-latest",
		OpusModel:     "devstral-latest",
		HaikuModel:    "devstral-small-latest",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		Compat:        "openai",
		ContextWindow: 256_000,
	},
	"copilot": {
		Name:          "GitHub Copilot",
		Description:   "Claude via GitHub Copilot",
		BaseURL:       "https://api.githubcopilot.com",
		Model:         "claude-sonnet-4.6",
		SmallModel:    "claude-haiku-4.5",
		SonnetModel:   "claude-sonnet-4.6",
		OpusModel:     "claude-opus-4.6",
		HaikuModel:    "claude-haiku-4.5",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		Compat:        "openai",
		ContextWindow: 200_000,
	},
	"nvidia": {
		Name:          "NVIDIA NIM",
		Description:   "Access NVIDIA NIM models via OpenAI-compatible API",
		BaseURL:       "https://integrate.api.nvidia.com/v1",
		Model:         "nvidia/llama-3.1-nemotron-ultra-253b-v1",
		SmallModel:    "nvidia/llama-3.3-nemotron-super-49b-v1.5",
		SonnetModel:   "nvidia/llama-3.1-nemotron-ultra-253b-v1",
		OpusModel:     "nvidia/llama-3.1-nemotron-ultra-253b-v1",
		HaikuModel:    "nvidia/llama-3.3-nemotron-super-49b-v1.5",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		Compat:        "openai",
		ContextWindow: 128_000,
	},
	"openrouter": {
		Name:          "OpenRouter",
		Description:   "Access multiple models via OpenRouter",
		BaseURL:       "https://openrouter.ai/api/v1",
		Model:         "anthropic/claude-sonnet-4.6",
		SmallModel:    "anthropic/claude-haiku-4.5",
		SonnetModel:   "anthropic/claude-sonnet-4.6",
		OpusModel:     "anthropic/claude-opus-4.6",
		HaikuModel:    "anthropic/claude-haiku-4.5",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		Compat:        "openai",
		ContextWindow: 200_000,
	},
	"vkproxy": {
		Name:          "VK LLM Proxy",
		Description:   "Import models from claude-code-config.zip",
		BaseURL:       "https://llm-proxy.vkteam.ru",
		Model:         "deepseek-reasoner",
		SmallModel:    "deepseek-reasoner",
		SonnetModel:   "deepseek-reasoner",
		OpusModel:     "deepseek-reasoner",
		HaikuModel:    "deepseek-reasoner",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 128_000,
	},
	"ollama": {
		Name:          "Ollama (local)",
		Description:   "Local Ollama with native Anthropic-compatible API",
		BaseURL:       "http://localhost:11434",
		Model:         "qwen3-coder",
		SmallModel:    "qwen3-coder",
		SonnetModel:   "qwen3-coder",
		OpusModel:     "qwen3-coder",
		HaikuModel:    "qwen3-coder",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 32_000,
		NoAuth:        true,
	},
	"ollama-cloud": {
		Name:          "Ollama Cloud",
		Description:   "Cloud models via ollama.com API",
		BaseURL:       "https://ollama.com",
		Model:         "qwen3.5:397b",
		SmallModel:    "devstral-small-2:24b",
		SonnetModel:   "devstral-2:123b",
		OpusModel:     "qwen3.5:397b",
		HaikuModel:    "devstral-small-2:24b",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 32_000,
	},
	"lmstudio": {
		Name:          "LM Studio",
		Description:   "Local LM Studio server with OpenAI-compatible API",
		BaseURL:       "http://localhost:1234/v1",
		Model:         "local-model",
		SmallModel:    "local-model",
		SonnetModel:   "local-model",
		OpusModel:     "local-model",
		HaikuModel:    "local-model",
		TimeoutMS:     "600000",
		AuthEnvVar:    "ANTHROPIC_AUTH_TOKEN",
		ContextWindow: 128_000,
		Compat:        "openai",
		NoAuth:        true,
	},
	"claude": {
		Name:        "Claude (Anthropic)",
		Description: "Native Claude API via Anthropic (passthrough proxy for accounting)",
		BaseURL:     "https://api.anthropic.com",
		Model:       "claude-sonnet-4-6-20250514",
		SmallModel:  "claude-haiku-4-5-20251001",
		SonnetModel: "claude-sonnet-4-6-20250514",
		OpusModel:   "claude-opus-4-6-20250610",
		HaikuModel:  "claude-haiku-4-5-20251001",
		TimeoutMS:   "600000",
		NoAuth:      true,
	},
}
var StaticModels = map[string][]StaticModel{
	"zai":        zaiModels,
	"zai-coding": zaiCodingModels,
	"kimi":       kimiCodeModels,
}

StaticModels maps provider keys to their available models.

Types

T type Plan

src
type Plan struct {
	Key         string // e.g. "api", "coding"
	Name        string // display name, e.g. "API (pay per token)"
	Description string
	BaseURL     string
	Compat      string // optional override; when set, switches the provider's Compat mode
	AuthEnvVar  string // optional override; when set, switches the auth env var
}

Plan describes one billing/access plan for a provider with multiple base URLs.

T type Provider

src
type Provider struct {
	Name        string
	Description string
	BaseURL     string
	Model       string
	SmallModel  string
	SonnetModel string
	OpusModel   string
	HaikuModel  string
	TimeoutMS   string
	// AuthEnvVar is the env var name used for the API key (some use AUTH_TOKEN, some API_KEY).
	AuthEnvVar string
	// Compat is "anthropic" (default) or "openai". When "openai", a local
	// translation proxy is started to convert Anthropic ↔ OpenAI API format.
	Compat string
	// ContextWindow is the model's context window size in tokens.
	// Claude Code assumes 200k by default; when this is smaller,
	// CLAUDE_AUTOCOMPACT_PCT_OVERRIDE is set so compaction triggers before
	// the real limit is hit.
	ContextWindow int
	// NoAuth indicates the provider does not require an API key (e.g. local Ollama).
	NoAuth bool
	// Plans lists alternative billing/access plans with different base URLs.
	// When non-empty, the TUI prompts the user to choose a plan.
	// BaseURL holds the default plan's URL.
	Plans []Plan
}

Provider defines an alternative Claude Code API provider.

T type StaticModel

src
type StaticModel struct {
	ID     string
	Name   string
	Family string
}

StaticModel represents a model available from a provider (no API fetch needed).

Source Files