Crush হলো Charm-এর open-source terminal coding agent। এটা Tokens-এ জোড়া লাগে openai-compat provider হিসেবে, আর chat completions পাঠায় https://tokens.bd/v1-এ।
Tokens CLI দিয়ে দ্রুত setup#
Tokens CLI browser দিয়ে আপনাকে sign in করায়, key তৈরি করে, default model বেছে নিতে দেয় আর Crush-এ Tokens register করে দেয়। এর জন্য Node 18 বা তার পরের version লাগবে।
curl -fsSL https://tokens.bd/cli/tokens.mjs -o tokens.mjs && node tokens.mjs setup --base-url https://tokens.bd --agents crushiwr https://tokens.bd/cli/tokens.mjs -OutFile tokens.mjs; node tokens.mjs setup --base-url https://tokens.bd --agents crushCLI ~/.config/crush/crush.json-এ একটা tokens provider merge করে, আর পুরোনো file-টা crush.json.tokens-backup-<timestamp> নামে backup রাখে। সে যা লেখে:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"tokens": {
"name": "Tokens",
"type": "openai-compat",
"base_url": "https://tokens.bd/v1",
"api_key": "tok_live_your_key",
"models": [
{
"id": "deepseek/deepseek-v4.1-flash",
"name": "deepseek/deepseek-v4.1-flash",
"context_window": 128000,
"default_max_tokens": 8192
}
]
}
}
}এ নিয়ে তিনটা কথা মনে রাখবেন:
- key-টা file-এর ভেতরেই থাকে। এই file কোনো repository-তে রাখবেন না।
context_windowআরdefault_max_tokensplaceholder। /models-এ model-এর পাতা থেকে আসল value নিয়ে বদলে দিন।- Crush এখন
crush.json-কে deprecated বলে, তবে এখনো support করে। আজ এটা চলে। চলতি format-এ যেতে চাইলে নিচের মতোcrushrc-এ Tokens বসান, আরcrush.jsonথেকেtokensprovider সরিয়ে দিন, যাতে একই জিনিস দুই জায়গায় সামলাতে না হয়।
setup-এর পর Crush খুলে model menu (Ctrl+P) থেকে Tokens-এর model বেছে নিন।
crushrc নিজে সাজান#
Crush না থাকলে install করুন:
brew install charmbracelet/tap/crush
# or
npm install -g @charmland/crushWindows-এ winget install charmbracelet.crush বা scoop install crush-ও চলে।
আপনার key export করুন (spend cap দিয়ে key কীভাবে বানাবেন, তা আছে API keys-এ):
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 windowscrushrc হলো Bash, সাথে Crush-এর কিছু builtin। Crush এটা খোঁজে এই ক্রমে, সবচেয়ে বেশি অগ্রাধিকার আগে:
- project-এর
./.crushrc - project-এর
./crushrc ~/.config/crush/crushrc(Windows-এ%USERPROFILE%\.config\crush\crushrc)
global জায়গা বদলাতে চাইলে CRUSH_GLOBAL_CONFIG আর CRUSH_GLOBAL_DATA দিন।
provider add tokens --type openai-compat \
--name "Tokens" \
--base-url "https://tokens.bd/v1" \
--api-key "${TOKENS_API_KEY:?set TOKENS_API_KEY}"
model add tokens/deepseek/deepseek-v4.1-flash \
--name "DeepSeek V4.1 Flash" \
--context-window 128000 \
--default-max-tokens 8192
model large tokens/deepseek/deepseek-v4.1-flash
model small tokens/deepseek/deepseek-v4.1-flash${TOKENS_API_KEY:?...} লিখলে variable সেট না থাকলে Crush ফাঁকা key পাঠানোর বদলে পরিষ্কার একটা message দিয়ে থেমে যায়। সংখ্যা দুটো বদলে model-এর আসল limit বসান।
openai নয়, openai-compat ব্যবহার করুন। Crush-এর docs-এ openai type রাখা আছে শুধু OpenAI-র নিজের জন্য।
Crush-কে model খুঁজে নিতে দিন#
model add-এর বদলে provider add-এ --discover-models true জুড়ে দিতে পারেন। তখন Crush GET /v1/models থেকে আপনার key যে model-গুলো ব্যবহার করতে পারে, সেগুলো merge করে নেয়। কোনো openai-compat provider-এ model দেওয়া না থাকলে সে নিজে থেকেও খুঁজে নেয়।
Model বদলানো#
model large main model ঠিক করে, আর model small ঠিক করে হালকা কাজে Crush যেটা ব্যবহার করবে সেটা। যে id-গুলো যোগ করেছেন তার যেকোনোটা দেখিয়ে দিন, তারপর Crush restart করুন। session-এর ভেতরে Ctrl+P দিলে model বদলানোর menu খোলে।
model যোগ করতে model add tokens/<model id> আবার চালান, id নিন /models বা node tokens.mjs models থেকে হুবহু। crush.json-এ হলে models array-তে আরেকটা object জুড়ুন। large আর small model বাছতে Choosing a model কাজে লাগবে।
ঠিকমতো চলছে কি না দেখুন#
crush modelsআপনার Tokens model-গুলো <provider>/<id> ধাঁচে list-এ আসার কথা। তারপর crush চালান, একটা ছোট prompt পাঠান, আর দেখুন সেটা Dashboard-এর Usage analytics-এ আসছে কি না। log থাকে project folder-এর ./.crush/logs/crush.log-এ।
সমস্যা হলে#
model id ভুলভাবে ভেঙে যাচ্ছে। model add <provider>/<id> provider আর id আলাদা করে। কিন্তু tokens/deepseek/deepseek-v4.1-flash-এর মতো যে id-র নিজের ভেতরেই slash আছে, Crush তা কীভাবে সামলায় সেটা তাদের docs-এ বলা নেই। model crush models-এ না এলে model add-এর লাইনগুলো সরিয়ে বরং --discover-models true দিন, আর id-টা লিখুন ঠিক যেভাবে crush models ছাপে।
401 missing_api_key। Crush যেখানে চলছে সেখানে variable সেট নেই। ওপরের :? ধাঁচে লিখলে Crush বরং "set TOKENS_API_KEY" বলে থেমে যাবে।
বদল কাজ করছে না। project-এর .crushrc বা crushrc আপনার global file-এর চেয়ে বেশি অগ্রাধিকার পায়। project folder দেখুন।
404 model_not_found বা 403 model_not_allowed_on_key। id-র বানান ভুল, অথবা key-এর allow-list-এ model-টা নেই। allow-list বদলানো যায় না, তাই অন্য set লাগলে নতুন key বানান।
Tokens CLI Crush বাদ দিয়ে গেছে। আপনার crush.json-এ comment আছে, নয়তো JSON ভুল, তাই CLI file ছোঁয়নি। ওপরের crushrc setup করুন, অথবা /dashboard/connect থেকে snippet copy করুন।
Config file code হিসেবে চলে
crushrc shell হিসেবে execute হয়, আর crush.json-এর ভেতরে $(...) থাকলে Crush সেটা load করার সময় চলে যায়। শুধু সেই config file ব্যবহার করুন যেটা আপনি নিজে লিখেছেন বা পড়ে দেখেছেন, বিশেষ করে clone করা repository-র project-level file।
অন্য error code-এর জন্য Troubleshooting দেখুন।