# Crush

> Charm-এর Crush-এ Tokens যোগ করুন openai-compat provider হিসেবে, নতুন crushrc format-এ অথবা Tokens CLI-র লেখা পুরোনো crush.json-এ, তারপর large আর small model বেছে নিন।

Crush হলো Charm-এর open-source terminal coding agent। এটা Tokens-এ জোড়া লাগে `openai-compat` provider হিসেবে, আর chat completions পাঠায় `https://tokens.bd/v1`-এ।

## Tokens CLI দিয়ে দ্রুত setup

[Tokens CLI](/docs/tokens-cli) browser দিয়ে আপনাকে sign in করায়, key তৈরি করে, default model বেছে নিতে দেয় আর Crush-এ Tokens register করে দেয়। এর জন্য Node 18 বা তার পরের version লাগবে।

:::code-tabs

```bash title="macOS / Linux"
curl -fsSL https://tokens.bd/cli/tokens.mjs -o tokens.mjs && node tokens.mjs setup --base-url https://tokens.bd --agents crush
```

```powershell title="Windows PowerShell"
iwr https://tokens.bd/cli/tokens.mjs -OutFile tokens.mjs; node tokens.mjs setup --base-url https://tokens.bd --agents crush
```

:::

CLI `~/.config/crush/crush.json`-এ একটা `tokens` provider merge করে, আর পুরোনো file-টা `crush.json.tokens-backup-<timestamp>` নামে backup রাখে। সে যা লেখে:

```json title="~/.config/crush/crush.json (written by the Tokens CLI)"
{
  "$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_tokens` placeholder। [/models](/models)-এ model-এর পাতা থেকে আসল value নিয়ে বদলে দিন।
- Crush এখন `crush.json`-কে deprecated বলে, তবে এখনো support করে। আজ এটা চলে। চলতি format-এ যেতে চাইলে নিচের মতো `crushrc`-এ Tokens বসান, আর `crush.json` থেকে `tokens` provider সরিয়ে দিন, যাতে একই জিনিস দুই জায়গায় সামলাতে না হয়।

setup-এর পর Crush খুলে model menu (Ctrl+P) থেকে Tokens-এর model বেছে নিন।

## crushrc নিজে সাজান

Crush না থাকলে install করুন:

```bash
brew install charmbracelet/tap/crush
# or
npm install -g @charmland/crush
```

Windows-এ `winget install charmbracelet.crush` বা `scoop install crush`-ও চলে।

আপনার key export করুন (spend cap দিয়ে key কীভাবে বানাবেন, তা আছে [API keys](/docs/api-keys)-এ):

:::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
```

:::

`crushrc` হলো Bash, সাথে Crush-এর কিছু builtin। Crush এটা খোঁজে এই ক্রমে, সবচেয়ে বেশি অগ্রাধিকার আগে:

1. project-এর `./.crushrc`
2. project-এর `./crushrc`
3. `~/.config/crush/crushrc` (Windows-এ `%USERPROFILE%\.config\crush\crushrc`)

global জায়গা বদলাতে চাইলে `CRUSH_GLOBAL_CONFIG` আর `CRUSH_GLOBAL_DATA` দিন।

```bash title="~/.config/crush/crushrc"
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](/models) বা `node tokens.mjs models` থেকে হুবহু। `crush.json`-এ হলে `models` array-তে আরেকটা object জুড়ুন। large আর small model বাছতে [Choosing a model](/docs/choosing-a-model) কাজে লাগবে।

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

```bash
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](/dashboard/connect) থেকে snippet copy করুন।

:::warning[Config file code হিসেবে চলে]
`crushrc` shell হিসেবে execute হয়, আর `crush.json`-এর ভেতরে `$(...)` থাকলে Crush সেটা load করার সময় চলে যায়। শুধু সেই config file ব্যবহার করুন যেটা আপনি নিজে লিখেছেন বা পড়ে দেখেছেন, বিশেষ করে clone করা repository-র project-level file।
:::

অন্য error code-এর জন্য [Troubleshooting](/docs/troubleshooting) দেখুন।

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