[ connect — sdks & agents ]
runaii.cloud speaks the OpenAI dialect everywhere and an Anthropic-compatible dialect (text, images, and tool-use), so most coding agents work with one environment variable — no proxy daemon, no config DSL. Create a key, set two env vars, ship.
Point Claude Code at runaii (env vars — set before launching):
$ export ANTHROPIC_BASE_URL=https://api.runaii.cloud/apiexport ANTHROPIC_AUTH_TOKEN=sk-runaii-… # your API keyClaude Code works against this endpoint: set the two env vars above and launch. The Anthropic-compatible route translates tool_use/tool_result and tool_choice, so the agentic loop runs. Use an sk-runaii API key (the console session path is text-only).
Model routing: /model glm-5.3 (tool-calling capable). glm models are reasoning models — max_tokens must be ≥ 512 (their thinking shares the budget; Claude Code's defaults are already high enough).
Settings → Models → OpenAI API key → override base URL:
$ # Cursor settings JSON (Models → OpenAI API Key → override){ "apiKey": "sk-runaii-…", "baseUrl": "https://api.runaii.cloud/v1"}Enable the runaii models you want (they appear after Verify):
Add model IDs exactly as glm-5.3, qwen3.8-flash — no prefix.
Cline settings → API Provider → OpenAI Compatible:
$ Base URL: https://api.runaii.cloud/v1API Key: sk-runaii-…Model ID: glm-5.3~/.codex/config.toml — point the OpenAI provider at runaii:
$ [model_providers.runaii]name = "runaii"base_url = "https://api.runaii.cloud/v1"env_key = "RUNAII_API_KEY" # then: profile.default_provider = "runaii"One env var pair — aider reads OpenAI-compatible endpoints natively:
$ export OPENAI_API_BASE=https://api.runaii.cloud/v1export OPENAI_API_KEY=sk-runaii-…aider --model openai/glm-5.3~/.zcode/cli/config.json — add a custom provider, then pick it as your model:
$ { "provider": { "runaii": { "name": "runaii.cloud", "kind": "openai", "options": { "baseURL": "https://api.runaii.cloud/v1", "apiKey": "sk-runaii-…" }, "enabled": true, "source": "custom", "models": { "glm-5.3": { "name": "glm-5.3 — agentic + coding" } } } }, "model": "runaii/glm-5.3"}Model IDs are bare (glm-5.3, qwen3.8-flash) — same list as GET /api/v1/models.
opencode.json (project root or ~/.config/opencode/) — custom provider:
$ { "provider": { "runaii": { "npm": "@ai-sdk/openai-compatible", "name": "runaii.cloud", "options": { "baseURL": "https://api.runaii.cloud/v1", "apiKey": "sk-runaii-…" }, "models": { "glm-5.3": {} } } }}Then: opencode --model runaii/glm-5.3 (provider-id/model-id — the runaii/ prefix is opencode's provider key, not part of the API model id).
Set both base-URL names — the OpenAI SDK reads OPENAI_BASE_URL; aider and LiteLLM read OPENAI_API_BASE:
$ export OPENAI_BASE_URL=https://api.runaii.cloud/v1export OPENAI_API_BASE=https://api.runaii.cloud/v1export OPENAI_API_KEY=sk-runaii-…Anthropic-dialect tools: ANTHROPIC_BASE_URL=https://api.runaii.cloud/api + ANTHROPIC_AUTH_TOKEN — supports text, images, and tool-use with an API key.
One curl from the same shell — if this returns a completion, your OpenAI-compatible agent will too:
$ curl https://api.runaii.cloud/v1/chat/completions \ -H "Authorization: Bearer $RUNAII_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"glm-5.3","messages":[{"role":"user","content":"ping"}]}'Using a tool that's not listed? Anything that speaks the OpenAI dialect works. The Anthropic-compatible dialect supports text, images, and tool-use — check the docs for the base URLs, or hit FAQ for limits.