Viro API

Integrations / OpenClaw

OpenClaw

OpenClaw's gateway supports custom OpenAI-compatible providers under models.providers, using the openai-completions API type — Viro's native wire format.

Configure

In ~/.openclaw/openclaw.json:

{
  "models": {
    "providers": {
      "viro": {
        "api": "openai-completions",
        "baseUrl": "https://api.viro.app/v1",
        "apiKey": "${VIRO_API_KEY}",
        "timeoutSeconds": 300
      }
    }
  },
  "agents": {
    "defaults": {
      "model": "viro/optimized",
      "models": {
        "viro/optimized": { "alias": "optimized" },
        "viro/clean": { "alias": "clean" },
        "viro/kimi-k2.5": { "alias": "kimi" }
      }
    }
  }
}

Store the key in ~/.openclaw/.env:

VIRO_API_KEY=viro_sk_live_...

Then reload the gateway: openclaw gateway restart. Get a key from API Keys.

Picking models

Model IDs use Viro's real slugs directly — viro/optimized, viro/clean, and viro/frontier are routers that pick the best underlying model per request (see Model Routing); anything else is a specific model like viro/gpt-oss-120b or anthropic/claude-sonnet-5. Call GET https://api.viro.app/v1/models for the current full list.

Aliases under agents.defaults.models are how OpenClaw lets an agent switch models mid-session without a config change — assign a short alias to whichever slugs you use most.

Tool calling & streaming

OpenClaw sends and expects standard OpenAI-shaped tool calls and SSE streaming — both are exactly what Viro already implements, so no extra configuration is needed beyond picking a model that holds up over long tool-call sequences. See Server tools for which viro/* models we've verified.