All Products
Search
Document Center

Alibaba Cloud Model Studio:OpenClaw

Last Updated:Jun 25, 2026

OpenClaw is an open source personal AI assistant platform that lets you interact with AI through various messaging channels. You can configure it to access AI models from Alibaba Cloud Model Studio. It supports three access methods: pay-as-you-go, Coding Plan, and Token Plan Team Edition.

Install OpenClaw

OpenClaw requires Node.js 22 or later. To check your version:

node --version

If Node.js is not installed or your version is older than 22, download and install it from the Node.js official website.

macOS / Linux

We recommend using the official installation script:

curl -fsSL https://openclaw.ai/install.sh | bash

Alternatively, install it globally using npm:

npm install -g openclaw@latest

Windows

In PowerShell:

iwr -useb https://openclaw.ai/install.ps1 | iex

Alternatively, install it globally using npm:

npm install -g openclaw@latest

After installation, OpenClaw automatically starts the configuration wizard. You can also run openclaw onboard to configure it manually.

Parameter

Recommendation

I understand this is powerful and inherently risky. Continue?

Select Yes

Onboarding mode

Select QuickStart

Model/auth provider

Select Skip for now (you can configure a Model Studio model later)

Filter models by provider

Select All providers

Default model

Select Keep current

Select channel (QuickStart)

Select Skip for now (you can configure a channel later)

Configure skills now? (recommended)

Select No

Enable hooks?

Press the Spacebar to select an option, then press Enter.

How do you want to hatch your bot?

Select Do this later

Configure access credentials

Token Plan Team Edition

Replace YOUR_API_KEY with the API Key for your Token Plan Team Edition. For a list of available models, see the supported models.

API Key

Dedicated API Key for the Token Plan Team Edition

Base URL

https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic

Available models

All models included in the Token Plan Team Edition

The configuration file is located at ~/.openclaw/openclaw.json. OpenClaw automatically reads this file on startup.

Note

The example disables gateway authentication (auth.mode: none), suitable only for single-machine local use. For shared or remote access, run openclaw doctor --fix to enable token authentication.

