# Codex CLI

> Codex CLI-র config.toml-এ Tokens-কে custom model provider হিসেবে যোগ করুন, key রাখুন environment variable-এ, আর যেসব model-এর upstream Responses API বোঝে না সেগুলো সামলান।

Codex CLI হলো OpenAI-এর open-source terminal coding agent। এটা শুধু OpenAI Responses API বোঝে, তাই Tokens-এর সাথে `https://tokens.bd/v1` ব্যবহার করে, আর প্রতিটা request যায় [/v1/responses](/docs/responses)-এ।

:::warning[Responses support নির্ভর করে model-এর ওপর]
Tokens `/v1/responses` request যেমন আছে তেমনই এগিয়ে দেয়। সফল হবে কি না, সেটা নির্ভর করে ওই model-এর provider Responses API পুরোপুরি বোঝে কি না, streaming event আর tool calling সহ। যেসব model-এর upstream Responses support করে, Codex সেগুলোতেই সবচেয়ে ভালো চলে। কোনো model-এ request ব্যর্থ হলে অন্য কিছু বদলানোর আগে আরেকটা model চেষ্টা করুন।
:::

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

[Tokens CLI](/docs/tokens-cli) sign in, key তৈরি আর model বাছাই সামলে নেয়, তারপর Codex-এর provider লিখে দেয়। এর জন্য 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 codex
```

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

:::

CLI `~/.codex/config.toml`-এ (বা `$CODEX_HOME/config.toml`-এ) চিহ্ন দেওয়া একটা block যোগ করে, file-এর বাকি অংশ ছোঁয় না। setup আবার চালালে ওই block-টাই জায়গায় বদলে যায়:

```toml title="~/.codex/config.toml (written by the Tokens CLI)"
[model_providers.tokens]
name = "Tokens"
base_url = "https://tokens.bd/v1"
env_key = "TOKENS_API_KEY"
wire_api = "responses"

[profiles.tokens]
model = "deepseek/deepseek-v4.1-flash"
model_provider = "tokens"
```

file-এ কোনো secret থাকে না। Codex key পড়ে `TOKENS_API_KEY` থেকে, তাই পরের অংশ দেখে ওটা export করুন, তারপর `codex --profile tokens` দিয়ে Codex চালু করুন।

:::note
Codex-এর এখনকার docs-এ profile আলাদা file হিসেবে বর্ণনা করা আছে (`~/.codex/<name>.config.toml`)। `codex --profile tokens` চালিয়ে যদি "profile নেই" জাতীয় error আসে, তাহলে নিচের manual setup করুন। ওতে Tokens-ই default provider হয়ে যায়, কোনো profile লাগে না।
:::

## TOKENS_API_KEY export করুন

CLI key বানিয়ে না দিলে [/dashboard/keys](/dashboard/keys)-এ গিয়ে একটা key তৈরি করুন (spend cap আর allow-list কী, তা [API keys](/docs/api-keys)-এ বলা আছে)।

:::code-tabs

```bash title="macOS / Linux"
# add to ~/.bashrc or ~/.zshrc to keep it
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
```

:::

`setx` শুধু তার পরে খোলা terminal-এ কাজ করে। তাই `codex` চালানোর আগে একটা নতুন terminal খুলে নিন।

## ~/.codex/config.toml নিজে সাজান

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

```bash
npm install -g @openai/codex
```

Windows-এ চাইলে `powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"`-ও চালাতে পারেন।

Codex `config.toml` পড়ে `CODEX_HOME` থেকে। এটা default-এ `~/.codex` (Windows-এ `%USERPROFILE%\.codex`)। provider যোগ করুন, আর top-level `model_provider` ও `model` key দিয়ে সেটা বেছে নিন:

```toml title="~/.codex/config.toml"
model = "deepseek/deepseek-v4.1-flash"
model_provider = "tokens"
# model_context_window = 128000   # optional; placeholder, use the real value

[model_providers.tokens]
name = "Tokens"
base_url = "https://tokens.bd/v1"
env_key = "TOKENS_API_KEY"
wire_api = "responses"
```

