Crush
Crush (Charm's terminal coding agent) supports custom OpenAI- and Anthropic-compatible providers through a JSON config file. Define Tempr once and list every model on your allowlist under it — Claude, GPT, Gemini — instead of adding one provider block per vendor.
-
Create a virtual key
In the Portal, create a Gateway virtual key. Keys are prefixed
tvk_and shown once at creation. -
Add a provider key
Gateway is BYOK: add a key for at least one provider from the supported list.
-
Add Tempr as a custom provider
Create or edit
crush.jsonin your project root (or~/.config/crush/crush.jsonglobally):
{
"$schema": "https://charm.land/crush.json",
"providers": {
"tempr": {
"type": "openai-compat",
"base_url": "https://api.temprhq.io/v1",
"api_key": "$TEMPR_API_KEY",
"models": [
{
"id": "anthropic/claude-sonnet-4-5",
"name": "Claude Sonnet 4.5 (via Tempr)",
"context_window": 200000,
"default_max_tokens": 8192
}
]
}
}
}
Crush expands $TEMPR_API_KEY from your shell environment at load time — set it before launching:
export TEMPR_API_KEY="tvk_..."
crush
Model ids
Add one entry per model you want available, using the fully-qualified provider/model form as the id (e.g. anthropic/claude-sonnet-4-5, openai/gpt-5) — the same ids GET /v1/models returns.
What's next
- Authentication & virtual keys — scoping keys with model allowlists, budgets, and rate limits.
- Models, limits & logs — request logs and analytics for everything you send through the gateway.