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.
| Field | Value |
|---|---|
| Base URL | https://<your-org>.dynoyard.app/v1 |
| API Key | sk-dyno-XXXX |
| Model | kimi-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 Provider → OpenAI Compatible.
| Field | Value |
|---|---|
| Base URL | https://<your-org>.dynoyard.app/v1 |
| API Key | sk-dyno-XXXX |
| Model ID | deepseek-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:
| Field | Value |
|---|---|
| API Base URL | https://<your-org>.dynoyard.app/v1 |
| API Key | sk-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.).