Droid হলো Factory-র terminal coding agent। এটা bring-your-own-key custom model সাপোর্ট করে, যেগুলো ঘোষণা করতে হয় ~/.factory/settings.json-এ। Tokens-এর জন্য ব্যবহার করুন generic-chat-completion-api provider type, যেটা OpenAI Chat Completions request পাঠায় https://tokens.bd/v1-এ। Anthropic Messages variant নিচে আলাদা করে বলা আছে।
Droid install করুন#
Factory-র quickstart থেকে:
# macOS / Linux
curl -fsSL https://app.factory.ai/cli | sh
# or
brew install --cask droid
npm install -g droid# Windows PowerShell
irm https://app.factory.ai/cli/windows | iex~/.factory/settings.json-এ Tokens custom model যোগ করুন#
1. আপনার key export করুন#
Dashboard থেকে একটা key তৈরি করুন (cap আর allow-list-এর কথা আছে API keys পাতায়), তারপর shell profile-এ সেটা export করুন:
export TOKENS_API_KEY=tok_live_your_key2. custom model যোগ করুন#
~/.factory/settings.json-এ একটা customModels array যোগ করুন:
{
"customModels": [
{
"model": "deepseek/deepseek-v4.1-flash",
"displayName": "DeepSeek V4.1 Flash (Tokens)",
"baseUrl": "https://tokens.bd/v1",
"apiKey": "${TOKENS_API_KEY}",
"provider": "generic-chat-completion-api",
"maxOutputTokens": 8192,
"noImageSupport": true
}
]
}প্রতিটা field-এর কাজ:
modelহলো Tokens-এর হুবহু ID, যেমন আছে তেমনই upstream-এ যায়। ID-র ভেতরের slash নিয়ে চিন্তার কিছু নেই।displayNameহলো Droid-এর model menu-তে যে নামে দেখবেন।baseUrlহলো OpenAI-compatible base,/v1সহ।apiKey-তে${VAR}expansion ব্যবহার হয়েছে, তাই key file-এ না থেকে আপনার environment-এই থাকে।providerঠিক করে কোন protocol চলবে। নিচের table দেখুন।maxOutputTokensএকটা উদাহরণ। model catalog থেকে model-এর output সীমা দেখে বসান।noImageSupport: trueদিলে text-only model-এ Droid image পাঠায় না। catalog-এ যে model-এর image input আছে, সেটার জন্য এটা সরিয়ে দিন।
file-এ আগে থেকে অন্য settings থাকলে file বদলে না দিয়ে তার পাশে customModels যোগ করুন।
provider type বেছে নিন#
provider-এর মান অবশ্যই এগুলোর একটা হতে হবে:
provider | Protocol | Tokens endpoint |
|---|---|---|
generic-chat-completion-api | OpenAI Chat Completions | /v1/chat/completions |
openai | OpenAI Responses | /v1/responses |
anthropic | Anthropic Messages | /v1/messages |
Tokens-এর জন্য generic-chat-completion-api ব্যবহার করুন। openai type-টাকেই স্বাভাবিক পছন্দ মনে হয়, কিন্তু ওটার মানে Responses API। Tokens /v1/responses চালায় ঠিকই, তবে সেটা কাজ করবে কিনা নির্ভর করে প্রতিটা model-এর পেছনের upstream provider-এর ওপর।
Anthropic Messages variant#
Messages API-র জন্য "provider": "anthropic" আর "baseUrl": "https://tokens.bd" দিন, /v1 ছাড়া। Factory-র নিজের https://api.anthropic.com উদাহরণের সাথে এটা মেলে। Droid default-এ key পাঠায় x-api-key header-এ, আর Tokens সেটা গ্রহণ করে। চাইলে "authMode": "bearer" দিলে সেটা Authorization: Bearer-এ বদলে যায়। format-এর বিবরণ আছে Messages পাতায়।
পুরোনো config.json#
পুরোনো setup-এ ~/.factory/config.json আর snake_case-এর custom_models ব্যবহার হতো। Droid এখনো ওটা load করে, কিন্তু ওই file-এ ${VAR} expand হয় না, তাই key plain text-এ লিখতে হবে। settings.json-এ চলে আসুন।
model বদলান#
প্রতিটা Tokens model-এর জন্য customModels-এ একটা করে object যোগ করুন। Droid-এ /model চালান। custom model-গুলো "Custom models" নামে আলাদা section-এ দেখা যায়। Droid settings file-এর ওপর নজর রাখে, তাই নতুন entry restart ছাড়াই দেখা যায়।
সঠিক ID পাবেন catalog থেকে, অথবা:
curl -s https://tokens.bd/v1/models -H "Authorization: Bearer $TOKENS_API_KEY"agent-এর কাজে কোন model ভালো, তা Choosing a model পাতায় আছে।
ঠিকমতো চলছে কিনা দেখুন#
আগে key আর model সরাসরি পরীক্ষা করুন:
curl -s https://tokens.bd/v1/chat/completions \
-H "Authorization: Bearer $TOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek/deepseek-v4.1-flash", "max_tokens": 16, "messages": [{"role": "user", "content": "Reply with OK"}]}'এরপর droid চালান, /model থেকে "DeepSeek V4.1 Flash (Tokens)" বেছে নিন, আর বর্তমান project-এর একটা file পড়তে বলুন। request-টা আপনার Dashboard-এর usage analytics-এ দেখা যাবে।
সমস্যা হলে#
Custom models-এর নিচে model আসছে না। JSON ভুল আছে (সাধারণত শেষে বাড়তি comma থাকলে এটা হয়), অথবা customModels camelCase নামে config.json-এ বসানো হয়েছে।
401 missing_api_key। ${TOKENS_API_KEY} expand হয়ে ফাঁকা হয়ে গেছে। যে shell থেকে droid চালান সেখানে variable-টা export করুন।
401 invalid_api_key। key ভুল, revoke করা বা rotate করা। rotate করলে পুরোনো secret সঙ্গে সঙ্গে বন্ধ হয়ে যায়।
404 model_not_found। model-এ provider prefix সহ Tokens-এর পুরো ID দিতে হবে।
প্রতিটা request-এ 404। baseUrl দেখুন: generic-chat-completion-api-র জন্য https://tokens.bd/v1, anthropic-এর জন্য https://tokens.bd।
tool বা caching-এ অদ্ভুত আচরণ। Factory বলছে, Droid-এর সাথে শুধু official Anthropic আর OpenAI model পুরোপুরি পরীক্ষা করা, আর generic provider-এ prompt caching-এর নিশ্চয়তা নেই। gateway-র দোষ ধরার আগে অন্য একটা model দিয়ে দেখুন।
429 error। Retry-After দেখুন, আর প্রতিটা rate limit code-এর জন্য Troubleshooting পড়ুন।
request-এর format আছে Chat Completions পাতায়। একই ধাঁচের setup-ওয়ালা আরও terminal agent: Claude Code, OpenCode আর Crush।
সূত্র: Factory docs, BYOK overview, Droid quickstart, 2026 সালের অক্টোবরে যাচাই করা।