Aider একটা open-source AI pair-programming CLI। এটা আপনার git repository-র file এডিট করে আর কাজ করতে করতে commit-ও করে। Tokens-এর সাথে এটা কথা বলে তার OpenAI-compatible provider দিয়ে, আর chat completions পাঠায় https://tokens.bd/v1-এ।
Tokens CLI Aider-কে configure করে না। তবে লাগে মাত্র দুটো environment variable আর একটা flag, তাই automate করার মতো তেমন কিছু নেই।
Aider install করুন#
python -m pip install aider-install
aider-installmacOS আর Linux-এ curl -LsSf https://aider.chat/install.sh | sh চালালে একই কাজ এক ধাপেই হয়ে যায়।
Aider-এর development এখন ধীর। আমরা শেষ যে release দেখেছি, সেটা v0.86.0, 2025 সালের আগস্টের। তবুও Tokens-এর মতো OpenAI-compatible endpoint-এর সাথে এটা ঠিকঠাক চলে।
Aider-এর জন্য OPENAI_API_BASE সেট করুন#
/dashboard/keys-এ গিয়ে একটা key তৈরি করুন (spend cap-এর কথা আছে API keys পাতায়)। key-টা TOKENS_API_KEY-তে রাখুন, তারপর Aider যে variable-গুলো পড়ে, সেগুলোর মাধ্যমে তাকে দিন:
export TOKENS_API_KEY="tok_live_your_key"
export OPENAI_API_BASE="https://tokens.bd/v1"
export OPENAI_API_KEY="$TOKENS_API_KEY"$env:TOKENS_API_KEY = "tok_live_your_key"
$env:OPENAI_API_BASE = "https://tokens.bd/v1"
$env:OPENAI_API_KEY = $env:TOKENS_API_KEYPowerShell-এর এই লাইনগুলো শুধু বর্তমান window-তে কাজ করে। স্থায়ী করতে প্রতিটার জন্য setx চালান (যেমন setx OPENAI_API_BASE https://tokens.bd/v1, বাকিগুলোও একইভাবে), তারপর নতুন terminal খুলুন।
এই variable-গুলো global
অন্য অনেক tool-ও OPENAI_API_BASE আর OPENAI_API_KEY পড়ে। shell profile-এ এগুলো সেট করলে ওই tool-গুলোও Tokens-এ চলে যাবে। সেটা না চাইলে যে terminal-এ Aider চালাচ্ছেন শুধু সেখানেই সেট করুন, অথবা ছোট একটা script বানান যেটা আগে এগুলো export করে তারপর Aider চালায়।
এবার আপনার project-এ Aider চালু করুন:
cd /path/to/your/project
aider --model openai/deepseek/deepseek-v4.1-flashopenai/ prefix Aider-কে বলে তার OpenAI-compatible provider ব্যবহার করতে। Aider-এর docs-এও বলা আছে, সবসময় এটা দিতে হবে। Aider চলে LiteLLM-এর ওপর। LiteLLM প্রথম openai/ টুকু কেটে বাদ দেয় আর deepseek/deepseek-v4.1-flash পাঠায় Tokens-এ। এই কেটে ফেলাটা LiteLLM-এর নিজস্ব স্বাভাবিক আচরণ, Aider-এর পাতায় আলাদা করে লেখা নেই। কিন্তু এ কারণেই পুরো id আমাদের কাছে অক্ষত অবস্থায় পৌঁছায়।
command বানিয়ে নিন#
একটা model বেছে নিন, এই generator আপনার জন্য export লাইনগুলো আর aider command বানিয়ে দেবে:
{
"provider": {
"tokens": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://tokens.bd/v1",
"apiKey": "tok_live_your_key"
},
"models": {
"deepseek/deepseek-v4.1-flash": {}
}
}
}
}Project or global configuration for OpenCode CLI / IDE agent.
{
"env": {
"ANTHROPIC_BASE_URL": "https://tokens.bd",
"ANTHROPIC_AUTH_TOKEN": "tok_live_your_key",
"ANTHROPIC_MODEL": "deepseek/deepseek-v4.1-flash"
}
}Configure Claude Code CLI via ~/.claude/settings.json or environment exports.
# ~/.codex/config.toml model = "deepseek/deepseek-v4.1-flash" model_provider = "tokens" [model_providers.tokens] name = "Tokens" base_url = "https://tokens.bd/v1" env_key = "TOKENS_API_KEY" wire_api = "responses" # In your shell profile (~/.bashrc, ~/.zshrc): export TOKENS_API_KEY="tok_live_your_key"
Add a custom model provider to ~/.codex/config.toml and export the key in your shell.
export OPENAI_API_BASE="https://tokens.bd/v1" export OPENAI_API_KEY="tok_live_your_key" aider --model openai/deepseek/deepseek-v4.1-flash
Run Aider terminal pair programmer against the Tokens gateway.
from openai import OpenAI
client = OpenAI(
base_url="https://tokens.bd/v1",
api_key="tok_live_your_key",
)
response = client.chat.completions.create(
model="deepseek/deepseek-v4.1-flash",
messages=[
{"role": "system", "content": "You are an expert coding assistant."},
{"role": "user", "content": "Write a quick hello world in Python"},
],
temperature=0.7,
)
print(response.choices[0].message.content)Official OpenAI Python library pointing to Tokens endpoint.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://tokens.bd/v1",
apiKey: "tok_live_your_key",
});
async function main() {
const response = await client.chat.completions.create({
model: "deepseek/deepseek-v4.1-flash",
messages: [
{ role: "system", content: "You are an expert coding assistant." },
{ role: "user", content: "Write a quick hello world in Python" },
],
temperature: 0.7,
});
console.log(response.choices[0]?.message?.content);
}
main().catch(console.error);Official OpenAI Node.js SDK pointing to Tokens endpoint.
curl -X POST "https://tokens.bd/v1/chat/completions" \
-H "Authorization: Bearer tok_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4.1-flash",
"messages": [
{"role": "system", "content": "You are an expert coding assistant."},
{"role": "user", "content": "Write a quick hello world in Python"}
],
"temperature": 0.7
}'Raw HTTP POST request to OpenAI-compatible chat completions.
model metadata যোগ করুন#
Aider Tokens-এর model id চেনে না, তাই চালু হওয়ার সময় একটা model warning দেখায়। warning-টা ক্ষতিকর নয়। Aider-কে আসল সীমা জানাতে আর warning বন্ধ করতে .aider.model.metadata.json নামে একটা file বানান। file-টা রাখতে পারেন আপনার home folder-এ, repo-র root-এ বা বর্তমান directory-তে (অথবা --model-metadata-file <path> দিয়ে file-এর path জানিয়ে দিন):
{
"openai/deepseek/deepseek-v4.1-flash": {
"max_input_tokens": 128000,
"max_output_tokens": 8192,
"input_cost_per_token": 0,
"output_cost_per_token": 0,
"litellm_provider": "openai",
"mode": "chat"
}
}token-এর সংখ্যাগুলো আন্দাজি মান। /models-এ model-এর পাতা থেকে আসল context window আর max output দেখে বসান। cost শূন্যই রাখুন। Aider যে cost দেখায় সেটা এমনিতেও শুধু একটা আন্দাজ। আপনার আসল খরচ দেখবেন Dashboard-এ আর node tokens.mjs usage-এ।
model বদলান#
openai/-এর পরে অন্য একটা id দিন:
aider --model openai/<model id>সঠিক id কপি করুন /models থেকে অথবা GET /v1/models থেকে। ওই model-এর warning-ও বন্ধ করতে চাইলে metadata file-এ তার জন্য একটা মিলিয়ে entry যোগ করুন। এডিটিংয়ের কাজে কোন model ভালো, তার আলোচনা আছে Choosing a model পাতায়।
ঠিকমতো চলছে কিনা দেখুন#
উপরের aider --model ... command-টা চালান। চালু হওয়ার সময় Aider দেখায় সে কোন model ব্যবহার করছে। ছোট একটা কিছু জিজ্ঞেস করুন ("What files are in this repo?") আর দেখুন সে উত্তর দিচ্ছে কিনা, আর request-টা Dashboard-এর Usage analytics-এ আসছে কিনা।
Aider-কে বাদ দিয়ে দেখতে চাইলে endpoint-টা সরাসরি পরীক্ষা করুন:
curl https://tokens.bd/v1/chat/completions \
-H "Authorization: Bearer $TOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek/deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Reply with OK"}], "max_tokens": 10}'সমস্যা হলে#
Tokens-এর usage-এ request-ই আসছে না। সম্ভবত openai/ prefix বাদ পড়েছে। prefix ছাড়া Aider (LiteLLM-এর মাধ্যমে) id-এর প্রথম অংশ দেখে অন্য কোনো built-in provider বেছে নিতে পারে, আর request Tokens-এ না গিয়ে সেখানে চলে যায়। command-এ openai/-এর সাথে Tokens-এর পুরো id থাকতে হবে: openai/deepseek/deepseek-v4.1-flash।
404 model_not_found। openai/-এর পরের id কোনো Tokens model-এর সাথে মিলছে না। /models থেকে আবার কপি করুন।
প্রতিটা request-এ 404। OPENAI_API_BASE শেষ হতে হবে /v1 দিয়ে। এটা না থাকলে Tokens-এ ওই path-ই নেই।
401 invalid_api_key বা missing_api_key। OPENAI_API_KEY ফাঁকা, অথবা এখনো কোনো OpenAI key রয়ে গেছে। echo $OPENAI_API_KEY চালান (PowerShell-এ $env:OPENAI_API_KEY)। Tokens key শুরু হয় tok_live_ দিয়ে।
বড় repo-তে context error। Aider token-এর সীমা রিপোর্ট করে, কিন্তু কখনো জোর করে মানায় না। chat-এ যে file-গুলো যোগ করছেন সেগুলো ছোট রাখুন, অথবা বড় window-ওয়ালা model নিন।
চালু হওয়ার সময় "Model warnings"। Aider যে id চেনে না তার জন্য এটা স্বাভাবিক। উপরের metadata file যোগ করুন।
402, 403 আর 429 error-এর জন্য Troubleshooting দেখুন।