# OpenClaw

> OpenClaw-কে Tokens-এর সাথে custom provider হিসেবে জুড়ুন, non-interactive onboarding দিয়ে অথবা ~/.openclaw/openclaw.json edit করে, তারপর আসল context limit বসান আর model বদলান।

OpenClaw হলো open-source একটা personal AI assistant। এটা আপনার machine-এ daemon হিসেবে চলে, আর কথা বলে chat app আর নিজের UI দিয়ে। Tokens-এর সাথে এটা `https://tokens.bd/v1`-এ OpenAI Chat Completions protocol (`openai-completions`) ব্যবহার করে। চাইলে Anthropic Messages protocol-ও নেওয়া যায়, তখন endpoint হবে `https://tokens.bd`।

[Tokens CLI](/docs/tokens-cli) OpenClaw configure করে না। তাই OpenClaw-এর নিজের onboarding চালান, নয়তো তার config file edit করুন। দুটোতেই কয়েক মিনিট লাগে।

## OpenClaw install করুন

:::code-tabs

```bash title="macOS / Linux / WSL2"
curl -fsSL https://openclaw.ai/install.sh | bash
```

```powershell title="Windows PowerShell"
iwr -useb https://openclaw.ai/install.ps1 | iex
```

:::

npm দিয়ে করতে চাইলে (Node 24.16+ বা 26.1+ লাগবে) `npm install -g openclaw@latest --allow-scripts=openclaw` চালান, তারপর `openclaw onboard --install-daemon`।

## TOKENS_API_KEY export করুন

[/dashboard/keys](/dashboard/keys)-এ গিয়ে একটা key বানান (spend cap নিয়ে জানতে [API keys](/docs/api-keys) দেখুন), তারপর export করুন:

:::code-tabs

```bash title="macOS / Linux"
export TOKENS_API_KEY="tok_live_your_key"
```

```powershell title="Windows PowerShell"
$env:TOKENS_API_KEY = "tok_live_your_key"   # this window
setx TOKENS_API_KEY "tok_live_your_key"     # new windows
```

:::

OpenClaw background daemon হিসেবে চলে। তাই variable-টা শুধু আপনার এখনকার terminal-এ থাকলে হবে না, daemon-ও যেন দেখতে পায়। সবচেয়ে সহজ উপায়: shell profile-এ রাখুন (Windows-এ `setx` চালান), তারপর daemon restart করুন।

## Option A: non-interactive onboarding

একটা command-ই Tokens-কে custom provider হিসেবে register করে আর default model ঠিক করে দেয়:

:::code-tabs

```bash title="macOS / Linux"
openclaw onboard --non-interactive --accept-risk --skip-health \
  --mode local \
  --auth-choice custom-api-key \
  --custom-base-url "https://tokens.bd/v1" \
  --custom-model-id "deepseek/deepseek-v4.1-flash" \
  --custom-api-key "$TOKENS_API_KEY" \
  --custom-provider-id "tokens" \
  --custom-compatibility openai
```

```powershell title="Windows PowerShell"
openclaw onboard --non-interactive --accept-risk --skip-health `
  --mode local `
  --auth-choice custom-api-key `
  --custom-base-url "https://tokens.bd/v1" `
  --custom-model-id "deepseek/deepseek-v4.1-flash" `
  --custom-api-key "$env:TOKENS_API_KEY" `
  --custom-provider-id "tokens" `
  --custom-compatibility openai
