IDE agents & clients

Wire Dynoyard into Cline, Roo Code, Cursor, Continue, Aider, Zed, LibreChat, Open WebUI, LiteLLM — one base_url swap.

Every Dynoyard endpoint speaks the OpenAI API, including tool_calls[] and streaming. Most clients work after a single base_url swap. Replace <your-org> below with your actual org slug (visible on Overview).

Cursor

Settings → Models → Add custom OpenAI-compatible model.

FieldValue
Base URLhttps://<your-org>.dynoyard.app/v1
API Keysk-dyno-XXXX
Modelkimi-k2-thinking (or any active id from /v1/models)

Zed

Open ~/.config/zed/settings.json:

{
  "language_models": {
    "openai": {
      "api_url": "https://<your-org>.dynoyard.app/v1",
      "available_models": [
        {
          "name": "kimi-k2-thinking",
          "display_name": "Kimi K2 Thinking",
          "max_tokens": 32768
        },
        {
          "name": "mimo-v2-5-pro",
          "display_name": "MiMo V2.5 Pro",
          "max_tokens": 32768
        }
      ]
    }
  }
}

Set OPENAI_API_KEY=sk-dyno-XXXX in your shell. Zed picks it up.

Claude Code / OpenCode

Both speak the OpenAI API. Point at your subdomain:

export OPENAI_API_BASE=https://<your-org>.dynoyard.app/v1
export OPENAI_API_KEY=sk-dyno-XXXX

Then start as usual. Model id passed via the framework’s normal config (--model kimi-k2-thinking or equivalent).

Continue

~/.continue/config.json:

{
  "models": [
    {
      "title": "Kimi K2 Thinking via Dynoyard",
      "provider": "openai",
      "model": "kimi-k2-thinking",
      "apiBase": "https://<your-org>.dynoyard.app/v1",
      "apiKey": "sk-dyno-XXXX"
    }
  ]
}

LiteLLM

Catalog-aware tools read /v1/models directly. Add as an OpenAI- compatible provider in your litellm config; no per-model entry required.

model_list:
  - model_name: kimi-k2-thinking
    litellm_params:
      model: openai/kimi-k2-thinking
      api_base: https://<your-org>.dynoyard.app/v1
      api_key: sk-dyno-XXXX

Cline / Roo Code / Kilo Code

Settings → API ProviderOpenAI Compatible.

FieldValue
Base URLhttps://<your-org>.dynoyard.app/v1
API Keysk-dyno-XXXX
Model IDdeepseek-v4-pro (or any active id from /v1/models)

Roo Code and Kilo Code are Cline-family forks — same fields, same steps. Streaming + tool calls work out of the box.

Aider

Aider routes through LiteLLM, so point it at the endpoint and prefix the model with openai/ (tells Aider it’s an OpenAI-compatible host):

export OPENAI_API_BASE=https://<your-org>.dynoyard.app/v1
export OPENAI_API_KEY=sk-dyno-XXXX

aider --model openai/deepseek-v4-pro

LibreChat

Add Dynoyard as a custom endpoint in librechat.yaml — one entry exposes the whole catalog (fetch: true pulls the live model list from /v1/models):

endpoints:
  custom:
    - name: "Dynoyard"
      apiKey: "${DYNOYARD_API_KEY}"
      baseURL: "https://<your-org>.dynoyard.app/v1"
      models:
        default: ["deepseek-v4-pro", "qwen-max-3-7", "kimi-k2-thinking"]
        fetch: true
      titleConvo: true
      titleModel: "qwen-plus-3-7"

Set DYNOYARD_API_KEY=sk-dyno-XXXX in your LibreChat env. One key, one bill, every model — across your whole team.

Open WebUI

Settings → Connections → add an OpenAI API connection:

FieldValue
API Base URLhttps://<your-org>.dynoyard.app/v1
API Keysk-dyno-XXXX

Models auto-populate from /v1/models. Use Open WebUI’s workspaces + per-user access for team setups; Dynoyard handles the unified billing and per-key caps underneath.

Streaming + tool calls

All clients above use the standard OpenAI streaming + tool-call shape. No Dynoyard-specific wrapping — your existing prompt / tool definitions work unchanged.

Switching models per request

Same client, same key — change model field. Different keys with different allowed_models scopes let you cap which models a given deploy can touch (Cursor key only sees one model, prod key sees all, etc.).