providers

Pick a provider per profile.

Four first-party APIs plus anything OpenAI-compatible. Bind any agent to any provider — the agent doesn't know. Token accounting stays consistent across all of them.

first-party

Native APIs Ringlet ships with

  • anthropic api.anthropic.com

    Claude Sonnet · Opus · Haiku

    Default for Claude Code, Droid, and OpenCode profiles.

  • openai api.openai.com

    GPT-5 · GPT-4o · o-series

    Default for Codex CLI. Also routable from Grok via /v1/chat/completions shape.

  • minimax api.minimax.io

    MiniMax-Text-01 · M2

    OpenAI-compatible. Useful as a cost-tier fallback for Claude-shaped agents.

openai-compatible

Any gateway with the OpenAI shape

  • openrouter openrouter.ai/api/v1

    300+ models, one key

    Pin a slug per profile; Ringlet still tracks tokens locally.

  • groq api.groq.com/openai/v1

    Llama 3.3 · Qwen · Whisper

    OpenAI-compatible. Cheap, fast inference for tool-light agents.

  • custom any base URL

    anything OpenAI- or Anthropic-shaped

    Add your own provider via a TOML stanza — registry pick-up on next sync.

Adding a custom provider

Drop a TOML file in ~/.config/ringlet/providers/. Ringlet picks it up on next registry sync; the new name shows up in profiles create … --provider <name>.

Anthropic-compatible (Claude wire format)

~/.config/ringlet/providers/my-gateway.toml
name      = "my-gateway"
shape     = "anthropic"
endpoint  = "https://gateway.example.com/anthropic"
key-env   = "MY_GATEWAY_KEY"
default-model = "anthropic/claude-3.5-sonnet"

OpenAI-compatible

~/.config/ringlet/providers/together.toml
name      = "together"
shape     = "openai"
endpoint  = "https://api.together.xyz/v1"
key-env   = "TOGETHER_API_KEY"
default-model = "meta-llama/Llama-3.3-70B-Instruct-Turbo"

Bring-your-own model picker

Each profile can pin a model name that overrides the provider's default. For OpenAI-compatible providers this is the OpenAI model string; for Anthropic-shaped it's the Anthropic model.

terminal
ringlet profiles set fast --model claude-3-5-haiku-20241022
ringlet profiles set deep --model claude-opus-4-20250514

Cost-aware routing (preview)

For more dynamic routing — "send tool-heavy requests to Anthropic, send small completions to Groq" — Ringlet can attach an ultrallm proxy in front of any profile. Rules are TOML.

~/.config/ringlet/profiles/work/routing.toml
[[rule]]
match = { tool-use = true }
to    = "anthropic"

[[rule]]
match = { input-tokens-lt = 2000 }
to    = "groq"

# fallback
[default]
to = "anthropic"

What about LiteLLM and OpenRouter as Ringlet providers?

Both work great as Ringlet providers — they're downstream of Ringlet, not alternatives. Add LiteLLM as a custom OpenAI-shaped provider pointing at your LiteLLM proxy's URL. Add OpenRouter the same way (it's already in the first-party list, no TOML needed). Ringlet handles the agent + isolation + cost-tracking side; LiteLLM/OpenRouter handle the model-routing side.

install

Bind one profile to two providers in 30 seconds.

Set up parallel-account billing, A/B test models, or swap a cheap provider in for low-stakes work — all without touching the agent's own config.