dot_files/dot_claude/skills/openclaw-custom-model-provider/SKILL.md
Viktor Barzin c95ffa03c5 migrate cc-config to chezmoi: add all skills, agents, and openclaw installer
- Add 4 missing skills: chromedp-alpine-container, claude-memory-api,
  openclaw-custom-model-provider, webrtc-turn-shared-secret
- Add 9 custom agents: sre, dba, devops-engineer, platform-engineer,
  security-engineer, network-engineer, observability-engineer,
  home-automation-engineer, cluster-health-checker
- Add openclaw-install.sh: standalone script to clone dotfiles and
  install skills/agents/hooks/settings to OpenClaw's home directory
  Replaces the cc-config NFS volume + sync.sh approach
2026-03-15 16:02:05 +00:00

4 KiB

name description author version date
openclaw-custom-model-provider Configure custom model providers in OpenClaw (openclaw.ai). Use when: (1) adding a new LLM provider (Llama API, LM Studio, custom proxy) to OpenClaw, (2) changing the default model in OpenClaw, (3) enabling/disabling tools and commands in OpenClaw, (4) user mentions openclaw.json or openclaw configuration. Covers the models.providers JSON structure, agent defaults, and tool permissions. Claude Code 1.0.0 2026-02-16

OpenClaw Custom Model Provider Configuration

Problem

OpenClaw supports custom OpenAI-compatible model providers, but the configuration structure requires checking multiple documentation pages to assemble correctly.

Context / Trigger Conditions

  • User wants to add a new LLM provider to OpenClaw
  • User has an API key for Llama API, OpenRouter, LM Studio, or another OpenAI-compatible service
  • User wants to change the default model OpenClaw uses
  • User wants to enable all tools/commands (remove denyCommands restrictions)

Solution

Config File Location

~/.openclaw/openclaw.json

Adding a Custom Provider

Add to the models.providers object:

{
  "models": {
    "mode": "merge",
    "providers": {
      "my-provider": {
        "baseUrl": "https://api.example.com/compat/v1",
        "apiKey": "YOUR_API_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "model-id",
            "name": "Display Name",
            "reasoning": false,
            "input": ["text"],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  }
}

Key fields:

  • api: Protocol — "openai-completions" | "openai-responses" | "anthropic-messages" | "google-generative-ai"
  • mode: "merge" (default, keeps built-in providers) or "replace" (only custom)
  • cost: Set all to 0 for free/self-hosted models
  • Model reference format: provider-name/model-id (e.g., llama-as-openai/Llama-4-Maverick-17B-128E-Instruct-FP8)

Setting Default Model

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "my-provider/model-id",
        "fallbacks": ["ollama/local-model"]
      },
      "models": {
        "my-provider/model-id": {},
        "ollama/local-model": {}
      }
    }
  }
}

Enabling All Tools/Commands

To remove tool restrictions:

{
  "commands": {
    "native": true,
    "nativeSkills": true
  },
  "gateway": {
    "nodes": {
      "denyCommands": []
    }
  }
}

Default denyCommands blocks: camera.snap, camera.clip, screen.record, calendar.add, contacts.add, reminders.add.

Common Provider Examples

Llama API:

"llama-as-openai": {
  "baseUrl": "https://api.llama.com/compat/v1",
  "apiKey": "LLM|...",
  "api": "openai-completions"
}

Local Ollama:

"ollama": {
  "baseUrl": "http://127.0.0.1:11434/v1",
  "apiKey": "none",
  "api": "openai-completions"
}

LM Studio:

"lmstudio": {
  "baseUrl": "http://127.0.0.1:1234/v1",
  "apiKey": "lmstudio",
  "api": "openai-responses"
}

Verification

  • Restart OpenClaw after config changes
  • Run openclaw and check that the new model appears in model selection
  • Send a test message to verify the provider responds

Notes

  • mode: "merge" is the default and recommended — it keeps built-in providers alongside custom ones
  • Optional fields: authHeader (boolean), headers (object for custom HTTP headers)
  • Set reasoning: true for models that support chain-of-thought (e.g., DeepSeek R1)
  • OpenClaw docs: https://docs.openclaw.ai/gateway/configuration-reference.md

References