Creekside Get a key

OpenCode

Tested on 2026-10-11 with OpenCode 2.0.25

OpenCode connects as a custom provider: one block in opencode.json with our base URL, your key and the model.

Base URL
https://api.creeksidecompute.ai/v1
API
OpenAI Chat Completions
Model id
qwen/qwen3.8-27b, or qwen/qwen3.6-35b-a3b for speed, or meta/muse-glimmer-30b, which always reasons first
Context window
131072 tokens, up to 65536 of them output
Key
Make one at creeksidecompute.ai/account

Set it up

  1. Make a key. Sign in at creeksidecompute.ai/account with your email and make a key. Each request is paid from prepaid credit: top up by card from $10, or redeem a promotional code.

  2. Put the key in an environment variable. Add this line to your shell profile (for example ~/.zshrc), then open a new terminal:

    shell
    export CREEKSIDE_API_KEY=<your key>
  3. Add the provider. Put this in ~/.config/opencode/opencode.json to use it in every project, or in a project's opencode.json:

    opencode.json
    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "creekside": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "Creekside",
          "options": {
            "baseURL": "https://api.creeksidecompute.ai/v1",
            "apiKey": "{env:CREEKSIDE_API_KEY}"
          },
          "models": {
            "qwen/qwen3.8-27b": {
              "name": "Qwen3.8 27B",
              "tool_call": true,
              "reasoning": true,
              "limit": { "context": 131072, "output": 32768 },
              "variants": {
                "none": { "reasoningEffort": "none" },
                "low": { "reasoningEffort": "low" },
                "medium": { "reasoningEffort": "medium" },
                "high": { "reasoningEffort": "high" }
              }
            },
            "qwen/qwen3.6-35b-a3b": {
              "name": "Qwen3.6 35B A3B",
              "tool_call": true,
              "reasoning": true,
              "limit": { "context": 131072, "output": 32768 },
              "variants": {
                "none": { "reasoningEffort": "none" },
                "low": { "reasoningEffort": "low" },
                "medium": { "reasoningEffort": "medium" },
                "high": { "reasoningEffort": "high" }
              }
            },
            "meta/muse-glimmer-30b": {
              "name": "Muse Glimmer 30B",
              "tool_call": true,
              "reasoning": true,
              "attachment": true,
              "modalities": { "input": ["text", "image"], "output": ["text"] },
              "limit": { "context": 131072, "output": 32768 },
              "variants": {
                "low": { "reasoningEffort": "low" },
                "medium": { "reasoningEffort": "medium" },
                "high": { "reasoningEffort": "high" }
              }
            }
          }
        }
      },
      "model": "creekside/qwen/qwen3.8-27b"
    }

    limit.context turns on compaction at the right size: OpenCode compacts when the conversation reaches the window less the output limit. The variants are the thinking switch, below. creekside/ is OpenCode's own provider prefix; the model id inside it is qwen/qwen3.8-27b. attachment and modalities let OpenCode send images to Muse Glimmer 30B, which reads them.

  4. Pick the model. The model line makes it the default. Otherwise choose it with /models, or run one prompt and exit: opencode run -m creekside/qwen/qwen3.8-27b "Summarise this repository". For speed, use creekside/qwen/qwen3.6-35b-a3b instead, and for Muse Glimmer 30B, creekside/meta/muse-glimmer-30b.

Thinking

Thinking is off until you pick a variant: with none selected, OpenCode sends no thinking setting. The four variants send reasoning_effort: none keeps thinking off, low, medium and high turn it on. Keep none first: OpenCode uses the first variant for its own small requests, such as session titles.

In the interface, the variant key (ctrl+t by default) cycles through them. In a one-off run, OpenCode 2 takes the variant after a #: opencode run -m creekside/qwen/qwen3.8-27b#high "…"; OpenCode 1 takes --variant high. Add --thinking to print the thinking. Thinking tokens are billed as output.

Muse Glimmer 30B always reasons before it answers, so its variants set how long, not whether: with no variant selected, or at low, it reasons briefly, and medium and high make it reason longer. Its list starts at low for OpenCode's own small requests.

What does not work

  • Images and files, on the Qwen models. They are listed for text only. Muse Glimmer 30B's entry takes images.
  • Model discovery. OpenCode does not read /v1/models; it lists only the models in your opencode.json.
  • Cost display. Without a cost block OpenCode shows no spend. Your bill uses the prices in GET /v1/models.

Troubleshooting

401 invalid API key
OpenCode prints Error: invalid API key, or says a bearer key is required: it reached us without a good key. {env:CREEKSIDE_API_KEY} becomes an empty key when the variable is not set in the shell that started OpenCode. Set it, then restart OpenCode, or run opencode service restart if OpenCode runs in the background. To test the key alone: curl -s https://api.creeksidecompute.ai/v1/models -H "Authorization: Bearer $CREEKSIDE_API_KEY".
404 model … is not served
OpenCode prints Error: model … is not served: the model id is wrong. Each key under models must be a model id exactly: qwen/qwen3.8-27b, qwen/qwen3.6-35b-a3b or meta/muse-glimmer-30b. GET /v1/models lists every id we serve.
400 maximum context length is 131072 tokens
The conversation is longer than the model's window. Keep limit.context at 131072 so OpenCode compacts before the limit, then run /compact or start a new session.
402 or 429
A 402 means your prepaid credit does not cover the request: add credit at creeksidecompute.ai/account. A 429 means the key's rate, or the number of requests your account may run at once, is used up; agents that work in parallel reach that sooner. Wait and retry. The API reference lists the limits.

Other tools

Sources, read on 2026-10-11: providers, config, models and variants.