Guides

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.

  1. Create a virtual key

    In the Portal, create a Gateway virtual key. Keys are prefixed tvk_ and shown once at creation.

  2. Add a provider key

    Gateway is BYOK: add a key for at least one provider from the supported list.

  3. Add Tempr as a custom provider

    Create or edit crush.json in your project root (or ~/.config/crush/crush.json globally):

{
  "$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