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 OpenClaw configure করে না। তাই OpenClaw-এর নিজের onboarding চালান, নয়তো তার config file edit করুন। দুটোতেই কয়েক মিনিট লাগে।
OpenClaw install করুন#
curl -fsSL https://openclaw.ai/install.sh | bashiwr -useb https://openclaw.ai/install.ps1 | iexnpm দিয়ে করতে চাইলে (Node 24.16+ বা 26.1+ লাগবে) npm install -g openclaw@latest --allow-scripts=openclaw চালান, তারপর openclaw onboard --install-daemon।
TOKENS_API_KEY export করুন#
/dashboard/keys-এ গিয়ে একটা key বানান (spend cap নিয়ে জানতে API keys দেখুন), তারপর export করুন:
export TOKENS_API_KEY="tok_live_your_key"$env:TOKENS_API_KEY = "tok_live_your_key" # this window
setx TOKENS_API_KEY "tok_live_your_key" # new windowsOpenClaw background daemon হিসেবে চলে। তাই variable-টা শুধু আপনার এখনকার terminal-এ থাকলে হবে না, daemon-ও যেন দেখতে পায়। সবচেয়ে সহজ উপায়: shell profile-এ রাখুন (Windows-এ setx চালান), তারপর daemon restart করুন।
Option A: non-interactive onboarding#
একটা command-ই Tokens-কে custom provider হিসেবে register করে আর default model ঠিক করে দেয়:
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 openaiopenclaw 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 হয়ে যায়।
{
"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-এ ওই 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 বা GET /v1/models থেকে হুবহু। তারপর default বদলে দিন:
openclaw models set tokens/deepseek/deepseek-v4.1-flashঅথবা agents.defaults.model.primary edit করুন। agent-এর কাজে কোন model মানায়, তা Choosing a model-এ আছে।
ঠিকমতো চলছে কি না দেখুন#
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 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 দেখুন।