Method 1: Terminal

  1. Open the configuration file

    nano ~/.openclaw/openclaw.json
  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your API Key for the Token Plan Team Edition.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian-token-plan": {
            "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-max",
                "name": "qwen3.7-max",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-flash",
                "name": "qwen3.6-flash",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "deepseek-v4-pro",
                "name": "deepseek-v4-pro",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "deepseek-v4-flash",
                "name": "deepseek-v4-flash",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "deepseek-v3.2",
                "name": "deepseek-v3.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.7-code",
                "name": "kimi-k2.7-code",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.6",
                "name": "kimi-k2.6",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.5",
                "name": "kimi-k2.5",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5.2",
                "name": "glm-5.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5.1",
                "name": "glm-5.1",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian-token-plan/qwen3.7-plus"
          },
          "models": {
            "bailian-token-plan/qwen3.7-max": {},
            "bailian-token-plan/qwen3.7-plus": {},
            "bailian-token-plan/qwen3.6-plus": {},
            "bailian-token-plan/qwen3.6-flash": {},
            "bailian-token-plan/deepseek-v4-pro": {},
            "bailian-token-plan/deepseek-v4-flash": {},
            "bailian-token-plan/deepseek-v3.2": {},
            "bailian-token-plan/kimi-k2.7-code": {},
            "bailian-token-plan/kimi-k2.6": {},
            "bailian-token-plan/kimi-k2.5": {},
            "bailian-token-plan/glm-5.2": {},
            "bailian-token-plan/glm-5.1": {},
            "bailian-token-plan/glm-5": {},
            "bailian-token-plan/MiniMax-M2.5": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save and exit

    Press Ctrl+X, press Y to confirm saving, and then press Enter to confirm the file name.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Method 2: Web UI

Note

The Web UI method is only available in OpenClaw ≤ 2026.3.28. For later versions, use Method 1: Terminal.

  1. Start the Web UI

    In your terminal, run the following command to start the Web UI:

    openclaw dashboard

    In the left menu, choose Configuration > Settings > Advanced, and click Open to open the configuration editor.

  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your API Key for the Token Plan Team Edition.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian-token-plan": {
            "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-max",
                "name": "qwen3.7-max",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-flash",
                "name": "qwen3.6-flash",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "deepseek-v4-pro",
                "name": "deepseek-v4-pro",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "deepseek-v4-flash",
                "name": "deepseek-v4-flash",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "deepseek-v3.2",
                "name": "deepseek-v3.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.7-code",
                "name": "kimi-k2.7-code",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 32768,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.6",
                "name": "kimi-k2.6",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "kimi-k2.5",
                "name": "kimi-k2.5",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5.2",
                "name": "glm-5.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5.1",
                "name": "glm-5.1",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian-token-plan/qwen3.7-plus"
          },
          "models": {
            "bailian-token-plan/qwen3.7-max": {},
            "bailian-token-plan/qwen3.7-plus": {},
            "bailian-token-plan/qwen3.6-plus": {},
            "bailian-token-plan/qwen3.6-flash": {},
            "bailian-token-plan/deepseek-v4-pro": {},
            "bailian-token-plan/deepseek-v4-flash": {},
            "bailian-token-plan/deepseek-v3.2": {},
            "bailian-token-plan/kimi-k2.7-code": {},
            "bailian-token-plan/kimi-k2.6": {},
            "bailian-token-plan/kimi-k2.5": {},
            "bailian-token-plan/glm-5.2": {},
            "bailian-token-plan/glm-5.1": {},
            "bailian-token-plan/glm-5": {},
            "bailian-token-plan/MiniMax-M2.5": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save the configuration

    In the Web UI configuration page, click the save button to complete the configuration.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Coding Plan

Replace YOUR_API_KEY with the API Key for your Coding Plan (in the format sk-sp-xxxxx). For a list of available models, see the supported models.

API Key

Dedicated API Key for the Coding Plan, in the format sk-sp-xxxxx

Base URL

https://coding-intl.dashscope.aliyuncs.com/apps/anthropic

Available models

All models included in the Coding Plan

The configuration file is located at ~/.openclaw/openclaw.json. OpenClaw automatically reads this file on startup.

Note

The example disables gateway authentication (auth.mode: none), suitable only for single-machine local use. For shared or remote access, run openclaw doctor --fix to enable token authentication.

Method 1: Terminal

  1. Open the configuration file

    nano ~/.openclaw/openclaw.json
  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your Coding Plan API Key.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian-coding-plan": {
            "baseUrl": "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.5-plus",
                "name": "qwen3.5-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3-max-2026-01-23",
                "name": "qwen3-max-2026-01-23",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 262144,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3-coder-next",
                "name": "qwen3-coder-next",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 262144,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "qwen3-coder-plus",
                "name": "qwen3-coder-plus",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-4.7",
                "name": "glm-4.7",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "kimi-k2.5",
                "name": "kimi-k2.5",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian-coding-plan/qwen3.7-plus"
          },
          "models": {
            "bailian-coding-plan/qwen3.7-plus": {},
            "bailian-coding-plan/qwen3.6-plus": {},
            "bailian-coding-plan/qwen3.5-plus": {},
            "bailian-coding-plan/qwen3-max-2026-01-23": {},
            "bailian-coding-plan/qwen3-coder-next": {},
            "bailian-coding-plan/qwen3-coder-plus": {},
            "bailian-coding-plan/MiniMax-M2.5": {},
            "bailian-coding-plan/glm-5": {},
            "bailian-coding-plan/glm-4.7": {},
            "bailian-coding-plan/kimi-k2.5": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save and exit

    Press Ctrl+X, press Y to confirm saving, and then press Enter to confirm the file name.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Method 2: Web UI

Note

The Web UI method is only available in OpenClaw ≤ 2026.3.28. For later versions, use Method 1: Terminal.

  1. Start the Web UI

    In your terminal, run the following command to start the Web UI:

    openclaw dashboard

    In the left menu, choose Configuration > Settings > Advanced, and click Open to open the configuration editor.

  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your Coding Plan API Key.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian-coding-plan": {
            "baseUrl": "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.5-plus",
                "name": "qwen3.5-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3-max-2026-01-23",
                "name": "qwen3-max-2026-01-23",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 262144,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3-coder-next",
                "name": "qwen3-coder-next",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 262144,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "qwen3-coder-plus",
                "name": "qwen3-coder-plus",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "glm-4.7",
                "name": "glm-4.7",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "kimi-k2.5",
                "name": "kimi-k2.5",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 262144,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian-coding-plan/qwen3.7-plus"
          },
          "models": {
            "bailian-coding-plan/qwen3.7-plus": {},
            "bailian-coding-plan/qwen3.6-plus": {},
            "bailian-coding-plan/qwen3.5-plus": {},
            "bailian-coding-plan/qwen3-max-2026-01-23": {},
            "bailian-coding-plan/qwen3-coder-next": {},
            "bailian-coding-plan/qwen3-coder-plus": {},
            "bailian-coding-plan/MiniMax-M2.5": {},
            "bailian-coding-plan/glm-5": {},
            "bailian-coding-plan/glm-4.7": {},
            "bailian-coding-plan/kimi-k2.5": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save the configuration

    In the Web UI configuration page, click the save button to complete the configuration.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Pay-as-you-go

Replace YOUR_API_KEY with your Model Studio API Key (in the format sk-xxxxx). For a list of available models, see the Model Market.

API Key

Model Studio API Key, in the format sk-xxxxx

Base URL

Ensure your Base URL, API Key, and model all correspond to the same region:

  • China (Beijing): https://dashscope.aliyuncs.com/apps/anthropic

  • Singapore: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic. Replace WorkspaceId with your actual Get the Workspace ID.

Available models

All models available in the Model Market

The configuration file is located at ~/.openclaw/openclaw.json. OpenClaw automatically reads this file on startup. The following examples use the China (Beijing) region. If you use a different region, replace the baseUrl with the corresponding URL from the table above.

Note

The example disables gateway authentication (auth.mode: none), suitable only for single-machine local use. For shared or remote access, run openclaw doctor --fix to enable token authentication.

Method 1: Terminal

  1. Open the configuration file

    nano ~/.openclaw/openclaw.json
  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your Model Studio API Key.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian": {
            "baseUrl": "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "deepseek-v3.2",
                "name": "deepseek-v3.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian/qwen3.6-plus"
          },
          "models": {
            "bailian/qwen3.6-plus": {},
            "bailian/MiniMax-M2.5": {},
            "bailian/glm-5": {},
            "bailian/deepseek-v3.2": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save and exit

    Press Ctrl+X, press Y to confirm saving, and then press Enter to confirm the file name.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Method 2: Web UI

Note

The Web UI method is only available in OpenClaw ≤ 2026.3.28. For later versions, use Method 1: Terminal.

  1. Start the Web UI

    In your terminal, run the following command to start the Web UI:

    openclaw dashboard

    In the left menu, choose Configuration > Settings > Advanced, and click Open to open the configuration editor.

  2. Add the configuration

    For a new configuration: Copy the following content into the configuration file. Replace YOUR_API_KEY with your Model Studio API Key.

    For an existing configuration: To preserve your current settings, do not replace the entire file content. See How to safely modify an existing configuration.

    {
      "meta": {
        "lastTouchedVersion": "2026.2.1",
        "lastTouchedAt": "2026-02-03T08:20:00.000Z"
      },
      "models": {
        "mode": "merge",
        "providers": {
          "bailian": {
            "baseUrl": "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "qwen3.6-plus",
                "name": "qwen3.6-plus",
                "reasoning": false,
                "input": ["text", "image"],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "MiniMax-M2.5",
                "name": "MiniMax-M2.5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 204800,
                "maxTokens": 131072,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
              },
              {
                "id": "glm-5",
                "name": "glm-5",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              },
              {
                "id": "deepseek-v3.2",
                "name": "deepseek-v3.2",
                "reasoning": false,
                "input": ["text"],
                "contextWindow": 163840,
                "maxTokens": 16384,
                "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
                "compat": { "thinkingFormat": "openai" }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian/qwen3.6-plus"
          },
          "models": {
            "bailian/qwen3.6-plus": {},
            "bailian/MiniMax-M2.5": {},
            "bailian/glm-5": {},
            "bailian/deepseek-v3.2": {}
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": { "mode": "none" }
      }
    }
  3. Save the configuration

    In the Web UI configuration page, click the save button to complete the configuration.

  4. Apply the configuration

    To apply the changes, restart the gateway with the following command:

    openclaw gateway restart

Connect to message channels

WhatsApp

Step 1: Install the WhatsApp plugin

The WhatsApp channel is connected via a plugin. Run the following command to install it:

openclaw plugins install @openclaw/whatsapp

Step 2: Configure the WhatsApp channel

Enter the following prompt in your OpenClaw chat. OpenClaw will ask for your phone number in E.164 format (a + sign followed by the country code and number), then automatically add the number to the configuration and complete the setup.

Please help me configure the WhatsApp channel. First, ask for my phone number, and then automatically fill it into the allowFrom and groupAllowFrom fields in the following configuration to complete the setup.
{
  "channels": {
    "whatsapp": {
      "dmPolicy": "pairing",
      "allowFrom": ["<phone_number>"],
      "groupPolicy": "allowlist",
      "groupAllowFrom": ["<phone_number>"]
    }
  }
}
Note

We recommend using a separate phone number for the WhatsApp channel to prevent the bot from responding to your daily chats. If you use your personal phone number, you can enter a command in your OpenClaw chat to enable selfChatMode. The bot will then respond only in your "Message yourself" chat, leaving other conversations unaffected.

Step 3: Link with WhatsApp

Step 4: Test

  1. Check the WhatsApp channel status:

    openclaw status

    In the Channels section, WhatsApp should be ON with a status of OK.

  2. In WhatsApp, send a message to yourself to verify that the bot responds correctly.

Telegram

  1. Create a bot using BotFather

    Send the /newbot command, follow the prompts to enter a bot name and username (the username must end with bot), and copy and save the returned bot token (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz).

  2. In your OpenClaw chat, enter the following prompt and replace xxxx with your actual bot token. OpenClaw will automatically apply the configuration.

    Please help me configure Telegram with the following settings. My bot token is xxxx.
    {
      "channels": {
        "telegram": {
          "enabled": true,
          "botToken": "xxxx",
          "dmPolicy": "pairing"
        }
      }
    }
  3. After the configuration is complete, restart the gateway.

    openclaw gateway restart
  4. In Telegram, send a message to your bot. When you send your first message, you will receive a pairing code.

  5. In your terminal, run the following command, replacing xxx with the actual pairing code:

    openclaw pairing approve telegram xxx

Discord

Step 1: Create a Discord application and bot

  1. Create a Discord application

    Go to the Discord Developer Portal, click New Application, enter an application name, and then click Create.

  2. Create a bot and enable permissions

    1. In the left navigation pane, click Bot and set a username for the bot.

    2. On the Bot page, scroll down to Privileged Gateway Intents and enable the following intents:

      • Message Content Intent

      • Server Members Intent

      • Presence Intent

      When finished, click Save Changes.

  3. Get the bot token

    At the top of the Bot page, click Reset Token to generate a token. This token is displayed only once, so copy it and store it in a secure location immediately.

  4. Add the bot to a server

    1. In the left navigation pane, click OAuth2 and scroll down to OAuth2 URL Generator.

    2. Under Scopes, select the bot and applications.commands checkboxes.

    3. In the Bot Permissions section that appears, select the following permissions:

      • View Channels

      • Send Messages

      • Read Message History

      • Embed Links

      • Attach Files

    4. Copy the URL generated at the bottom of the page, open it in your browser, select the target server, and click Continue to add the bot.

Step 2: Configure Discord in OpenClaw

  1. On the machine where OpenClaw is running, set the bot token as an environment variable.

    export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
  2. Complete the Discord configuration:

    openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
    openclaw config set channels.discord.enabled true --strict-json
  3. Restart the gateway to apply the configuration.

    openclaw gateway restart

Step 3: Pair and test

  1. In Discord, send a direct message to the bot. When you send your first message, you will receive a pairing code.

  2. In your terminal, run the following command to complete the pairing, replacing xxx with the actual pairing code:

    openclaw pairing approve discord xxx
    Note

    The pairing code is valid for one hour. If it expires, you must send another message to get a new one.

  3. Check the Discord channel status:

    openclaw status

    In the Channels section, Discord should be ON with a status of OK.

  4. Send a message in Discord to test the connection.

Common commands

Command

Description

Example

/help

Lists available commands.

/help

/status

Shows the current model, session, and gateway status.

/status

/model <model_name>

Switches the model for the current session.

/model qwen3.7-max

/new

Starts a new session.

/new

/compact

Compresses conversation history to free up context window space.

/compact

/think <level>

Sets the inference depth. Available levels are off, low, medium, and high.

/think high

/skills

Lists available skills.

/skills

Use cases

Use case 1: Automate X (Twitter)

You can use OpenClaw to automate your X (Twitter) account, including posting, replying, searching, and browsing your timeline.

Configuration steps

  1. Install twitter-cli:

    uv tool install twitter-cli
  2. Enter the following command in an OpenClaw dialog to automatically install the Skill.

    Install this skill: https://github.com/public-clis/twitter-cli
  3. Restart the gateway to activate the Skill.

    openclaw gateway restart
  4. Verify the installation:

    openclaw skills list
  5. twitter-cli uses browser cookies for authentication. Ensure that you are logged in to x.comin a supported browser, such as Chrome, Edge, Firefox, Arc, or Brave. twitter-cli automatically retrieves the cookies.

    Alternatively, you can manually set the authentication information using environment variables:

    export TWITTER_AUTH_TOKEN="your_auth_token"
    export TWITTER_CT0="your_ct0_token"

Example 1: Automatically publish a post

Enter Check Sam Altman's recent tweets, summarize the key points, and then help me post a tweet with my thoughts in an OpenClaw dialog. OpenClaw automatically fetches the feed, analyzes the content, and publishes the post.

Example 2: Search for trending topics

Enter Search for tweets about harness engineering from yesterday. OpenClaw searches for relevant tweets and summarizes their key points.

Use case 2: Analyze and download YouTube videos

You can use OpenClaw to search for YouTube videos, extract video information, and download videos. It supports searching by keyword, sorting by date, and bulk-fetching video metadata.

Configuration steps

  1. Install yt-dlp:

    pip install yt-dlp
  2. Verify the installation:

    yt-dlp --version
  3. (Optional) Configure cookie authentication. This is required to access age-restricted, members-only, or private videos. Ensure that you are logged in to youtube.comin your browser, and then enter the following in an OpenClaw dialog:

After installation, you can use this feature directly in an OpenClaw dialog. OpenClaw automatically runs the yt-dlp command to perform video-related operations.

Example 1: Summarize video content

Enter Summarize the main points of this video: https://www.youtube.com/watch?v=XRgGFQ0EgM0 in an OpenClaw dialog. OpenClaw retrieves the video information and generates a summary.

Example 2: Download a video

Enter Download this video: https://www.youtube.com/watch?v=XRgGFQ0EgM0 in an OpenClaw dialog. OpenClaw runs yt-dlp to download the video to your local machine.

Use case 3: Schedule daily AI news delivery

You can use OpenClaw's cron feature to automatically fetch the latest AI news and push it to WhatsApp daily.

Configuration steps

  1. In your terminal:

    openclaw cron add \
      --name "ai-daily-news" \
      --cron "0 9 * * *" \
      --tz "UTC" \
      --message "Please visit https://techcrunch.com/category/artificial-intelligence/ to get today's AI news. Summarize the top 10 most important AI stories in a concise list format, each with a title and a one-sentence summary in English." \
      --channel whatsapp \
      --to "<your_phone_number>" \
      --announce

    Parameters:

    Parameter

    Description

    --name

    The task name.

    --cron

    The cron expression. "0 9 * * *" means the task runs at 9:00 AM every day.

    --tz

    The time zone. Set to "UTC" for Coordinated Universal Time. You can replace this with your local time zone, such as "America/New_York" or "Europe/London".

    --message

    The prompt sent to the agent, which specifies what content to fetch and how to summarize it.

    --channel

    The push channel. Set to whatsapp.

    --announce

    Pushes the task's output to the specified recipient.

    --to

    The recipient's WhatsApp phone number in E.164 format, which includes a plus sign, country code, and phone number.

    On success, the command returns a JSON object containing the task ID and the next scheduled execution time.

  2. After you create the task, you can manually trigger it once to verify that it works.

    1. List all tasks to get the task ID:

      openclaw cron list
    2. Manually trigger the task:

      openclaw cron run <task_ID> --timeout 120000
    3. Check the execution result:

      openclaw cron runs --id <task_ID>

      If the output shows "status": "ok" and "delivered": true, the news has been successfully delivered to WhatsApp.

Use case 4: Stock market analysis

You can use OpenClaw to analyze stock trends and receive technical analysis and investment suggestions.

Note

AI-generated content is for reference only and does not constitute actual investment advice or a basis for decision-making.

Configuration steps

  1. Install the Skill.

    Enter the following instruction in an OpenClaw dialog. OpenClaw will automatically complete the installation.

    Install the manus-stock-analysis skill
  2. Restart the gateway to activate the Skill.

    openclaw gateway restart

    Verify the installation:

    openclaw skills list
  3. In an OpenClaw dialog, ask stock-related questions, such as Analyze NVDA stock.

Learn more

Skill

Skills are extensible modules that provide new capabilities. The agent automatically matches and loads the appropriate Skill based on the user's request. OpenClaw allows you to view and enable built-in Skills, install community Skills from ClawHub, or create custom Skills.

Viewing existing skills

  1. View your installed Skills and their status:

    # List installed Skills
    openclaw skills list
    
    # Check Skill status (enabled, disabled, missing dependencies, etc.)
    openclaw skills check
    
    # View detailed information for a specific Skill
    openclaw skills info <skill-name>
  2. Built-in Skills are disabled by default. To enable them, you must add them to the skills.allowBundled allowlist in ~/.openclaw/openclaw.json. OpenClaw loads only the built-in Skills listed in this array.

    {
      "skills": {
        "allowBundled": [
          "github",
          "weather",
          "summarize",
          "coding-agent",
          "clawhub",
          "nano-pdf",
          "google-web-search",
          "image-lab"
        ]
      }
    }

    Some built-in Skills require a third-party API key to function. Configure these keys in the skills.entries field of ~/.openclaw/openclaw.json. For details, refer to the Skills Configuration documentation.

Finding more skills

You can find and install more Skills using one of the following methods.

  1. Search and install from ClawHub

    ClawHub offers over 3,000 community Skills. You can browse them on the website or search for them from the command line.

    # Search by keyword
    npx clawhub search [keyword]
    
    # Browse recently updated Skills
    npx clawhub explore

    After you find a suitable Skill, run the following command to install it. Then, restart the gateway to apply the Skill.

    npx clawhub install <skill-name>
  2. Ask OpenClaw directly

    Describe your needs directly in the chat, for example, Help me find a Skill that can check the weather. OpenClaw will automatically search for and install a matching Skill.

Creating a custom skill

  1. Create a directory for your Skill.

    mkdir -p ~/.openclaw/workspace/skills/my-custom-skill
  2. In this directory, create the SKILL.md file. The file consists of two parts: YAML front matter and Markdown instructions. The name and description fields are required. The Agent uses the description to determine whether to load the Skill. Ensure that the description is accurate.

    ---
    name: my-custom-skill
    description: Short description
    ---
    
    # My Custom Skill
    
    When a user requests XXX, do the following:
    
    1. Use the bash tool to run the xxx command
    2. Parse the output
    3. Return the result to the user as a table
  3. Restart the gateway to apply the Skill.

    # Restart the gateway
    openclaw gateway restart
    
    # Check if the Skill is active
    openclaw skills list

For more information on Skill configuration, see the OpenClaw Official Documentation.

FAQ

How can I view my configured models?

To start the OpenClaw terminal command line, enter openclaw tui in your terminal. Then, enter /model to view the model list. Press Enter to select a model and Esc to exit the list.

Why do I get the error HTTP 401: Incorrect API key provided. or No API key found for provider xxx?

Possible causes include:

  1. The API key might be invalid, expired, empty, incorrectly formatted, or for the wrong endpoint. Ensure the API key corresponds to your payment method, is copied completely without extra spaces, and that your account subscription is active.

  2. OpenClaw may be using an incorrect, stale configuration from its configuration cache. To resolve this, delete the providers configuration item from the ~/.openclaw/agents/main/agent/models.json file and restart OpenClaw.

I have already configured other channels like DingTalk. How can I safely add models for a new plan without losing my existing configuration?

  • Do not use a "Replace All" function, as this will overwrite your custom configuration. Instead, modify only the relevant sections.

  • Use one of the following methods to complete the configuration:

    • If OpenClaw is responding normally: Enter the commands directly in an OpenClaw chat to merge the configuration.

    • If OpenClaw has no models configured or is not responding: Manually edit the ~/.openclaw/openclaw.json file. Modify only the relevant fields and leave your existing configuration unchanged.

After restarting the gateway, existing sessions may not function correctly. Start a new session.

What should I do if I get a device identity required error?

Error message:

http://127.0.0.1:18791/15:05:56 [ws] closed before connect conn=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=n/a code=1008 reason=device identity required

Cause:

This error occurs when a client connects to the gateway without providing a device identity. Common causes include:

  • You are accessing the URL in a browser for the first time, and device pairing is not yet complete.

  • The browser cache was cleared, causing the device key to be lost.

  • After reinstalling or upgrading OpenClaw, the key file in the ~/.openclaw/identity/ directory is missing.

Solution:

Run the following commands in the terminal to approve the device connection and generate a new browser access URL:

openclaw devices approve --latest
openclaw dashboard --no-open

If the issue persists, clear pending device records and try again:

openclaw devices clear --pending --yes
openclaw dashboard --no-open

Run openclaw devices list to confirm the device appears in the Paired list.

Token consumption occurs even when OpenClaw is not actively in use

Cause: OpenClaw has a built-in heartbeat mechanism. While the gateway is running, it automatically calls the configured model at a fixed interval (every 30 minutes by default) to check for pending tasks. Each heartbeat consumes a small number of tokens.

How to verify: Check the session log files (.jsonl) in the ~/.openclaw/agents/main/sessions/ directory. Heartbeat calls are marked with [OpenClaw heartbeat poll].

Solutions:

  • Stop the gateway: Run openclaw gateway stop when not in use. This stops the heartbeat immediately.

  • Increase the heartbeat interval: Set agents.defaults.heartbeat.every in ~/.openclaw/openclaw.json. For example, "2h" sets the interval to every 2 hours.