1. Step 1: Copy and save the config

    config.yaml
    name: RouterHub
    version: 1.0.0
    schema: v1
    models:
      - name: "RouterHub · Grok 4.7"
        provider: openai
        model: "grok-4.7"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4 Pro"
        provider: openai
        model: "deepseek-v4-pro"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4 Pro Uncensored"
        provider: openai
        model: "deepseek-v4-pro-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4.1 Flash"
        provider: openai
        model: "deepseek-v4.1-flash"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4.1 Flash Uncensored"
        provider: openai
        model: "deepseek-v4.1-flash-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3 Flash"
        provider: openai
        model: "glm-5.3-flash"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3 Flash Uncensored"
        provider: openai
        model: "glm-5.3-flash-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3"
        provider: openai
        model: "glm-5.3"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3 Uncensored"
        provider: openai
        model: "glm-5.3-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · Gemini 4 Argon"
        provider: openai
        model: "gemini-4-argon"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3 Flash Abliterated"
        provider: openai
        model: "glm-5.3-flash-abliterated"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · GLM 5.3 Abliterated"
        provider: openai
        model: "glm-5.3-abliterated"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · Qwen 3.8 Max"
        provider: openai
        model: "qwen3.8-max"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · Qwen 3.8 Max Uncensored"
        provider: openai
        model: "qwen3.8-max-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · Kimi K3.1 Pro"
        provider: openai
        model: "kimi-k3.1-pro"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · Kimi K3.1 Pro Uncensored"
        provider: openai
        model: "kimi-k3.1-pro-uncensored"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4.1 Flash Abliterated"
        provider: openai
        model: "deepseek-v4.1-flash-abliterated"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4 Pro Abliterated"
        provider: openai
        model: "deepseek-v4-pro-abliterated"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat
      - name: "RouterHub · DeepSeek V4.1 Flash 1017 Abliterated"
        provider: openai
        model: "deepseek-v4.1-flash-1017-abliterated"
        apiBase: https://routerhub.si/v1
        apiKey: ${{ secrets.ROUTERHUB_API_KEY }}
        useResponsesApi: false
        requestOptions:
          timeout: 600
        roles:
          - chat

    macOS / Linux

    Save as ~/.continue/config.yaml.

    Windows

    Save as %USERPROFILE%/.continue/config.yaml.

    Create any missing folders. Already have config.yaml? Add these entries under its existing models: list instead of replacing the file.

    Download config.

  2. Step 2: Save your API key

    Replace the placeholder with your RouterHub key, without quotes:

    .env
    ROUTERHUB_API_KEY=PASTE_ROUTERHUB_KEY_HERE

    macOS / Linux

    Save as ~/.continue/.env.

    Windows

    Save as %USERPROFILE%/.continue/.env.

    All models use this one key. Keep this file private.

  3. Step 3: Open Continue

    Restart VS Code. In Continue, choose Local Config, then RouterHub · your chosen model in the model picker. Use Chat mode.

Need to install Continue?

Install the official Continue extension in VS Code, then open its sidebar.

Check the connection (optional)

When you’re ready to use credits, open an empty project and send this short test:

Reply with OK. Do not read files, run commands, or make edits.

Open RouterHub usage and check that the request appears under the right model. Keep auto-approval off while testing. A text reply checks the connection, not all coding features.

Troubleshooting

A slow request times out

Every generated model entry includes requestOptions.timeout: 600. Continue measures this setting in seconds, so do not copy OpenCode’s 600000 value here. Preserve the indentation under each model and restart VS Code. This is an API request setting, not a tool-execution deadline. Inspect Usage and the request ID before manually retrying.

The YAML has an error or the model is missing

Use spaces, not tabs. Keep the entry inside models: and preserve the file’s name, version, schema, and other models. Select Local Config.

Invalid key or 404

Keep provider: openai and apiBase: https://routerhub.si/v1. Check the exact model ID, key, and availability. Keep the user .env private, restart the IDE after changes, and check for a conflicting workspace secret. Do not append /chat/completions.

Autocomplete or Agent mode is unavailable

This setup only configures the chat role. Test that connection before adding other roles or claiming tool-call support.

Still stuck? Contact support.

Common questions

Why does the provider say openai?

It selects Continue’s compatible client. apiBase sends requests to RouterHub, and billing uses your RouterHub key—not an OpenAI account.

Does this cover JetBrains?

These UI steps are for VS Code. Continue also supports JetBrains; consult its official installation guide for that interface.