```

:::

`--custom-compatibility openai` মানে chat completions, আর আপনার এটাই দরকার। বাকি value দুটো হলো `openai-responses` আর `anthropic`। কোনো flag ছাড়া `openclaw onboard` চালালেও একই custom-provider option interactive-ভাবে পাবেন।

## Option B: ~/.openclaw/openclaw.json edit করুন

OpenClaw `~/.openclaw/openclaw.json` থেকে JSON5 config পড়ে (comment আর শেষে বাড়তি comma চলে)। অন্য জায়গায় রাখতে চাইলে `OPENCLAW_CONFIG_PATH` দিয়ে দেখিয়ে দিন। gateway file-টার ওপর নজর রাখে, তাই বদল restart ছাড়াই reload হয়ে যায়।

```jsonc title="~/.openclaw/openclaw.json"
{
  "agents": {
    "defaults": {
      "model": { "primary": "tokens/deepseek/deepseek-v4.1-flash" },
      "models": { "tokens/deepseek/deepseek-v4.1-flash": { "alias": "Tokens Flash" } },
    },
  },
  "models": {
    "mode": "merge",
    "providers": {
      "tokens": {
        "baseUrl": "https://tokens.bd/v1",
        "apiKey": "${TOKENS_API_KEY}",
        "api": "openai-completions",
        "timeoutSeconds": 300,
        "models": [
          {
            "id": "deepseek/deepseek-v4.1-flash",
            "name": "DeepSeek V4.1 Flash (Tokens)",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 128000, // placeholder: use the real value
            "maxTokens": 8192, // placeholder: use the real value
          },
        ],
      },
    },
  },
}
```

`contextWindow` আর `maxTokens`-এর জায়গায় [/models](/models)-এ ওই model-এর পাতার আসল limit বসান। `cost` field-গুলো OpenClaw-এর নিজের local আন্দাজ মাত্র। বিল হয় Tokens-এর নিজের meter থেকে, তাই শূন্য রাখলে কোনো ক্ষতি নেই।

default model লিখতে হয় `provider/model-id` ধাঁচে। আমাদের id-তে আগে থেকেই slash আছে, কিন্তু OpenClaw সেটা সামলে নেয়। তাদের নিজের docs-এ উদাহরণ হিসেবে `lmstudio/openai/gpt-oss-20b` আছে।

file নতুন করে না লিখে provider যোগ করতে চাইলে চালান `openclaw config set models.providers.tokens '<json>' --strict-json --merge`।

### Anthropic-compatible variant

Messages API ব্যবহার করতে চাইলে `api: "anthropic-messages"` আর `baseUrl: "https://tokens.bd"` সেট করুন (শেষে `/v1` নেই)। OpenClaw তার implicit `anthropic-beta` header Anthropic-এর বাইরের host-এ পাঠায় না। ওগুলো দরকার হলে `models.providers.tokens.headers["anthropic-beta"]` সেট করুন।

## Model বদলানো

যতগুলো Tokens model চান, provider-এর `models` array-তে ততগুলো object যোগ করুন, id নিন [/models](/models) বা `GET /v1/models` থেকে হুবহু। তারপর default বদলে দিন:

```bash
openclaw models set tokens/deepseek/deepseek-v4.1-flash
```

অথবা `agents.defaults.model.primary` edit করুন। agent-এর কাজে কোন model মানায়, তা [Choosing a model](/docs/choosing-a-model)-এ আছে।

## ঠিকমতো চলছে কি না দেখুন

```bash
openclaw models list
openclaw models status
openclaw models status --probe
```

`--probe` একটা আসল request পাঠায়, তাই কয়েকটা token খরচ হয়। probe সফল হলে সেটা Dashboard-এর Usage analytics-এও দেখা যাওয়ার কথা।

## সমস্যা হলে

**request ভুল endpoint-এ যাচ্ছে।** `baseUrl` আছে এমন provider-এ `api` না দিলে default হয় `openai-completions`, আর সেটাই ঠিক। `openai-responses` ব্যবহার করুন শুধু তখন, যখন নিশ্চিত যে model-এর upstream [/v1/responses](/docs/responses) support করে।

**লম্বা conversation ব্যর্থ হয়।** `contextWindow` না থাকলে OpenClaw ধরে নেয় 200,000 token। `maxTokens` না থাকলে সে output-এর কোনো limit-ই পাঠায় না। দুটোতেই model-এর আসল value বসান।

**401 `missing_api_key`।** daemon `TOKENS_API_KEY` দেখতে পাচ্ছে না। daemon যেখান থেকে চালু হয় সেখানে export করুন, অথবা আপনার local config-এর `apiKey`-তে key সরাসরি বসিয়ে দিন (shared বা commit করা file-এ কখনো নয়)।

**request OpenAI-এর মতো দেখাচ্ছে না।** api.openai.com ছাড়া অন্য host-এ OpenClaw `developer` role বন্ধ করে দেয় (`compat.supportsDeveloperRole: false`), আর `service_tier`, `store` ও prompt-cache hint-এর মতো OpenAI-only field বাদ দেয়। এটাই স্বাভাবিক।

**vendor-specific request field দরকার।** সেগুলো রাখুন `agents.defaults.models["tokens/<model>"].params.extra_body`-তে।

**stream-এ usage-এর সংখ্যা আসছে না।** `compat.supportsUsageInStreaming: true` সেট করবেন শুধু তখন, যখন নিশ্চিত যে stream-এ usage আসে। OpenAI-ধাঁচের stream-এ Tokens usage chunk পাঠায় কেবল তখনই, যখন client `stream_options.include_usage` দিয়ে সেটা চায়।

402, 403 আর 429 error-এর জন্য [Troubleshooting](/docs/troubleshooting) দেখুন।

---
Page: https://tokens.bd/bn/docs/openclaw