TOML-এ top-level key সব `[table]`-এর আগে থাকতে হয়, তাই `model` আর `model_provider` file-এর একদম ওপরের দিকে রাখুন।

Codex docs থেকে কয়েকটা নিয়ম:

- provider id built-in কোনোটা হতে পারবে না (`openai`, `ollama`, `lmstudio`)। `tokens` নামটা ঠিক আছে।
- `wire_api` অবশ্যই `"responses"` হতে হবে। পুরোনো `"chat"` value এখন আর নেয় না।
- `model_context_window` দিলে সংখ্যাটা নিন [/models](/models)-এ model-এর পাতা থেকে। ওপরের `128000` একটা placeholder।

## Model বদলানো

`config.toml`-এ `model` বদলান (CLI-র block ব্যবহার করলে `[profiles.tokens]`-এর ভেতরে), তারপর Codex restart করুন। ঠিক id পাবেন [/models](/models), `node tokens.mjs models` বা `GET /v1/models` থেকে। upstream ভেদে Responses support আলাদা, তাই নতুন model ধরে নেওয়ার আগে নিচের curl দিয়ে test করে নিন। agent-এর কাজের জন্য model বাছাই নিয়ে পরামর্শ আছে [Choosing a model](/docs/choosing-a-model)-এ।

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

আগে দেখুন model-টা Responses endpoint-এ উত্তর দিচ্ছে কি না:

```bash
curl https://tokens.bd/v1/responses \
  -H "Authorization: Bearer $TOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "deepseek/deepseek-v4.1-flash", "input": "Reply with OK", "max_output_tokens": 20}'
```

তারপর Codex দিয়ে একটা one-shot কাজ চালান:

```bash
codex exec "Reply with OK"
```

Interactive-ভাবে চালাতে `codex` (বা `codex --profile tokens`) দিন, আর status line-এ model ও provider ঠিক আছে কি না দেখুন।

## সমস্যা হলে

**`Error loading config.toml: wire_api = "chat" is no longer supported`।** `wire_api` বদলে `"responses"` করুন। Codex Chat Completions support তুলে দিয়েছে।

**`/v1/responses`-এ upstream থেকে 400 বা 404।** ওই model-এর পেছনের provider Responses API বানায়নি, অথবা Codex যে অংশটা ব্যবহার করে সেটা বানায়নি। অন্য model নিন। chat completions ব্যবহার করে এমন tool-এ একই model হয়তো ঠিকই চলবে।

**401 `missing_api_key`।** যে shell থেকে Codex চালু করেছেন, সেখানে `TOKENS_API_KEY` সেট নেই। `setx`-এর পর নতুন terminal খুলুন। macOS/Linux-এ দেখুন আপনার profile file-এ এটা export করা আছে কি না।

**403 `model_not_allowed_on_key`।** key-এর allow-list-এ এই model নেই। allow-list বদলানো যায় না, তাই নতুন key বানান।

**file edit করার পর TOML parse error।** `[table]` header-এর পরে বসানো top-level key ওই table-এরই অংশ হয়ে যায়। `model` আর `model_provider` প্রথম table-এর ওপরে নিয়ে যান।

**Tokens CLI Codex বাদ দিয়ে গেছে।** চিহ্ন দেওয়া block-এর বাইরে file-এ আপনার নিজের `[model_providers.tokens]` বা `[profiles.tokens]` table থাকলে CLI file ছোঁয় না। আপনারটা সরিয়ে দিন বা নাম বদলান, তারপর setup আবার চালান।

402, 429 আর 5xx code-এর জন্য [Troubleshooting](/docs/troubleshooting) দেখুন। Support ticket-এ `x-tokens-request-id` response header-টা অবশ্যই দিন।

---
Page: https://tokens.bd/bn/docs/codex-cli
