DocsOpenClaw

OpenClaw

Ready-made agentsIntermediate5 min

OpenClaw connects to Zukko as a custom provider. Config: ~/.openclaw/openclaw.json. Key: fetch_... (API keys).

OptionapibaseUrl
OpenAI Compatibleopenai-completionshttps://api.zukko.pro/v1
Anthropic Messagesanthropic-messageshttps://api.zukko.pro

1With onboard

bash
npm install -g openclaw

openclaw onboard --non-interactive --accept-risk \
  --auth-choice custom-api-key \
  --custom-base-url "https://api.zukko.pro/v1" \
  --custom-model-id "claude-sonnet-5" \
  --custom-api-key "fetch_..." \
  --secret-input-mode plaintext \
  --custom-compatibility openai

For the Anthropic option use --custom-base-url "https://api.zukko.pro" (no /v1) and --custom-compatibility anthropic. Onboard flags change between versions — check openclaw onboard --help.

2Manual: OpenAI Compatible

A custom provider's model must be listed in models.providers.<provider>.models[], otherwise OpenClaw does not know about it.

json5
{
  models: {
    mode: "merge",
    providers: {
      zukko: {
        baseUrl: "https://api.zukko.pro/v1",
        apiKey: "fetch_...",
        api: "openai-completions",
        models: [
          {
            id: "claude-sonnet-5",
            name: "Claude Sonnet 5",
            input: ["text", "image"],
            contextWindow: 1000000,

agents.defaults.models only sets aliases and per-model settings — it does not restrict anything.

3Manual: Anthropic Messages

Same file, but in the provider:

json5
baseUrl: "https://api.zukko.pro",
api: "anthropic-messages",

Base URL without /v1.

4Apply and check

The Gateway picks up changes to openclaw.json by itself. If OpenClaw says Restart the gateway to apply, restart the Gateway. To check:

bash
openclaw config validate
openclaw models list

5If it fails

  • Model not listed — make sure it is in models.providers.zukko.models[] and the id matches GET /v1/models.
  • Model not allowed — if you set agents.defaults.modelPolicy.allow, add zukko/<id> (or zukko/*) to it.
  • 401 — check the fetch_... key and the URL from the table (with or without /v1).
  • 404 `model_not_found` — there is no such model in the catalog: check the name against GET /v1/models.
  • 503 `model_disabled` — the model is temporarily switched off; pick another from GET /v1/models.
OpenClaw · Zukko Docs