# User Guide (বাংলা) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) প্রোভাইডার কনফিগার করা, কম্বো তৈরি করা, CLI টুল ইন্টিগ্রেট করা এবং OmniRoute ডিপ্লয় করার সম্পূর্ণ নির্দেশিকা। --- ## সূচিপত্র - [এক নজরে মূল্য](#-pricing-at-a-glance) - [ব্যবহারের ক্ষেত্র](#-use-cases) - [প্রোভাইডার সেটআপ](#-provider-setup) - [CLI ইন্টিগ্রেশন](#-cli-integration) - [ডিপ্লয়মেন্ট](#-deployment) - [উপলভ্য মডেল](#-available-models) - [উন্নত ফিচার](#-advanced-features) - [স্বয়ংক্রিয় রাউটিং (কোনো কনফিগারেশন ছাড়াই)](#-auto-routing-zero-config) - [MCP ও A2A ইন্টিগ্রেশন](#-mcp--a2a-integration) - [স্কিলস সিস্টেম](#-skills-system) - [মেমরি সিস্টেম](#-memory-system) - [ওয়েবহুক](#-webhooks) - [ক্লাউড এজেন্ট](#-cloud-agents) - [প্রোগ্রামভিত্তিক ব্যবস্থাপনা](#-programmatic-management) - [অভ্যন্তরীণ CLI](#-internal-cli) - [ডেস্কটপ অ্যাপ্লিকেশন (Electron)](#-desktop-application-electron) --- ## 💰 এক নজরে মূল্য | স্তর | প্রোভাইডার | খরচ | কোটা রিসেট | যেসব ক্ষেত্রে সেরা | | ------------------- | ----------------- | ---------------------- | -------------------------- | ------------------------------ | | **💳 সাবস্ক্রিপশন** | Claude Code (Pro) | $20/মাস | 5 ঘণ্টা + সাপ্তাহিক | ইতিমধ্যে সাবস্ক্রাইব করা থাকলে | | | Codex (Plus/Pro) | $20-200/মাস | 5 ঘণ্টা + সাপ্তাহিক | OpenAI ব্যবহারকারীদের জন্য | | | GitHub Copilot | $10-19/মাস | মাসিক | GitHub ব্যবহারকারীদের জন্য | | **🔑 API KEY** | DeepSeek | ব্যবহার অনুযায়ী মূল্য | নেই | কম খরচে রিজনিং | | | Groq | ব্যবহার অনুযায়ী মূল্য | নেই | অত্যন্ত দ্রুত ইনফারেন্স | | | xAI (Grok) | ব্যবহার অনুযায়ী মূল্য | নেই | Grok 4 রিজনিং | | | Mistral | ব্যবহার অনুযায়ী মূল্য | নেই | EU-তে হোস্ট করা মডেল | | | Perplexity | ব্যবহার অনুযায়ী মূল্য | নেই | সার্চ-সমৃদ্ধ ফলাফল | | | Together AI | ব্যবহার অনুযায়ী মূল্য | নেই | ওপেন-সোর্স মডেল | | | Fireworks AI | ব্যবহার অনুযায়ী মূল্য | নেই | দ্রুত FLUX ইমেজ | | | Cerebras | ব্যবহার অনুযায়ী মূল্য | নেই | ওয়েফার-স্কেল গতি | | | Cohere | ব্যবহার অনুযায়ী মূল্য | নেই | Command R+ RAG | | | NVIDIA NIM | ব্যবহার অনুযায়ী মূল্য | নেই | এন্টারপ্রাইজ মডেল | | | Baidu Qianfan | ব্যবহার অনুযায়ী মূল্য | নেই | ERNIE মডেল | | **💰 সাশ্রয়ী** | GLM-4.7 | $0.6/1M | প্রতিদিন সকাল 10টা | সাশ্রয়ী ব্যাকআপ | | | MiniMax M2.1 | $0.2/1M | প্রতি 5 ঘণ্টায় রোলিং | সবচেয়ে সস্তা বিকল্প | | | Kimi K2 | $9/মাস নির্ধারিত | 10M টোকেন/মাস | পূর্বানুমানযোগ্য খরচ | | **🆓 বিনামূল্যে** | Qoder | $0 | প্রোভাইডারের সীমা প্রযোজ্য | বর্তমান ক্যাটালগ যাচাই করুন | | | Kiro | $0 | ~50 ক্রেডিট/মাস | বিনামূল্যে Claude | --- ## 🎯 ব্যবহারের ক্ষেত্র ### ক্ষেত্র 1: "আমার Claude Pro সাবস্ক্রিপশন আছে" **সমস্যা:** কোটা অব্যবহৃত অবস্থায় মেয়াদোত্তীর্ণ হয়ে যায়, নিবিড় কোডিংয়ের সময় রেট লিমিটে পৌঁছে যায় ``` কম্বো: "maximize-claude" 1. cc/claude-opus-4-7 (সাবস্ক্রিপশন সম্পূর্ণভাবে ব্যবহার করুন) 2. glm/glm-4.7 (কোটা শেষ হলে সাশ্রয়ী ব্যাকআপ) 3. if/qwen3.8-max-preview (জরুরি পরিস্থিতিতে বিনামূল্যের ফলব্যাক) মাসিক খরচ: $20 (সাবস্ক্রিপশন) + ~$5 (ব্যাকআপ) = মোট $25 বনাম $20 + সীমায় পৌঁছানো = হতাশা ``` ### ক্ষেত্র 2: "আমি শূন্য খরচ চাই" **সমস্যা:** সাবস্ক্রিপশনের খরচ বহন করতে পারি না, নির্ভরযোগ্য AI কোডিং প্রয়োজন ``` কম্বো: "zero-cost" 1. if/kimi-k2.7-code (তালিকাভুক্ত বিনামূল্যের অ্যাক্সেস; রেট লিমিট প্রযোজ্য হতে পারে) 2. kr/qwen3-coder-next (Kiro-এর বিনামূল্যের ফলব্যাক) মাসিক খরচ: $0 গুণমান: আপনার কাজের জন্য মডেল, সীমাবদ্ধতা, গোপনীয়তা এবং SLA যাচাই করুন ``` ### ক্ষেত্র 3: "আমার কোনো বাধা ছাড়াই 24/7 কোডিং প্রয়োজন" **সমস্যা:** সময়সীমা আছে, ডাউনটাইম বহন করা সম্ভব নয় ``` কম্বো: "always-on" 1. cc/claude-opus-4-7 (সেরা গুণমান) 2. cx/gpt-5.5 (দ্বিতীয় সাবস্ক্রিপশন) 3. glm/glm-4.7 (সাশ্রয়ী, প্রতিদিন রিসেট হয়) 4. minimax/MiniMax-M2.1 (সবচেয়ে সস্তা, 5 ঘণ্টায় রিসেট) 5. if/deepseek-v4-flash (তালিকাভুক্ত বিনামূল্যের অ্যাক্সেস; রেট লিমিট প্রযোজ্য হতে পারে) ফলাফল: ফলব্যাকের 5টি স্তর সহনশীলতা বাড়ায়; আপস্ট্রিমের প্রাপ্যতা নিশ্চিত নয় মাসিক খরচ: $20-200 (সাবস্ক্রিপশন) + $10-20 (ব্যাকআপ) ``` ### ক্ষেত্র 4: "আমি OpenClaw-এ বিনামূল্যের AI চাই" **সমস্যা:** মেসেজিং অ্যাপে সম্পূর্ণ বিনামূল্যের AI সহকারী প্রয়োজন ``` কম্বো: "openclaw-free" 1. if/qwen3.8-max-preview (তালিকাভুক্ত বিনামূল্যের অ্যাক্সেস; রেট লিমিট প্রযোজ্য হতে পারে) 2. if/deepseek-v4-flash (তালিকাভুক্ত বিনামূল্যের অ্যাক্সেস; রেট লিমিট প্রযোজ্য হতে পারে) 3. if/kimi-k2.7-code (তালিকাভুক্ত বিনামূল্যের অ্যাক্সেস; রেট লিমিট প্রযোজ্য হতে পারে) মাসিক খরচ: $0 যেগুলোর মাধ্যমে অ্যাক্সেস করা যায়: WhatsApp, Telegram, Slack, Discord, iMessage, Signal... ``` --- ## 📖 Provider সেটআপ একটি CSV বা JSON ফাইল থেকে একসঙ্গে API-key সংযোগ যোগ করতে **Dashboard → Providers → Import from file** ব্যবহার করুন। কলামগুলোর অবস্থান নির্দিষ্ট (`provider,name,apiKey,baseUrl,priority`); `provider`-কে আগে থেকেই managed provider অথবা একটি compatible node হিসেবে থাকতে হবে। দেখুন [CSV বা JSON ফাইল থেকে providers ইমপোর্ট করুন](../providers/CSV-IMPORT.md)। ### 🔐 সাবস্ক্রিপশন প্রদানকারী #### Claude Code (Pro/Max) ```bash Dashboard → Providers → Claude Code সংযুক্ত করুন → OAuth লগইন → স্বয়ংক্রিয় token refresh → ৫-ঘণ্টা + সাপ্তাহিক quota tracking Models: cc/claude-opus-4-7 cc/claude-sonnet-4-6 cc/claude-haiku-4-5-20251001 ``` **Pro Tip:** জটিল কাজের জন্য Opus এবং দ্রুততার জন্য Sonnet ব্যবহার করুন। OmniRoute প্রতিটি model অনুযায়ী quota track করে! OmniRoute host-এ browser না থাকলে, Claude Code-এ লগইন করা যেকোনো জায়গায় `claude setup-token` চালান এবং এক বছরের token-টি **Setup Token** tab-এ পেস্ট করুন। দেখুন [setup token দিয়ে Claude Code](../providers/CLAUDE_CODE_SETUP_TOKEN.md)। Claude এবং Claude Code-compatible route-গুলো Opus ও Sonnet model-এর জন্য `max` thinking effort বজায় রাখে। Haiku model `max` effort tier গ্রহণ করে না, তাই OmniRoute upstream-এ পাঠানোর আগে ওই request-কে একটি উচ্চ thinking budget-এ নামিয়ে আনে। #### OpenAI Codex (Plus/Pro) ```bash Dashboard → Providers → Codex সংযুক্ত করুন → OAuth লগইন (port 1455) → ৫-ঘণ্টা + সাপ্তাহিক reset Models: cx/gpt-5.5 cx/gpt-5.4 cx/gpt-5.3-codex cx/gpt-5.3-codex-spark ``` #### GitHub Copilot ```bash Dashboard → Providers → GitHub সংযুক্ত করুন → GitHub-এর মাধ্যমে OAuth → মাসিক reset (মাসের ১ তারিখে) Models: gh/gpt-5.5 gh/gpt-5.4 gh/claude-sonnet-4.6 gh/claude-opus-4.7 gh/gemini-3.1-pro-preview ``` **AI Credits (token-ভিত্তিক billing)।** GitHub যখন account-এর জন্য `credits_used` report করে, তখন Provider Limits card-এ বর্তমান billing period-এ ব্যবহৃত credits-সহ একটি **AI Credits** row দেখা যায়, এমনকি unlimited organization plan থাকলেও। **Local AI Credits limit।** একটি GitHub connection সম্পাদনা করে **AI Credits limit per billing period** (`providerSpecificData.githubCreditLimit`) সেট করুন। খালি রাখলে এটি নিষ্ক্রিয় থাকে; `0` হলে connection-টি সবসময় বাদ পড়ে। সর্বশেষ usage reading limit-এর সমান বা বেশি হলে, account selection ওই connection-টি বাদ দেয় এবং routing আপনার অন্যান্য connection-এ fallback করে—যেভাবে quota-policy cutoff-এর ক্ষেত্রেও হয়। এই check-টি periodic quota refresh ইতিমধ্যে যে usage সংগ্রহ করে তা পড়ে—request path-এ এটি কখনও GitHub-কে call করে না—এবং fail open নীতি অনুসরণ করে: missing বা stale reading (১৫ মিনিটের বেশি পুরোনো, অথবা ইতিমধ্যে reset হওয়া billing period-এর) connection-টিকে block করে না। এটি একটি local safeguard, **নিশ্চিত spending ceiling নয়**: GitHub-এর reporting delay, refresh interval, চলমান request এবং OmniRoute-এর বাইরে হওয়া usage-এর কারণে limit ছাড়িয়ে যেতে পারে। কঠোর cap-এর জন্য GitHub-এর নিজস্ব spending controls ব্যবহার করুন। ### 💰 সাশ্রয়ী প্রদানকারী #### GLM-4.7 (দৈনিক reset, $0.6/1M) 1. সাইন আপ করুন: [Zhipu AI](https://open.bigmodel.cn) 2. Coding Plan থেকে API key সংগ্রহ করুন 3. Dashboard → Add API Key: Provider: `glm`, API Key: `your-key` **ব্যবহার করুন:** `glm/glm-4.7` — **Pro Tip:** Coding Plan ১/৭ খরচে ৩× quota দেয়! প্রতিদিন সকাল ১০:০০টায় reset হয়। #### MiniMax M2.1 (৫-ঘণ্টা reset, $0.20/1M) 1. সাইন আপ করুন: [MiniMax](https://www.minimax.io) 2. API key সংগ্রহ করুন → Dashboard → Add API Key **ব্যবহার করুন:** `minimax/MiniMax-M2.1` — **Pro Tip:** দীর্ঘ context-এর জন্য সবচেয়ে সাশ্রয়ী বিকল্প (1M tokens)! #### Kimi K2 ($9/মাস নির্দিষ্ট মূল্য) 1. সাবস্ক্রাইব করুন: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. API key সংগ্রহ করুন → Dashboard → Add API Key **ব্যবহার করুন:** `kimi/kimi-k2.5` — **Pro Tip:** 10M tokens-এর জন্য নির্দিষ্ট $9/মাস = কার্যকর খরচ $0.90/1M! #### Baidu Qianfan / ERNIE 1. সাইন আপ করুন: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop) 2. একটি Qianfan API key তৈরি করুন → Dashboard → Add API Key: Provider: `qianfan` **ব্যবহার করুন:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1`, অথবা অন্য কোনো Qianfan OpenAI-compatible model ID। ### 🆓 বিনামূল্যের প্রদানকারী No-auth free provider-গুলোর provider page-এ **No authentication required**-এর পাশে একটি switch থাকে। এটি বন্ধ করলে ওই provider নিষ্ক্রিয় হয়, Providers configured/compact view থেকে সরিয়ে দেওয়া হয় এবং `/v1/models` থেকে তার model-গুলো সরিয়ে দেওয়া হয়। #### Qoder (৯টি FREE model) ```bash Dashboard → Qoder সংযুক্ত করুন → OAuth লগইন → Access বর্তমান provider limit-এর অধীন Models: if/qwen3.8-max-preview, if/qwen3.7-max, if/qwen3.7-plus, if/kimi-k3, if/kimi-k2.7-code, if/glm-5.2, if/deepseek-v4-pro, if/deepseek-v4-flash, if/minimax-m3 ``` #### Kiro (Claude FREE) ```bash Dashboard → Kiro সংযুক্ত করুন → AWS Builder ID অথবা Google/GitHub → ~50 credits/মাস Models: kr/claude-sonnet-4.5, kr/claude-haiku-4.5 ``` --- ## 🎨 কম্বো প্রতিটি কার্ডের হ্যান্ডেল টেনে আপনি সরাসরি **ড্যাশবোর্ড → কম্বো**-তে কম্বো কার্ডগুলোর ক্রম পরিবর্তন করতে পারেন। ক্রমটি SQLite-এ সংরক্ষিত হয় এবং পুনরায় লোড করলে পুনরুদ্ধার করা হয়। ### উদাহরণ ১: সাবস্ক্রিপশনের সর্বোচ্চ ব্যবহার → সাশ্রয়ী ব্যাকআপ ``` ড্যাশবোর্ড → কম্বো → নতুন তৈরি করুন নাম: premium-coding মডেল: 1. cc/claude-opus-4-7 (প্রাথমিক সাবস্ক্রিপশন) 2. glm/glm-4.7 (সাশ্রয়ী ব্যাকআপ, $0.6/1M) 3. minimax/MiniMax-M2.7 (সবচেয়ে সাশ্রয়ী ফলব্যাক, $0.3/1M) CLI-তে ব্যবহার করুন: premium-coding ``` ### উদাহরণ ২: শুধুমাত্র বিনামূল্যের (শূন্য খরচ) ``` নাম: free-combo মডেল: 1. if/kimi-k2.7-code (বিনামূল্যের অ্যাক্সেস হিসেবে তালিকাভুক্ত; প্রদানকারীর সীমা প্রযোজ্য হতে পারে) 2. kr/qwen3-coder-next (Kiro-এর বিনামূল্যের ফলব্যাক) খরচ: বর্তমানে $0 হিসেবে তালিকাভুক্ত; শর্তাবলি ও প্রাপ্যতা পরিবর্তিত হতে পারে ``` --- ## 🔧 CLI ইন্টিগ্রেশন ### Cursor IDE **OmniRoute ক্লায়েন্ট হিসেবে Cursor ব্যবহার করা** (OmniRoute-এর মাধ্যমে Cursor চ্যাট রাউট করুন): ``` সেটিংস → মডেল → উন্নত: OpenAI API বেস URL: http://localhost:20128/v1 OpenAI API কী: [OmniRoute ড্যাশবোর্ড থেকে] মডেল: cc/claude-opus-4-7 ``` **Cursor প্রদানকারী হিসেবে OmniRoute ব্যবহার করা** (OmniRoute আপস্ট্রিমে Cursor-কে কল করে): অগ্রাধিকার দিন **ড্যাশবোর্ড → প্রদানকারী → Cursor → Cursor দিয়ে লগইন করুন**। Docker-এ, [`docs/providers/CURSOR-DOCKER.md`](../providers/CURSOR-DOCKER.md) দেখুন। ### Claude Code `~/.claude/settings.json` সম্পাদনা করুন: ```json { "env": { "ANTHROPIC_BASE_URL": "http://localhost:20128", "ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key" } } ``` এখানে Claude-সামঞ্জস্যপূর্ণ রুট এন্ডপয়েন্ট ব্যবহার করুন। `ANTHROPIC_BASE_URL`-এর শেষে `/v1` যোগ করবেন না। ### Codex CLI ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### OpenClaw `~/.openclaw/openclaw.json` সম্পাদনা করুন: ```json { "agents": { "defaults": { "model": { "primary": "omniroute/if/kimi-k2.7-code" } } }, "models": { "providers": { "omniroute": { "baseUrl": "http://localhost:20128/v1", "apiKey": "your-omniroute-api-key", "api": "openai-completions", "models": [{ "id": "if/kimi-k2.7-code", "name": "Kimi K2.7 Code" }] } } } } ``` **অথবা ড্যাশবোর্ড ব্যবহার করুন:** CLI টুলস → OpenClaw → স্বয়ংক্রিয় কনফিগারেশন ### Cline / Continue / RooCode ``` প্রদানকারী: OpenAI Compatible বেস URL: http://localhost:20128/v1 API কী: [ড্যাশবোর্ড থেকে] মডেল: cc/claude-opus-4-7 ``` --- ## 🚀 স্থাপনা ### গ্লোবাল এনপিএম ইনস্টল (প্রস্তাবিত) ```bash npm install -g omniroute # Create config directory mkdir -p ~/.omniroute # Create .env file (see .env.example) cp .env.example ~/.omniroute/.env # Start server omniroute # Or with custom port: omniroute --port 3000 ``` CLI স্বয়ংক্রিয়ভাবে `~/.omniroute/.env` বা `./.env` থেকে `.env` লোড করে। ওয়ার্কিং ডাইরেক্টরিতে একটি `./.env` শুধুমাত্র কীগুলির একটি সংক্ষিপ্ত অনুমোদিত তালিকা সেট করতে পারে (পোর্ট, `REQUIRE_API_KEY`, লোকেল এবং রঙ সেটিংস); অন্য সবকিছু `~/.omniroute/.env` এ রাখুন। [CLI লঞ্চ চুক্তি](CLI-LAUNCH-CONTRACTS.md#working-directory-env) দেখুন। ### ট্রে মোড সিস্টেম ট্রেতে OmniRoute শুরু করুন: ```bash omniroute serve --tray ``` সার্ভার এবং ট্রে প্রস্তুত হওয়ার পরে কমান্ডটি ফিরে আসে। সার্ভার টার্মিনাল ছাড়াই চলতে থাকে। ট্রে মোড macOS, Windows এবং গ্রাফিকাল Linux সেশন সমর্থন করে। ট্রে মোড স্বয়ংক্রিয়ভাবে ড্যাশবোর্ড খুলবে না। এই ক্রিয়াগুলির জন্য ট্রে মেনু ব্যবহার করুন: - ড্যাশবোর্ড খুলুন। - `/dashboard/logs` খুলুন। - অটো-স্টার্ট পরিবর্তন করুন। - OmniRoute বন্ধ করুন। এই বিকল্পগুলির সাথে `--tray` একত্রিত করবেন না: - `--daemon` - `--log` - `--no-recovery` এই মোডগুলির জন্য বিভিন্ন প্রক্রিয়া মালিকানার প্রয়োজন। পরবর্তী মেশিন লগইনে স্টার্টআপ সক্ষম করুন: ```bash omniroute autostart enable ``` অটো-স্টার্ট macOS, Windows এবং গ্রাফিক্যাল Linux সেশনে ট্রে মোড ব্যবহার করে। হেডলেস Linux বিদ্যমান সিস্টেমড ব্যবহারকারী পরিষেবা ব্যবহার করে। লগইন এ স্টার্টআপ অক্ষম করুন: ```bash omniroute autostart disable ``` ### আনইনস্টল হচ্ছে যখন আপনার আর OmniRoute প্রয়োজন হয় না, তখন আমরা পরিষ্কার অপসারণের জন্য দুটি দ্রুত স্ক্রিপ্ট প্রদান করি: | আদেশ | অ্যাকশন | | ------------------------ | ---------------------------------------------------------------------------------- | | `npm run uninstall` | সিস্টেম অ্যাপ রিমুভ করে কিন্তু** আপনার DB এবং কনফিগারেশন রাখে** `~/.omniroute` তে। | | `npm run uninstall:full` | অ্যাপ AND স্থায়ীভাবে সরিয়ে দেয়** সমস্ত কনফিগারেশন, কী এবং ডাটাবেস মুছে দেয়** . | > দ্রষ্টব্য: এই কমান্ডগুলি চালানোর জন্য, OmniRoute প্রকল্প ফোল্ডারে নেভিগেট করুন (যদি আপনি এটি ক্লোন করেন) এবং সেগুলি চালান। বিকল্পভাবে, যদি বিশ্বব্যাপী ইনস্টল করা থাকে, আপনি সহজভাবে `npm uninstall -g omniroute` চালাতে পারেন। ### VPS স্থাপনা ```bash git clone https://github.com/diegosouzapw/OmniRoute.git cd OmniRoute && npm install && npm run build export JWT_SECRET="your-secure-secret-change-this" export INITIAL_PASSWORD="your-password" export DATA_DIR="/var/lib/omniroute" export PORT="20128" export HOSTNAME="0.0.0.0" export NODE_ENV="production" export NEXT_PUBLIC_BASE_URL="http://localhost:20128" export API_KEY_SECRET="endpoint-proxy-api-key-secret" npm run start # Or: pm2 start npm --name omniroute -- start ``` ### PM2 স্থাপনা (লো মেমরি) সীমিত RAM সহ সার্ভারগুলির জন্য, মেমরি সীমা বিকল্পটি ব্যবহার করুন: ```bash # With 512MB limit (default) pm2 start npm --name omniroute -- start # Or with custom memory limit OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start # Or using ecosystem.config.js pm2 start ecosystem.config.js ``` `ecosystem.config.js` তৈরি করুন: ```javascript module.exports = { apps: [ { name: "omniroute", script: "npm", args: "start", env: { NODE_ENV: "production", OMNIROUTE_MEMORY_MB: "512", JWT_SECRET: "your-secret", INITIAL_PASSWORD: "your-password", }, node_args: "--max-old-space-size=512", max_memory_restart: "300M", }, ], }; ``` ### Docker ```bash # Build image (default = runner-cli with codex/claude/droid preinstalled) docker build -t omniroute:cli . # Portable mode (recommended) docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli ``` CLI বাইনারি সহ হোস্ট-ইন্টিগ্রেটেড মোডের জন্য, প্রধান ডক্সে Docker বিভাগটি দেখুন। ### অকার্যকর Linux (xbps-src) Void Linux ব্যবহারকারীরা `xbps-src` ক্রস-কম্পাইলেশন ফ্রেমওয়ার্ক ব্যবহার করে নেটিভভাবে OmniRoute প্যাকেজ এবং ইনস্টল করতে পারে। এটি প্রয়োজনীয় `better-sqlite3` নেটিভ বাইন্ডিং সহ Node.js স্বতন্ত্র বিল্ডকে স্বয়ংক্রিয় করে।
xbps-src টেমপ্লেট দেখুন ```bash # Template file for 'omniroute' pkgname=omniroute version=3.8.0 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit " license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false do_build() { # Determine target CPU arch for node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac # 1) Install all deps – skip scripts NODE_ENV=development npm ci --ignore-scripts # 2) Build the Next.js standalone bundle npm run build # 3) Copy static assets into standalone cp -r .next/static .next/standalone/.next/static [ -d public ] && cp -r public .next/standalone/public || true # 4) Compile better-sqlite3 native binding local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js (cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch") # 5) Place the compiled binding into the standalone bundle local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release mkdir -p "$_bs3_release" cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/" # 6) Remove arch-specific sharp bundles rm -rf .next/standalone/node_modules/@img # 7) Copy pino runtime deps omitted by Next.js static analysis: for _mod in pino-abstract-transport split2 process-warning; do cp -r "node_modules/$_mod" .next/standalone/node_modules/ done } do_check() { npm run test:unit } do_install() { vmkdir usr/lib/omniroute/.next vcopy .next/standalone/. usr/lib/omniroute/.next/standalone # Prevent removal of empty Next.js app router dirs by the post-install hook for _d in \ .next/standalone/.next/server/app/dashboard \ .next/standalone/.next/server/app/dashboard/settings \ .next/standalone/.next/server/app/dashboard/providers; do touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep" done cat > "${WRKDIR}/omniroute" <<'EOF' #!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" } post_install() { vlicense LICENSE } ```
### এনভায়রনমেন্ট ভেরিয়েবল | পরিবর্তনশীল | ডিফল্ট | বর্ণনা | | --------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `JWT_SECRET` | _(স্বয়ংক্রিয়ভাবে তৈরি)_ | JWT সাইনিং সিক্রেট — প্রথম রানে স্বয়ংক্রিয়ভাবে জেনারেট হয় এবং `server.env` তে টিকে থাকে; যখন ডেটা ডিরেক্টরিটি ক্ষণস্থায়ী হয় তখন এটি স্পষ্টভাবে সেট করুন | | `INITIAL_PASSWORD` | _(আনসেট)_ | প্রথম লগইন পাসওয়ার্ড। npm/source ইনস্টল `CHANGEME` দিয়ে শুরু হয়: এটি প্রতিস্থাপন করুন। আনসেট: অনবোর্ডিং উইজার্ড | | `DATA_DIR` | `~/.omniroute` | ডেটা ডিরেক্টরি (ডিবি, ব্যবহার, লগ) | | `PORT` | ফ্রেমওয়ার্ক ডিফল্ট | পরিষেবা পোর্ট (উদাহরণস্বরূপ `20128` ) | | `HOSTNAME` | ফ্রেমওয়ার্ক ডিফল্ট | হোস্ট বাঁধুন (Docker ডিফল্ট `0.0.0.0`) | | `NODE_ENV` | রানটাইম ডিফল্ট | স্থাপনের জন্য `production` সেট করুন | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | পাবলিক বেস URL ড্যাশবোর্ডে উপস্থিত হয়েছে এবং সার্ভারের কাছে উন্মুক্ত হয়েছে (লেগেসি `BASE_URL` প্রতিস্থাপন করে) | | `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | ক্লাউড সিঙ্ক এন্ডপয়েন্ট বেস URL (লেগেসি `CLOUD_URL` প্রতিস্থাপন করে) | | `API_KEY_SECRET` | _(স্বয়ংক্রিয়ভাবে তৈরি)_ | জেনারেটেড API কীগুলির জন্য HMAC সিক্রেট — প্রথম রানে স্বয়ংক্রিয়ভাবে তৈরি হয় এবং `server.env` এ টিকে থাকে | | `REQUIRE_API_KEY` | `false` | `/v1/*` এ Bearer API কী প্রয়োগ করুন | | `ALLOW_API_KEY_REVEAL` | `false` | প্রমাণীকৃত ড্যাশবোর্ড ব্যবহারকারীদের চাহিদা অনুযায়ী সম্পূর্ণ সঞ্চিত API কী মান প্রকাশ করার অনুমতি দিন | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | ক্যাশড প্রোভাইডার লিমিট ডেটার জন্য সার্ভার-সাইড রিফ্রেশ ক্যাডেন্স; UI রিফ্রেশ বোতাম এখনও ম্যানুয়াল সিঙ্ক ট্রিগার করে | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | writes/import/restore এর আগে স্বয়ংক্রিয় SQLite স্ন্যাপশট নিষ্ক্রিয় করুন; ম্যানুয়াল ব্যাকআপ এখনও কাজ করে | | `APP_LOG_TO_FILE` | `true` | ডিস্কে অ্যাপ্লিকেশন এবং অডিট লগ আউটপুট সক্ষম করে৷ | | `AUTH_COOKIE_SECURE` | `false` | জোর করে `Secure` auth কুকি ( HTTPS রিভার্স প্রক্সির পিছনে) | | `CLOUDFLARED_BIN` | আনসেট | পরিচালিত ডাউনলোডের পরিবর্তে একটি বিদ্যমান `cloudflared` বাইনারি ব্যবহার করুন | | `CLOUDFLARED_PROTOCOL` | `http2` | পরিচালিত কুইক টানেলের জন্য পরিবহন (`http2`, `quic`, বা `auto`) | | `OMNIROUTE_MEMORY_MB` | `512` | MB এ Node.js হিপ সীমা | | `PROMPT_CACHE_MAX_SIZE` | `50` | সর্বোচ্চ প্রম্পট ক্যাশে এন্ট্রি | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | সর্বোচ্চ শব্দার্থিক ক্যাশে এন্ট্রি | সম্পূর্ণ পরিবেশ পরিবর্তনশীল রেফারেন্সের জন্য, [README](../README.md) দেখুন। --- ## 📊 উপলভ্য মডেল
উপলভ্য সব মডেল দেখুন > নিচের তালিকাটি v3.8.0-এর জন্য `open-sse/config/providerRegistry.ts` থেকে সংগৃহীত। ক্লাউড ক্যাটালগ (Gemini, OpenRouter ইত্যাদি) ডায়নামিকভাবে সিঙ্ক হয় — সম্পূর্ণ লাইভ ক্যাটালগ দেখতে **ড্যাশবোর্ড → প্রোভাইডার → [প্রোভাইডার] → উপলভ্য মডেল** খুলুন অথবা `GET /api/models/catalog` কল করুন। > > কোনো প্রোভাইডারের বিল্ট-ইন তালিকা পুরোনো হয়ে গেলে, লাইভ আপস্ট্রিম ক্যাটালগ আনতে ওই পৃষ্ঠায় **/models থেকে ইম্পোর্ট করুন** ব্যবহার করুন (অথবা **Auto-Sync** চালু করুন)। এটি v3.8.50-এ LLM7.io (`gemini-3.1-flash-lite`) এবং UncloseAI (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`)-এর জন্য যাচাই করা হয়েছে; একই পরীক্ষায় Pollinations-এর অ্যানোনিমাস অ্যাক্সেস আপস্ট্রিম সীমাবদ্ধই ছিল। **Claude Code (`cc/`)** — Pro/Max OAuth: `cc/claude-opus-4-8`, `cc/claude-opus-4-7`, `cc/claude-opus-4-6`, `cc/claude-opus-4-5-20251101`, `cc/claude-sonnet-4-6`, `cc/claude-sonnet-4-5-20250929`, `cc/claude-haiku-4-5-20251001` **Codex (`cx/`)** — Plus/Pro OAuth: `cx/gpt-5.5` (+ effort tiers: `gpt-5.5-xhigh`, `gpt-5.5-high`, `gpt-5.5-medium`, `gpt-5.5-low`), `cx/gpt-5.4`, `cx/gpt-5.4-mini`, `cx/gpt-5.3-codex`, `cx/gpt-5.3-codex-spark` **GitHub Copilot (`gh/`)** — OAuth: `gh/gpt-5.5`, `gh/gpt-5.4`, `gh/gpt-5.4-mini`, `gh/gpt-5-mini`, `gh/gpt-5.3-codex`, `gh/claude-opus-4.7`, `gh/claude-opus-4.6`, `gh/claude-opus-4-5-20251101`, `gh/claude-sonnet-4.6`, `gh/claude-sonnet-4.5`, `gh/claude-haiku-4.5`, `gh/gemini-3.1-pro-preview`, `gh/gemini-3-flash-preview`, `gh/oswe-vscode-prime` **Kiro (`kr/`)** — বিনামূল্যের OAuth: **ড্যাশবোর্ড → প্রোভাইডার → Kiro → উপলভ্য মডেল**-এর অধীনে প্রদর্শিত লাইভ ক্যাটালগ ব্যবহার করুন। উপলভ্যতা অ্যাকাউন্ট এবং প্ল্যানের ওপর নির্ভর করে। **Qoder (`if/`)** — বিনামূল্যের OAuth: `if/qwen3.8-max-preview`, `if/qwen3.7-max`, `if/qwen3.7-plus`, `if/kimi-k3`, `if/kimi-k2.7-code`, `if/glm-5.2`, `if/deepseek-v4-pro`, `if/deepseek-v4-flash`, `if/minimax-m3` **GLM (`glm/`, `glm-cn/`, `zai/`, `glmt/`)** — $0.2–0.6/1M: `glm/glm-5.1`, `glm/glm-5`, `glm/glm-5-turbo`, `glm/glm-4.7`, `glm/glm-4.7-flash`, `glm/glm-4.6`, `glm/glm-4.6v`, `glm/glm-4.5`, `glm/glm-4.5v`, `glm/glm-4.5-air` **MiniMax (`minimax/`, `minimax-cn/`)** — $0.2/1M: `minimax/MiniMax-M2.7`, `minimax/MiniMax-M2.7-highspeed`, `minimax/MiniMax-M2.5`, `minimax/MiniMax-M2.5-highspeed` **Kimi (`kimi/`, `kimi-coding/`, `kimi-coding-apikey/`)** — মাসিক $9 ফ্ল্যাট বা ব্যবহারভিত্তিক: `kimi/kimi-k2.6`, `kimi/kimi-k2.5` **DeepSeek (`ds/`)** — API key: `ds/deepseek-v4-pro`, `ds/deepseek-v4-flash` **Groq (`groq/`)** — অতি দ্রুত: `groq/llama-3.3-70b-versatile`, `groq/meta-llama/llama-4-maverick-17b-128e-instruct`, `groq/qwen/qwen3-32b`, `groq/openai/gpt-oss-120b` **xAI (`xai/`)** — Grok নেটিভ: `xai/grok-4.3`, `xai/grok-4.20-multi-agent-0309`, `xai/grok-4.20-0309-reasoning`, `xai/grok-4.20-0309-non-reasoning` **Mistral (`mistral/`)** — EU-তে হোস্ট করা: `mistral/mistral-large-latest`, `mistral/mistral-medium-3-5`, `mistral/mistral-small-latest`, `mistral/codestral-latest` **Perplexity (`pplx/`)** — সার্চ-সমৃদ্ধ: `pplx/sonar-deep-research`, `pplx/sonar-reasoning-pro`, `pplx/sonar-pro`, `pplx/sonar` **Together AI (`together/`)** — ওপেন-সোর্স: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` (বিনামূল্যে), `together/meta-llama/Llama-Vision-Free`, `together/deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free`, `together/deepseek-ai/DeepSeek-R1`, `together/Qwen/Qwen3-235B-A22B`, `together/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` **Fireworks AI (`fireworks/`)** — দ্রুত ইনফারেন্স: `fireworks/accounts/fireworks/models/kimi-k2p6`, `fireworks/accounts/fireworks/models/minimax-m2p7`, `fireworks/accounts/fireworks/models/qwen3p6-plus`, `fireworks/accounts/fireworks/models/glm-5p1`, `fireworks/accounts/fireworks/models/deepseek-v4-pro` **Cerebras (`cerebras/`)** — ওয়েফার-স্কেল: `cerebras/zai-glm-4.7`, `cerebras/gpt-oss-120b` **Cohere (`cohere/`)** — RAG-কেন্দ্রিক: `cohere/command-a-reasoning-08-2025`, `cohere/command-a-vision-07-2025`, `cohere/command-a-03-2025`, `cohere/command-r-08-2024` **NVIDIA NIM (`nvidia/`)** — এন্টারপ্রাইজ: `nvidia/google/gemma-4-31b-it`, `nvidia/nvidia/nemotron-3.5-super-vl-120b-a12b`, `nvidia/nvidia/nemotron-3-ultra-550b-a55b`, `nvidia/nvidia/nemotron-3.5-lightning-30b-a3b` **Baidu Qianfan (`qianfan/`)** — ERNIE: `qianfan/ernie-5.1`, `qianfan/ernie-5.0-thinking-latest`, `qianfan/ernie-x1.1` **Ollama Cloud (`ollama-cloud/`)**: `ollama-cloud/deepseek-v4-pro`, `ollama-cloud/deepseek-v4-flash`, `ollama-cloud/kimi-k2.6`, `ollama-cloud/glm-5.1`, `ollama-cloud/minimax-m2.7`, `ollama-cloud/gemma4:31b`, `ollama-cloud/qwen3.5:397b` **Gemini (Google Cloud `gemini/`)**: Google থেকে প্রতি API key অনুযায়ী লাইভ সিঙ্ক হয় — কোনো স্ট্যাটিক তালিকা নেই। **ড্যাশবোর্ড → প্রোভাইডার**-এ একটি key সংযুক্ত করুন, তারপর বর্তমান ক্যাটালগ ইম্পোর্ট করতে **উপলভ্য মডেল** ব্যবহার করুন (যেমন `gemini/gemini-3-pro`, `gemini/gemini-3-flash`)। **অন্যান্য সামঞ্জস্যপূর্ণ প্রোভাইডার** (নির্বাচিত): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (via `aws-bedrock`), `azure-ai`, `openrouter` (passthrough catalog), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`। প্রতিটি `providerRegistry.ts`-এ নিজস্ব মডেল তালিকা সংরক্ষণ করে এবং প্রোভাইডার `/models` endpoint প্রকাশ করলে স্বয়ংক্রিয়ভাবে সিঙ্ক করা যায়। **মডেল ID সম্পর্কে:** OmniRoute প্রোভাইডার-নেটিভ ID ব্যবহার করে (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`)। কিছু ID-তে ডটযুক্ত সংস্করণ রয়েছে, কারণ আপস্ট্রিম API এগুলো এভাবেই প্রত্যাশা করে। কোনো মডেল উপরে তালিকাভুক্ত না থাকলে, উপলভ্যতা নিশ্চিত করতে `omniroute models --search ` চালান অথবা `GET /api/models/catalog`-এ অনুরোধ পাঠান।
--- ## 🧩 উন্নত বৈশিষ্ট্য ### কাস্টম মডেল একটি অ্যাপ আপডেটের জন্য অপেক্ষা না করে যেকোনো প্রদানকারীর সাথে যেকোনো মডেল ID যোগ করুন: ```bash # Via API curl -X POST http://localhost:20128/api/provider-models \ -H "Content-Type: application/json" \ -d '{"provider": "openai", "modelId": "gpt-5.2", "modelName": "GPT-5.2"}' # List: curl http://localhost:20128/api/provider-models?provider=openai # Remove: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2" ``` অথবা ড্যাশবোর্ড ব্যবহার করুন:** প্রদানকারী → [প্রোভাইডার] → কাস্টম মডেল** . নোট: - OpenRouter এবং OpenAI/Anthropic-compatible প্রদানকারীদের থেকে পরিচালিত হয়** উপলব্ধ মডেল** শুধুমাত্র একই উপলব্ধ-মডেল তালিকায় সমস্ত জমি ম্যানুয়াল যোগ, আমদানি এবং স্বয়ংক্রিয়ভাবে সিঙ্ক করুন, তাই এই সরবরাহকারীদের জন্য আলাদা কাস্টম মডেল বিভাগ নেই। - দ** কাস্টম মডেল** বিভাগটি এমন সরবরাহকারীদের জন্য উদ্দিষ্ট যারা পরিচালিত উপলব্ধ-মডেল আমদানি প্রকাশ করে না। ### কাস্টম OpenAI- সামঞ্জস্যপূর্ণ প্রদানকারী যেকোন গেটওয়ে যা OpenAI API (একটি স্ব-হোস্টেড প্রক্সি, vLLM, একটি তৃতীয় পক্ষের সমষ্টিকারী) কথা বলে তার নিজস্ব প্রদানকারী নোড হিসাবে যোগ করা যেতে পারে: 1. **প্রদানকারীরা → যোগ করুন OpenAI সামঞ্জস্যপূর্ণ** . 2. **নাম** : নোডের জন্য একটি প্রদর্শন লেবেল। 3. **উপসর্গ** : রাউটিং নাম। ক্লায়েন্ট মডেলগুলিকে `/` বলে, তাই `mygw` উপসর্গ সহ একটি নোড `mygw/gpt-4o-mini` পরিবেশন করে। প্রয়োজনীয়; কোন চরিত্রের সীমাবদ্ধতা নেই। 4. **API প্রকার** : গেটওয়ে যে এন্ডপয়েন্ট পরিবারটি পরিবেশন করে (চ্যাট সমাপ্তি, প্রতিক্রিয়া, এম্বেডিং, অডিও, ছবি)। 5. **বেস URL** : API রুট, `/v1` পর্যন্ত এবং সহ (উদাহরণস্বরূপ `https://gateway.example.com/v1`), সম্পূর্ণ `/chat/completions` পাথ নয়। অ-মানক পাথ সহ গেটওয়েগুলি তাদের অধীনে সেট করে** উন্নত সেটিংস** (চ্যাট পাথ, মডেল পাথ)। 6. দ**API কী (চেক করার জন্য)** ক্ষেত্র শুধুমাত্র সংযোগ পরীক্ষা করে। নোড তৈরি করার পরে, এটি খুলুন এবং ব্যবহার করুন** সংযোগ যোগ করুন** অনুরোধগুলি ব্যবহার করবে এমন কী সংরক্ষণ করতে। নোডটি `openai-compatible--` ফর্মের একটি অভ্যন্তরীণ আইডি পায়; আপনাকে কখনই এটি টাইপ করতে হবে না, উপসর্গটি সর্বজনীন নাম। #### সংরক্ষিত উপসর্গ একটি উপসর্গ একটি অন্তর্নির্মিত প্রদানকারীর আইডি বা উপনাম হতে পারে না (উদাহরণস্বরূপ `openai`, `cf`), বা অবসরপ্রাপ্ত প্রদানকারীর id হতে পারে না। মডেল সমাধানকারী কাস্টম নোডের আগে অন্তর্নির্মিত আইডি এবং উপনামগুলি পরীক্ষা করে, তাই এই উপসর্গগুলির মধ্যে একটি ব্যবহার করে একটি নোড কখনই ট্র্যাফিক পাবে না: `/model` পরিবর্তে বিল্ট-ইন প্রদানকারীর কাছে যাবে, অথবা সেই প্রদানকারী অবসরপ্রাপ্ত হলে বন্ধ হয়ে যাবে। এই জাতীয় উপসর্গ সহ একটি নোড তৈরি বা সম্পাদনা এর সাথে প্রত্যাখ্যান করা হয়: ```text prefix: "" is a reserved provider prefix — choose a different prefix (reserved ids/aliases cannot be used for custom nodes because requests like /model route to a built-in provider or fail closed when retired) ``` একটি স্বতন্ত্র উপসর্গ চয়ন করুন (`mygw`, `acme-proxy`)। যদি একটি কাস্টম নোডের অনুরোধগুলি একটি ত্রুটির সাথে ব্যর্থ হয় যা একটি অন্তর্নির্মিত প্রদানকারী বা তার প্রমাণপত্রের নাম দেয়, নোডের উপসর্গটি সংরক্ষিত কিনা তা পরীক্ষা করে দেখুন: এই নিয়মটি বিদ্যমান থাকার আগে সংরক্ষিত নোডগুলি এখনও সংরক্ষণ করা হয়, তবে বিল্ট-ইন প্রদানকারীর কাছে তাদের প্রিফিক্স রুট। নোডটি সম্পাদনা করুন এবং এটি একটি নতুন উপসর্গ দিন। #### প্রতি সংযোগ গেটওয়ে বিকল্প এই কীগুলি একটি সংযোগের `providerSpecificData` তে যায় (উদাহরণস্বরূপ `PUT /api/providers/{id}` এর মাধ্যমে): - `toolNameMaxLength` (পূর্ণসংখ্যা, 1–1024) — OpenAI চ্যাট-ফরম্যাট সামঞ্জস্যপূর্ণ সংযোগের জন্য যার গেটওয়ে দীর্ঘ টুলের নাম প্রত্যাখ্যান করে। দীর্ঘ নামগুলি ছোট উপনাম হিসাবে পাঠানো হয় এবং প্রতিক্রিয়াতে পুনরুদ্ধার করা হয়। - `quotaEndpoint` — গেটওয়ের quota/credits এন্ডপয়েন্ট, ড্যাশবোর্ড কোটা স্ট্রিপ এবং কোটা-সচেতন রাউটিংয়ের জন্য পড়ুন। ওপেনএআই- এবং নৃতাত্ত্বিক-সামঞ্জস্যপূর্ণ সংযোগে কাজ করে; সম্পূর্ণ আকৃতি `open-sse/services/usage/openaiCompatible.ts` এ নথিভুক্ত করা হয়েছে। ```json { "toolNameMaxLength": 64, "quotaEndpoint": { "url": "https://gateway.example.com/key/info", "auth": "bearer", "quotas": { "budget": { "used": "$.info.spend", "total": "$.info.max_budget", "currency": "USD" } } } } ``` ### চেইনিং OmniRoute Peers আরেকটি OmniRoute গেটওয়ে একটি হিসাবে যোগ করা যেতে পারে** কাস্টম OpenAI- সামঞ্জস্যপূর্ণ** প্রদানকারী পিয়ারের `/v1` বেস URL এবং সেই পিয়ার দ্বারা জারি করা একটি ডেডিকেটেড, ন্যূনতম বিশেষাধিকার API কী ব্যবহার করুন। পারস্পরিক বা মাল্টি-হপ চেইনের জন্য, প্রতিটি গেটওয়েতে অপ্ট-ইন লুপ গার্ড সক্ষম করুন: ```bash # gateway-a OMNIROUTE_INSTANCE_ID=gateway-a OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` ```bash # gateway-b OMNIROUTE_INSTANCE_ID=gateway-b OMNIROUTE_PEER_URLS=http://gateway-a:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` শুধুমাত্র একটি সুস্পষ্টভাবে অনুমোদিত পিয়ার URL কে পাঠানো অনুরোধগুলি `X-OmniRoute-Peer-Trace` হেডার পাবে। একটি গেটওয়ে HTTP `508 Loop Detected` সাথে বারবার ID বা ক্লান্ত হপ বাজেট প্রত্যাখ্যান করে; সাধারণ আপস্ট্রিম প্রদানকারীরা কোন পিয়ার মেটাডেটা পায় না। পিয়ার চেইনিং ডাটাবেস প্রতিলিপি বা হোস্ট ফেইলওভার নয়। প্রতিটি গেটওয়ে স্বাধীন SQLite স্টেট, ক্যাশে, রেট কাউন্টার এবং সেশন রাখে। active/passive বা active/active উপলব্ধতার জন্য একটি স্বাস্থ্য-পরীক্ষিত বিপরীত প্রক্সি বা ক্লায়েন্ট ফেইলওভার ব্যবহার করুন এবং একাধিক চলমান OmniRoute দৃষ্টান্তে একটি SQLite ডাটাবেস মাউন্ট করবেন না। ### উত্সর্গীকৃত প্রদানকারী রুট মডেলের বৈধতা সহ একটি নির্দিষ্ট প্রদানকারীর কাছে সরাসরি অনুরোধ করুন: ```bash POST http://localhost:20128/v1/providers/openai/chat/completions POST http://localhost:20128/v1/providers/openai/embeddings POST http://localhost:20128/v1/providers/fireworks/images/generations ``` অনুপস্থিত থাকলে প্রদানকারী উপসর্গটি স্বয়ংক্রিয়ভাবে যোগ করা হয়। অমিল মডেল `400` ফেরত দেয়। ### নেটওয়ার্ক প্রক্সি কনফিগারেশন ```bash # Set global proxy curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}' # Per-provider proxy curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}' # Test proxy curl -X POST http://localhost:20128/api/settings/proxy/test \ -d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}' ``` **অগ্রাধিকার:** কী-নির্দিষ্ট → কম্বো-নির্দিষ্ট → প্রদানকারী-নির্দিষ্ট → গ্লোবাল → পরিবেশ। ### মডেল ক্যাটালগ API ```bash curl http://localhost:20128/api/models/catalog ``` প্রদানকারীর দ্বারা শ্রেণীবদ্ধ করা মডেলগুলি প্রদান করে (`chat`, `embedding`, `image`)। ### ক্লাউড সিঙ্ক - সমস্ত ডিভাইস জুড়ে প্রদানকারী, কম্বো এবং সেটিংস সিঙ্ক করুন - টাইমআউট + ব্যর্থ-দ্রুত সহ স্বয়ংক্রিয় পটভূমি সিঙ্ক - উৎপাদনে সার্ভার-সাইড `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` পছন্দ করুন ### Cloudflare দ্রুত টানেল - পাওয়া যায়** ড্যাশবোর্ড → এন্ডপয়েন্ট** Docker এবং অন্যান্য স্ব-হোস্টেড স্থাপনার জন্য - একটি অস্থায়ী `https://*.trycloudflare.com` URL তৈরি করে যা আপনার বর্তমান OpenAI- সামঞ্জস্যপূর্ণ `/v1` এন্ডপয়েন্টে ফরোয়ার্ড করে - প্রথমে প্রয়োজন হলেই `cloudflared` ইনস্টল করতে সক্ষম করুন; পরে পুনরায় আরম্ভ করে একই পরিচালিত বাইনারি পুনরায় ব্যবহার করে - একটি OmniRoute বা কন্টেইনার পুনরায় চালু করার পরে দ্রুত টানেলগুলি স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করা হয় না; প্রয়োজনে ড্যাশবোর্ড থেকে তাদের পুনরায় সক্রিয় করুন - টানেল URLs ক্ষণস্থায়ী এবং আপনি যখনই টানেল stop/start তখন পরিবর্তন হয় - সীমাবদ্ধ পাত্রে কোলাহলপূর্ণ QUIC UDP বাফার সতর্কতা এড়াতে HTTP/2 পরিবহনে ডিফল্ট পরিচালিত কুইক টানেল - যদি আপনি পরিচালিত পরিবহন পছন্দ ওভাররাইড করতে চান তাহলে `CLOUDFLARED_PROTOCOL=quic` বা `auto` সেট করুন - যদি আপনি পরিচালিত ডাউনলোডের পরিবর্তে একটি পূর্ব-ইন্সটল করা `cloudflared` বাইনারি ব্যবহার করতে চান তাহলে `CLOUDFLARED_BIN` সেট করুন - Cloudflare কুইক টানেল, Tailscale ফানেল এবং ngrok টানেল প্যানেল দেখানো বা লুকানো যেতে পারে** সেটিংস → চেহারা** . একটি প্যানেল লুকানো একটি চলমান সুড়ঙ্গ বন্ধ করে না. ### LLM গেটওয়ে ইন্টেলিজেন্স (ফেজ 9) - **শব্দার্থক ক্যাশে** — অটো-ক্যাশে নন-স্ট্রিমিং, তাপমাত্রা= 0 প্রতিক্রিয়া ( `X-OmniRoute-No-Cache: true` দিয়ে বাইপাস) - **অদম্যতা অনুরোধ** — `Idempotency-Key` বা `X-Request-Id` হেডারের মাধ্যমে 5 সেকেন্ডের মধ্যে অনুরোধগুলি নকল করে - **অগ্রগতি ট্র্যাকিং** — `X-OmniRoute-Progress: true` হেডারের মাধ্যমে SSE `event: progress` ইভেন্টগুলি বেছে নিন --- ### অনুবাদক খেলার মাঠ মাধ্যমে অ্যাক্সেস** ড্যাশবোর্ড → অনুবাদক** . ডিবাগ এবং ভিজ্যুয়ালাইজ করুন কিভাবে OmniRoute প্রদানকারীদের মধ্যে API অনুরোধ অনুবাদ করে। | মোড | উদ্দেশ্য | | ----------------- | ----------------------------------------------------------------------------------------------- | | **খেলার মাঠ** | source/target বিন্যাস নির্বাচন করুন, একটি অনুরোধ পেস্ট করুন, এবং অবিলম্বে অনুবাদিত আউটপুট দেখুন | | **চ্যাট পরীক্ষক** | প্রক্সির মাধ্যমে লাইভ চ্যাট বার্তা পাঠান এবং সম্পূর্ণ request/response চক্র পরিদর্শন করুন | | **টেস্ট বেঞ্চ** | অনুবাদের সঠিকতা যাচাই করতে একাধিক বিন্যাস সমন্বয় জুড়ে ব্যাচ পরীক্ষা চালান | | **লাইভ মনিটর** | রিয়েল-টাইম অনুবাদগুলি প্রক্সির মাধ্যমে প্রবাহিত হওয়ার সাথে সাথে দেখুন৷ | **ক্ষেত্রে ব্যবহার করুন:** - কেন একটি নির্দিষ্ট client/provider সংমিশ্রণ ব্যর্থ হয় তা ডিবাগ করুন - যাচাই করুন যে চিন্তা ট্যাগ, টুল কল, এবং সিস্টেম প্রম্পট সঠিকভাবে অনুবাদ করে - OpenAI, Claude, Gemini, এবং প্রতিক্রিয়া API ফরম্যাটের মধ্যে বিন্যাসের পার্থক্য তুলনা করুন --- ### রাউটিং কৌশল এর মাধ্যমে কনফিগার করুন** ড্যাশবোর্ড → সেটিংস → রাউটিং** . ড্যাশবোর্ড ছয়টি সর্বাধিক ব্যবহৃত কৌশল প্রকাশ করে; কম্বোস এবং অটো-রাউটার অভ্যন্তরীণভাবে একটি বিস্তৃত সেট সমর্থন করে। **ড্যাশবোর্ড-দৃশ্যমান কৌশল (অ্যাকাউন্ট-লেভেল রাউটিং):** | কৌশল | বর্ণনা | | ---------------------------- | ----------------------------------------------------------------------------------------------------------------- | | **প্রথমে পূরণ করুন** | অগ্রাধিকার ক্রমে অ্যাকাউন্ট ব্যবহার করে — প্রাথমিক অ্যাকাউন্ট অনুপলব্ধ না হওয়া পর্যন্ত সমস্ত অনুরোধ পরিচালনা করে | | **রাউন্ড রবিন** | একটি কনফিগারযোগ্য স্টিকি সীমা সহ সমস্ত অ্যাকাউন্টের মাধ্যমে চক্র (ডিফল্ট: প্রতি অ্যাকাউন্টে 3টি কল) | | **P2C (দুই পছন্দের ক্ষমতা)** | 2টি এলোমেলো অ্যাকাউন্ট এবং স্বাস্থ্যকর একটি রুট বেছে নেয় — স্বাস্থ্য সচেতনতার সাথে ভারসাম্য বজায় রাখে | | **এলোমেলো** | Fisher-Yates শাফেল ব্যবহার করে প্রতিটি অনুরোধের জন্য এলোমেলোভাবে একটি অ্যাকাউন্ট নির্বাচন করে | | **সবচেয়ে কম ব্যবহৃত** | সবচেয়ে পুরনো `lastUsedAt` টাইমস্ট্যাম্প সহ অ্যাকাউন্টে যাওয়ার রুট, ট্রাফিক সমানভাবে বন্টন করে | | **খরচ অপ্টিমাইজড** | সর্বনিম্ন অগ্রাধিকার মান সহ অ্যাকাউন্টে রুট, সর্বনিম্ন-খরচ প্রদানকারীদের জন্য অপ্টিমাইজ করা | **উন্নত কম্বো এবং স্বয়ংক্রিয় কৌশল** (প্রতি কম্বো বা `auto/*` উপসর্গের মাধ্যমে কনফিগারযোগ্য — [AUTO-COMBO.md](../routing/AUTO-COMBO.md) দেখুন): - `priority` — কঠোর আদেশ, কখনও রাউন্ড-রবিন নয় - `weighted` — প্রতি-মডেল ওজন দ্বারা আনুপাতিক ট্র্যাফিক বিভক্ত - `fill-first` — সীমা আঘাত না হওয়া পর্যন্ত প্রথম মডেলটি নিষ্কাশন করুন - `round-robin` / `strict-random` / `random` - `p2c` (দুই পছন্দের ক্ষমতা) - `least-used` এবং `cost-optimized` - `auto` — সমস্ত প্রার্থীর মধ্যে স্কোর-চালিত - `lkgp` (সর্বশেষ পরিচিত ভাল প্রদানকারী) — শেষ সফল প্রদানকারীর সাথে পিন করে, তারপরে নিয়মে ফিরে আসে - `context-optimized` — সবচেয়ে বড় মুক্ত প্রসঙ্গ উইন্ডো সহ মডেলটি বেছে নেয় - `context-relay` — ফলো-আপ টার্নের জন্য দীর্ঘ-প্রসঙ্গ মডেল চেইন করে #### এক্সটার্নাল স্টিকি সেশন হেডার বাহ্যিক সেশন অ্যাফিনিটির জন্য (উদাহরণস্বরূপ, বিপরীত প্রক্সির পিছনে Claude Code/Codex এজেন্ট), পাঠান: ```http X-Session-Id: your-session-key ``` OmniRoute এছাড়াও `x_session_id` গ্রহণ করে এবং `X-OmniRoute-Session-Id` এ কার্যকরী সেশন কী ফেরত দেয়। আপনি যদি Nginx ব্যবহার করেন এবং আন্ডারস্কোর-ফর্ম হেডার পাঠান, সক্ষম করুন: ```nginx underscores_in_headers on; ``` #### ওয়াইল্ডকার্ড মডেল উপনাম মডেলের নাম রিম্যাপ করতে ওয়াইল্ডকার্ড প্যাটার্ন তৈরি করুন: ``` Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-6 Pattern: gpt-* → Target: gh/gpt-5.3-codex ``` ওয়াইল্ডকার্ড `*` (যে কোনো অক্ষর) এবং `?` (একক অক্ষর) সমর্থন করে। #### ফলব্যাক চেইন সমস্ত অনুরোধ জুড়ে প্রযোজ্য গ্লোবাল ফলব্যাক চেইন সংজ্ঞায়িত করুন: ``` Chain: production-fallback 1. cc/claude-opus-4-7 2. gh/gpt-5.3-codex 3. glm/glm-4.7 ``` --- ### কমন প্রোভাইডার কম্বিনেশন এবং রাউটিং প্যাটার্ন এখানে একাধিক প্রদানকারীকে একত্রিত করার এবং OmniRoute তে তাদের মধ্যে রাউটিং করার উদাহরণ রয়েছে: #### 1. কোডিং এজেন্ট কম্বো: Cost/Speed ফলব্যাকের সাথে হাই-এন্ড রিজনিং কোডিং এজেন্ট (OpenCode, Claude কোড, Cursor, Cline) জন্য আদর্শ। রুট প্রাথমিকভাবে সীমান্ত যুক্তি মডেল, কোটা ক্লান্তি বা ত্রুটি দ্রুত কোডিং মডেল ফিরে পতনশীল. - **ড্যাশবোর্ড** : Combos → নতুন কম্বো → নাম: `agent-coding` → কৌশল: `Priority` - **মডেল** : 1. `claude/claude-sonnet-4-6` (প্রাথমিক কোডিং এজেন্ট) 2. `openai/gpt-4o` (সেকেন্ডারি উচ্চ-ক্ষমতা ফলব্যাক) 3. `deepseek/deepseek-v4-flash` (উচ্চ-দক্ষতা, খরচ-কার্যকর ফলব্যাক) ```bash # Example via API curl -X POST http://localhost:20128/api/combos \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "agent-coding", "strategy": "priority", "models": [ { "model": "claude/claude-sonnet-4-6" }, { "model": "openai/gpt-4o" }, { "model": "deepseek/deepseek-v4-flash" } ] }' ``` #### 2. ফ্রি-টায়ার অটো ফেইলওভার কম্বো API খরচ ছাড়াই আপটাইম সর্বাধিক করার জন্য একাধিক ফ্রি-টায়ার এবং চাবিহীন প্রদানকারীকে চেইন করে। - **কৌশল** : `Least Used` বা `Round Robin` (কোটা জুড়ে লোড বিতরণ করে) - **মডেল** : 1. `groq/llama-3.3-70b-versatile` 2. `gemini/gemini-2.5-flash` 3. `cerebras/gpt-oss-120b` ```bash # Example via CLI omniroute combo create free-stack \ --models "groq/llama-3.3-70b-versatile,gemini/gemini-2.5-flash,cerebras/gpt-oss-120b" \ --strategy round-robin ``` #### 3. মাল্টিমোডাল/ভিশন এবং টেক্সট পাইপলাইন ইমেজ বোঝার এবং কোড জেনারেশন জড়িত ওয়ার্কফ্লোগুলির জন্য উচ্চ-গতির পাঠ্য প্রজন্মের সাথে বিশেষ দৃষ্টি মডেল জোড়া। - **প্যাটার্ন** : একটি `Priority` কম্বো যা দৃষ্টি-সক্ষম মডেলগুলিকে প্রথমে তালিকাভুক্ত করে এবং একটি উচ্চ-থ্রুপুট text/code মডেল সর্বশেষে৷ - **মডেল** : 1. `gemini/gemini-2.5-pro` (শক্তিশালী image/multimodal বোধগম্যতা) 2. `openai/gpt-4o` (সুষম দৃষ্টি এবং টুল ব্যবহার) 3. `deepseek/deepseek-v4-flash` (Text/code প্রজন্ম) --- ### স্থিতিস্থাপকতা এবং সার্কিট ব্রেকার এর মাধ্যমে কনফিগার করুন** ড্যাশবোর্ড → সেটিংস → স্থিতিস্থাপকতা** . OmniRoute পাঁচটি উপাদান সহ প্রদানকারী-স্তরের স্থিতিস্থাপকতা প্রয়োগ করে: 1. **অনুরোধ সারি এবং পেসিং** — সিস্টেম-স্তরের অনুরোধ আকার: - **প্রতি মিনিটে অনুরোধ (RPM)** - অ্যাকাউন্ট প্রতি মিনিটে সর্বোচ্চ অনুরোধ - **অনুরোধের মধ্যে ন্যূনতম সময়** — অনুরোধের মধ্যে মিলিসেকেন্ডে ন্যূনতম ব্যবধান - **সর্বোচ্চ সমসাময়িক অনুরোধ** - প্রতি অ্যাকাউন্টে সর্বাধিক একযোগে অনুরোধ 2. **সংযোগ Cooldown** — পুনরায় চেষ্টাযোগ্য ব্যর্থতার পরে একটি একক সংযোগের জন্য প্রতি-প্রমাণ-টাইপ কনফিগারেশন: - **বেস কুলডাউন** — পুনরায় চেষ্টাযোগ্য আপস্ট্রিম ব্যর্থতার জন্য ডিফল্ট কুলডাউন উইন্ডো - **আপস্ট্রিম পুনরায় চেষ্টা ইঙ্গিত ব্যবহার করুন** — প্রদান করা হলে প্রামাণিক `Retry-After` বা রিসেট ইঙ্গিত দেয় - **সর্বোচ্চ ব্যাকঅফ পদক্ষেপ** — বারবার ব্যর্থতার জন্য সর্বাধিক সূচকীয় ব্যাকঅফ স্তর 3. **প্রদানকারী সার্কিট ব্রেকার** — এন্ড-টু-এন্ড প্রদানকারীর ব্যর্থতা ট্র্যাক করে, কনফিগার করা সতর্কতা থ্রেশহোল্ডে অবনমিত একটি প্রদানকারীকে চিহ্নিত করে এবং কনফিগার করা ব্যর্থতার থ্রেশহোল্ডে পৌঁছে গেলে ব্রেকার খোলে: - **অধঃপতন থ্রেশহোল্ড** — `DEGRADED` প্রবেশ করার আগে ক্রমাগত প্রদানকারীর ব্যর্থতা - **ব্যর্থতার থ্রেশহোল্ড** — `OPEN` প্রবেশ করার আগে ক্রমাগত প্রদানকারীর ব্যর্থতা - **টাইমআউট রিসেট করুন** — প্রদানকারীকে আবার পরীক্ষা করার আগে সময় উইন্ডো - **CLOSED** (স্বাস্থ্যকর) - অনুরোধগুলি স্বাভাবিকভাবে প্রবাহিত হয় - **DEGRADED** — উচ্চতর ব্যর্থতাগুলি ট্র্যাক করার সময়ও অনুরোধগুলি প্রবাহিত হয়৷ - **OPEN** — বারবার ব্যর্থতার পর সরবরাহকারীকে সাময়িকভাবে অবরুদ্ধ করা হয়েছে - **HALF_OPEN** - প্রদানকারী সুস্থ হয়ে উঠেছে কিনা তা পরীক্ষা করা সংযোগ-স্কোপযুক্ত `429` হারের সীমা থাকে** সংযোগ Cooldown** এবং প্রদানকারী ব্রেকার দিকে গণনা করবেন না। প্রদানকারী ব্রেকার রানটাইম অবস্থা দেখানো হয়** ড্যাশবোর্ড → স্বাস্থ্য** শুধুমাত্র 4. **কুলডাউনের জন্য অপেক্ষা করুন** — যদি প্রতিটি প্রার্থীর সংযোগ ইতিমধ্যেই ঠান্ডা হয়ে যায়, তাহলে OmniRoute প্রথম দিকের কুলডাউনের জন্য অপেক্ষা করতে পারে এবং একই ক্লায়েন্টের অনুরোধ স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করতে পারে। 5. **হার সীমা স্বয়ংক্রিয় সনাক্তকরণ** — যখন আপস্ট্রিম প্রদানকারীরা সুস্পষ্ট অপেক্ষা উইন্ডোগুলি ফেরত দেয়, তখন সেটিং সক্রিয় থাকা অবস্থায় সেই ইঙ্গিতগুলি স্থানীয় সংযোগ কুলডাউনকে ওভাররাইড করে। **প্রো টিপ:** ব্যবহার করুন** স্বাস্থ্য** বিভ্রাটের পরে লাইভ প্রদানকারী ব্রেকারগুলি পরিদর্শন এবং পুনরায় সেট করতে পৃষ্ঠা৷ স্থিতিস্থাপকতা পৃষ্ঠা শুধুমাত্র কনফিগারেশন পরিবর্তন করে। --- ### ডাটাবেস এক্সপোর্ট/ইমপোর্ট ডাটাবেস ব্যাকআপ পরিচালনা করুন** ড্যাশবোর্ড → সেটিংস → সিস্টেম এবং স্টোরেজ** . | অ্যাকশন | বর্ণনা | | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **ডাটাবেস রপ্তানি করুন** | একটি `.sqlite` ফাইল হিসাবে বর্তমান SQLite ডাটাবেস ডাউনলোড করে | | **সব রপ্তানি করুন (.tar.gz)** | একটি সম্পূর্ণ ব্যাকআপ সংরক্ষণাগার ডাউনলোড করে যার মধ্যে রয়েছে: ডাটাবেস, সেটিংস, কম্বোস, প্রদানকারী সংযোগ (কোনও শংসাপত্র নেই), API কী মেটাডেটা | | **ডাটাবেস আমদানি করুন** | বর্তমান ডাটাবেস প্রতিস্থাপন করতে একটি `.sqlite` ফাইল আপলোড করুন। `DISABLE_SQLITE_AUTO_BACKUP=true` না থাকলে একটি প্রাক-আমদানি ব্যাকআপ স্বয়ংক্রিয়ভাবে তৈরি হয় | ```bash # API: Export database curl -o backup.sqlite http://localhost:20128/api/db-backups/export # API: Export all (full archive) curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll # API: Import database curl -X POST http://localhost:20128/api/db-backups/import \ -F "file=@backup.sqlite" ``` **আমদানি বৈধতা:** আমদানি করা ফাইলটি অখণ্ডতার জন্য যাচাই করা হয়েছে (SQLite pragma চেক), প্রয়োজনীয় টেবিল (`provider_connections`, `provider_nodes`, `combos`, `api_keys`), এবং আকার (সর্বোচ্চ 100MB)। **কেস ব্যবহার করুন:** - মেশিনের মধ্যে OmniRoute স্থানান্তর করুন - দুর্যোগ পুনরুদ্ধারের জন্য বাহ্যিক ব্যাকআপ তৈরি করুন - দলের সদস্যদের মধ্যে কনফিগারেশন শেয়ার করুন (সমস্ত → শেয়ার সংরক্ষণাগার রপ্তানি করুন) --- ### সেটিংস ড্যাশবোর্ড সেটিংস পৃষ্ঠার মধ্যে সংগঠিত হয়** 7টি ট্যাব** সহজ নেভিগেশন জন্য: | ট্যাব | বিষয়বস্তু | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **সাধারণ** | সিস্টেম স্টোরেজ টুল, ডিফল্ট আচরণ, এন্ডপয়েন্ট টানেল দৃশ্যমানতা | | **চেহারা** | থিম নিয়ন্ত্রণ (light/dark/system), সাইডবার দৃশ্যমানতা, Cloudflare/Tailscale/ngrok টানেল কার্ডের জন্য প্যানেল টগল | | **AI** | চিন্তাভাবনা বাজেট (পাসথ্রু / অটো-স্ট্রিপ / কাস্টম / অভিযোজিত — দেখুন [THINKING_BUDGET.md](./THINKING_BUDGET.md) ), গ্লোবাল সিস্টেম প্রম্পট, প্রম্পট ক্যাশে পরিসংখ্যান | | **নিরাপত্তা** | Login/Password সেটিংস, IP অ্যাক্সেস কন্ট্রোল, `/models` এর জন্য API auth , প্রোভাইডার ব্লকিং, প্রম্পট-ইনজেকশন গার্ড | | **রাউটিং** | গ্লোবাল রাউটিং কৌশল (প্রথম / রাউন্ড রবিন / P2C / র্যান্ডম / সর্বনিম্ন ব্যবহৃত / খরচ অপ্টিমাইজ করা), ওয়াইল্ডকার্ড মডেল উপনাম, ফলব্যাক চেইন, কম্বো ডিফল্ট | | **স্থিতিস্থাপকতা** | অনুরোধ সারি, সংযোগ কুলডাউন, প্রদানকারী ব্রেকার কনফিগারেশন, এবং অপেক্ষা করার জন্য-কূলডাউন আচরণ | | **উন্নত** | গ্লোবাল প্রক্সি কনফিগারেশন (HTTP/SOCKS5), প্রতি-প্রোভাইডার প্রক্সি ওভাররাইড করে | সাধারণ আর শুধুমাত্র পঠনযোগ্য লগিং এবং ক্যাশে নোটের নকল করে না। ডাটাবেস ধারণ এবং অপ্টিমাইজেশান সেটিংস `/api/settings/database` মাধ্যমে স্থায়ী হয়; ম্যানুয়াল ক্যাশে ক্লিয়ারিং `DELETE /api/cache` ব্যবহার করে। অনুরোধ এবং প্রক্সি লগ সারি ক্যাপগুলি `CALL_LOGS_TABLE_MAX_ROWS` এবং `PROXY_LOGS_TABLE_MAX_ROWS`দ্বারা নিয়ন্ত্রিত হয়। --- ### খরচ এবং বাজেট ব্যবস্থাপনা মাধ্যমে অ্যাক্সেস** ড্যাশবোর্ড → খরচ** . | ট্যাব | উদ্দেশ্য | | ------------------ | ---------------------------------------------------------------------------------------------------------- | | **বাজেট** | daily/weekly/monthly বাজেট এবং রিয়েল-টাইম ট্র্যাকিং সহ API কী প্রতি ব্যয়ের সীমা সেট করুন | | **মূল্য নির্ধারণ** | মডেল মূল্যের এন্ট্রিগুলি দেখুন এবং সম্পাদনা করুন — প্রতি প্রদানকারী প্রতি 1K input/output টোকেন প্রতি খরচ৷ | ```bash # API: Set a budget curl -X POST http://localhost:20128/api/usage/budget \ -H "Content-Type: application/json" \ -d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}' # API: Get current budget status curl http://localhost:20128/api/usage/budget ``` **খরচ ট্র্যাকিং:** প্রতিটি অনুরোধ টোকেন ব্যবহার লগ করে এবং মূল্য সারণী ব্যবহার করে খরচ গণনা করে। মধ্যে ব্রেকডাউন দেখুন** ড্যাশবোর্ড → ব্যবহার** প্রদানকারী, মডেল এবং API কী দ্বারা। --- ### অডিও ট্রান্সক্রিপশন OmniRoute OpenAI- সামঞ্জস্যপূর্ণ এন্ডপয়েন্টের মাধ্যমে অডিও ট্রান্সক্রিপশন সমর্থন করে: ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data # Example with curl curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@audio.mp3" \ -F "model=openai/whisper-1" ``` `deepgram/nova-3` হল স্থানীয় Deepgram রুট এবং একটি Deepgram API কী প্রয়োজন। যদি শুধুমাত্র OpenRouter কনফিগার করা হয়, `openrouter/deepgram/nova-3` ব্যবহার করুন। **স্পিচ-টু-টেক্সট (ট্রান্সক্রিপশন)** প্রদানকারী: - `openai/` (ফিসফিস-সামঞ্জস্যপূর্ণ) - `groq/` (Groq হুইস্পার টার্বো) - `deepgram/` (নোভা পরিবার) - `assemblyai/` - `nvidia/` (প্যারাকিট, ক্যানারি) - `huggingface/` (ফিসফিস ভেরিয়েন্ট) - `qwen/` **টেক্সট টু স্পিচ (`POST /v1/audio/speech`)** প্রদানকারী: - `openai/` (tts-1, tts-1-hd) - `hyperbolic/` - `deepgram/` (আউরা) - `nvidia/` (Magpie TTS) - `elevenlabs/` - `huggingface/` - `inworld/` - `cartesia/` - `playht/` - `kie/` - `aws-polly/` - `xiaomi-mimo/` - `coqui/`, `tortoise/` - `qwen/` ট্রান্সক্রিপশনের জন্য সমর্থিত অডিও ফরম্যাট: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`। TTS আউটপুট বিন্যাস প্রদানকারীর উপর নির্ভর করে (mp3, wav, opus, pcm, mulaw)। --- ### কম্বো ব্যালেন্সিং কৌশল প্রতি-কম্বো ব্যালেন্সিং কনফিগার করুন** ড্যাশবোর্ড → কম্বোস → Create/Edit → কৌশল** . | কৌশল | বর্ণনা | | ---------------------- | ------------------------------------------------------------------------ | | **রাউন্ড-রবিন** | ক্রমানুসারে মডেলের মাধ্যমে ঘোরে | | **অগ্রাধিকার** | সর্বদা প্রথম মডেল চেষ্টা করে; শুধুমাত্র ভুলের জন্য ফিরে আসে | | **এলোমেলো** | প্রতিটি অনুরোধের জন্য কম্বো থেকে একটি এলোমেলো মডেল বেছে নেয় | | **ওজনযুক্ত** | মডেল প্রতি নির্ধারিত ওজনের উপর ভিত্তি করে আনুপাতিকভাবে রুট | | **সবচেয়ে কম ব্যবহৃত** | সবচেয়ে কম সাম্প্রতিক অনুরোধ সহ মডেলের রুট (কম্বো মেট্রিক্স ব্যবহার করে) | | **খরচ-অপ্টিমাইজড** | সবচেয়ে সস্তা উপলব্ধ মডেলের রুট (মূল্য সারণী ব্যবহার করে) | গ্লোবাল কম্বো ডিফল্ট সেট করা যেতে পারে** ড্যাশবোর্ড → সেটিংস → রাউটিং → কম্বো ডিফল্ট** . কম্বো টার্গেট টাইমআউট ডিফল্টরূপে বর্তমান অনুরোধের সময়সীমার উত্তরাধিকারী হয়। ব্যবহার করুন** টার্গেট টাইমআউট (সেকেন্ড)** কম্বো ডিফল্টে বা একটি স্বতন্ত্র কম্বো শুধুমাত্র তখনই যখন প্রতি-টার্গেটের একটি ছোট সীমা দ্রুত ফলব্যাক ট্রিগার করবে। জিরো-লেটেন্সি কম্বো অপ্টিমাইজেশান অপ্ট-ইন। ছেড়ে দিন** জিরো-লেটেন্সি অপ্টিমাইজেশান** রেসিং ফলব্যাক লক্ষ্য, TTFT ইতিহাসের উপর ভিত্তি করে লক্ষ্যগুলি এড়িয়ে যাওয়া, বা ফলব্যাক অনুরোধগুলি সংকুচিত করা থেকে এই লেটেন্সি বৈশিষ্ট্যগুলিকে প্রতিরোধ করতে অক্ষম করা হয়েছে; এটি সক্রিয় করা কনফিগার করা হেজিং, ভবিষ্যদ্বাণীমূলক TTFT স্কিপস এবং প্রোঅ্যাকটিভ ফলব্যাক কম্প্রেশনকে লোয়ার টেইল লেটেন্সির জন্য routing/request ফিডেলিটি ট্রেড করার অনুমতি দেয়। নিষ্ক্রিয় করুন** যুক্তি টোকেন বাফার** যখন আপস্ট্রিম প্রদানকারীদের কঠোর `max_tokens` / `maxOutputTokens` সীমার প্রয়োজন হয়। যখন সক্রিয় থাকে, তখন কম্বো রাউটিং শুধুমাত্র একটি পরিচিত আউটপুট ক্যাপ সহ মডেলগুলির জন্য যুক্তি-মডেল হেডরুম যোগ করে এবং ক্লায়েন্ট টোকেন সীমা অপরিবর্তিত রাখে যখন নিরাপদ বাফার করা মান সেই ক্যাপ অতিক্রম করবে। যদি ক্লায়েন্টের সীমা ইতিমধ্যেই একটি পরিচিত ক্যাপের উপরে থাকে, তাহলে আপস্ট্রিম অনুরোধ পাঠানোর আগে OmniRoute এটিকে সেই ক্যাপে ক্ল্যাম্প করে। --- ### স্বাস্থ্য ড্যাশবোর্ড মাধ্যমে অ্যাক্সেস** ড্যাশবোর্ড → স্বাস্থ্য** . 6টি কার্ড সহ রিয়েল-টাইম সিস্টেম স্বাস্থ্য ওভারভিউ: | কার্ড | এটা কি দেখায় | | ------------------------ | ---------------------------------------------------------- | | **সিস্টেমের অবস্থা** | আপটাইম, সংস্করণ, মেমরি ব্যবহার, ডেটা ডিরেক্টরি | | **স্বাস্থ্য প্রদানকারী** | গ্লোবাল প্রদানকারী সার্কিট ব্রেকার রানটাইম অবস্থা | | **হার সীমা** | অবশিষ্ট সময়ের সাথে অ্যাকাউন্ট প্রতি সক্রিয় সংযোগ কুলডাউন | | **সক্রিয় লকআউট** | সক্রিয় মডেল-স্কোপড লকআউট এবং অস্থায়ী বর্জন | | **স্বাক্ষর ক্যাশে** | ডিডুপ্লিকেশন ক্যাশে পরিসংখ্যান (সক্রিয় কী, হিট রেট) | | **লেটেন্সি টেলিমেট্রি** | প্রদানকারী প্রতিp50/p95/p99 লেটেন্সি অ্যাগ্রিগেশন | **প্রো টিপ:** স্বাস্থ্য পৃষ্ঠাটি প্রতি 10 সেকেন্ডে স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়। কোন প্রদানকারীরা সমস্যার সম্মুখীন হচ্ছে তা সনাক্ত করতে সার্কিট ব্রেকার কার্ড ব্যবহার করুন। --- ## 🤖 স্বয়ংক্রিয় রাউটিং (শূন্য-কনফিগারেশন) OmniRoute-এর সঙ্গে রয়েছে একটি **স্কোর-চালিত স্বয়ংক্রিয় রাউটার**, যা সংযুক্ত প্রতিটি প্রোভাইডারের মধ্য থেকে প্রতিটি অনুরোধের জন্য সেরা মডেলটি বেছে নেয় — রক্ষণাবেক্ষণের জন্য কোনো কম্বো প্রয়োজন নেই। শুধু `auto/*` প্রিফিক্সগুলোর একটি দিয়ে অনুরোধ পাঠান, আর OmniRoute তাৎক্ষণিকভাবে একটি ভার্চুয়াল কম্বো তৈরি করবে এবং ল্যাটেন্সি, খরচ, সফলতার হার, কনটেক্সটের সামঞ্জস্য, কাজটির জন্য মডেলের উপযুক্ততা, সাম্প্রতিক ব্যর্থতা, কোটা ও সার্কিট-ব্রেকারের অবস্থার ভিত্তিতে প্রার্থীদের স্কোর করবে। | প্রিফিক্স | যে বিষয়ের জন্য অপ্টিমাইজ করে | | -------------- | ---------------------------------------------------------------------------------------- | | `auto` | ভারসাম্যপূর্ণ ডিফল্ট (ল্যাটেন্সি × খরচ × সফলতার হার) | | `auto/coding` | কোডিংয়ের কাজ: Claude, GPT-5, GLM, Kimi, Qwen Coder ও DeepSeek কোডারকে অগ্রাধিকার দেয় | | `auto/cheap` | সর্বনিম্ন $/token, বেশি ল্যাটেন্সি গ্রহণ করে | | `auto/fast` | সর্বনিম্ন ল্যাটেন্সি, খরচ উপেক্ষা করে | | `auto/offline` | শুধু স্থানীয় প্রোভাইডার (Ollama, vLLM, llama.cpp) — এয়ার-গ্যাপড সেটআপের জন্য উপযোগী | | `auto/smart` | রিজনিংয়ের গুণমানকে সর্বোচ্চ অগ্রাধিকার দেয় (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) | | `auto/lkgp` | "সর্বশেষ কার্যকর প্রোভাইডার" — সর্বশেষ সফল প্রোভাইডারে স্থির থাকে, এরপর নিয়মে ফিরে যায় | উদাহরণ: ```bash curl -X POST http://localhost:20128/v1/chat/completions \ -H "Authorization: Bearer $OMNIROUTE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "auto/coding", "messages": [{ "role": "user", "content": "এই Python ফাংশনটি রিফ্যাক্টর করুন" }], "stream": true }' ``` স্কোরিংয়ের ওয়েট কীভাবে সামঞ্জস্য করতে হয়, প্রোভাইডারকে ব্ল্যাকলিস্ট করতে হয় এবং **ড্যাশবোর্ড → স্বয়ংক্রিয় কম্বো**-তে রাউটিংয়ের সিদ্ধান্ত পরিদর্শন করতে হয়—এসবসহ স্বয়ংক্রিয় রাউটারের সম্পূর্ণ বিবরণ [AUTO-COMBO.md](../routing/AUTO-COMBO.md)-এ রয়েছে। --- ## 🔌 MCP ও A2A ইন্টিগ্রেশন OmniRoute একই সঙ্গে একটি **MCP সার্ভার** (Model Context Protocol) এবং একটি **A2A সার্ভার** (Agent-to-Agent JSON-RPC 2.0)। যেকোনো MCP-সামঞ্জস্যপূর্ণ IDE বা এজেন্ট হোস্ট সরাসরি OmniRoute-এর টুল কল করতে পারে — অতিরিক্ত কোনো র্যাপারের প্রয়োজন নেই। ### MCP ট্রান্সপোর্ট - **SSE**: `http://localhost:20128/api/mcp/sse` - **স্ট্রিমযোগ্য HTTP**: `http://localhost:20128/api/mcp/stream` - **stdio**: `omniroute --mcp` (যেসব IDE প্লাগইন stdio পছন্দ করে তাদের জন্য) ### Claude Desktop সংযুক্ত করুন macOS-এ `~/Library/Application Support/Claude/claude_desktop_config.json` অথবা Windows/Linux-এ সমতুল্য ফাইলটি সম্পাদনা করুন: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"] } } } ``` ### Cursor / Continue / VS Code MCP সংযুক্ত করুন SSE URL `http://localhost:20128/api/mcp/sse` এবং **ড্যাশবোর্ড → API কীসমূহ**-এ তৈরি করা একটি Bearer API কী ব্যবহার করুন। ### স্কোপ MCP বর্তমানে 32টি নামযুক্ত স্কোপ নির্ধারণ করে। প্রতিটি Bearer কীকে নির্দিষ্ট স্কোপে সীমাবদ্ধ করা যায় — প্রামাণ্য স্কোপ ও টুলের তালিকার জন্য [MCP-SERVER.md](../frameworks/MCP-SERVER.md) এবং JSON-RPC স্কিমার জন্য [A2A-SERVER.md](../frameworks/A2A-SERVER.md) দেখুন। --- ## 🧠 স্কিলস সিস্টেম OmniRoute একটি সম্প্রসারণযোগ্য **স্কিল ফ্রেমওয়ার্ক** (`src/lib/skills/`) প্রদান করে, যার মাধ্যমে এজেন্ট এবং A2A এন্ডপয়েন্ট ডোমেইন-নির্দিষ্ট রুটিন চালাতে পারে (যেমন `code-review`, `summarize`, `extract-facts`, `web-research`)। - **মার্কেটপ্লেস UI** — **ড্যাশবোর্ড → স্কিলস** থেকে স্কিল ব্রাউজ ও ইনস্টল করুন - **প্রতি-কী স্কোপ** — কোন API কী কোন স্কিল ব্যবহার করতে পারবে তা সীমিত করুন - **কাস্টম স্কিল** — `src/lib/a2a/skills/`-এ একটি TypeScript ফাইল রাখুন, সেটি নিবন্ধন করুন, এবং তা সঙ্গে সঙ্গে A2A-এর মাধ্যমে ব্যবহারযোগ্য হয়ে যাবে সম্পূর্ণ রেফারেন্স: [SKILLS.md](../frameworks/SKILLS.md)। --- ## 💾 মেমরি সিস্টেম OmniRoute হাইব্রিড রিট্রিভালসহ **দীর্ঘমেয়াদি কথোপকথনের মেমরি** সংরক্ষণ করে: - অতীতের কথোপকথনের টার্নগুলোতে কীওয়ার্ড অনুসন্ধানের জন্য **SQLite FTS5** - শব্দার্থভিত্তিক স্মরণশক্তির জন্য **Qdrant vector store** (ঐচ্ছিক) - **স্বয়ংক্রিয় তথ্য নিষ্কাশন** — প্রতিটি সেশনের পরে সত্তা, পছন্দ এবং সিদ্ধান্তগুলো সংক্ষেপিত হয়ে `memory_facts` টেবিলে সংরক্ষিত হয় - মেমরিগুলো প্রতি API কী এবং প্রতি সেশন অনুযায়ী সীমাবদ্ধ থাকে **ড্যাশবোর্ড → মেমরি** থেকে মেমরি পরিচালনা করুন (অনুসন্ধান, সম্পাদনা, এক্সপোর্ট, মুছে ফেলা)। HTTP ইন্টারফেস (`/api/memory/*`) এজেন্টদের প্রোগ্রামগতভাবে তথ্য পাঠানো ও অনুসন্ধান করার সুযোগ দেয় — দেখুন [MEMORY.md](../frameworks/MEMORY.md)। --- ## 🔔 ওয়েবহুক রিয়েল-টাইম পর্যবেক্ষণ ও অটোমেশনের জন্য OmniRoute ইভেন্ট সাবস্ক্রাইব করুন। - লক্ষ্য URL এবং HMAC স্বাক্ষর গোপন কী দিয়ে **ড্যাশবোর্ড → ওয়েবহুকস**-এ একটি ওয়েবহুক তৈরি করুন - উপলভ্য ইভেন্ট: `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed` - যাচাইয়ের জন্য প্রতিটি পেলোডে `X-OmniRoute-Signature` (HMAC-SHA256) অন্তর্ভুক্ত থাকে - পুনঃচেষ্টা: সূচকীয় ব্যাকঅফসহ 3 বার চেষ্টা, তারপর ডেড-লেটার কিউ সম্পূর্ণ স্কিমা [WEBHOOKS.md](../frameworks/WEBHOOKS.md)-এ রয়েছে। --- ## ☁️ ক্লাউড এজেন্ট OmniRoute ক্লাউড কোডিং এজেন্টের (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**) সঙ্গে সমন্বিত হয়, ফলে স্থানীয় রাউটিং পরিচালনাকারী একই ড্যাশবোর্ড থেকে দীর্ঘমেয়াদি কাজ পাঠাতে পারেন। - **ড্যাশবোর্ড → ক্লাউড এজেন্টস** থেকে অথবা `POST /api/v1/agents/tasks`-এর মাধ্যমে কাজ তৈরি করুন - প্রতিটি কাজের অবস্থা, লগ এবং আর্টিফ্যাক্ট ট্র্যাক করুন - প্রতিটি প্রোভাইডারের জন্য নিজের API কী ব্যবহার করুন — ক্রেডেনশিয়াল কখনোই OmniRoute ইনস্ট্যান্সের বাইরে যায় না সম্পূর্ণ রেফারেন্স: [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md)। --- ## 🛠️ প্রোগ্রামগত ব্যবস্থাপনা **`manage` স্কোপসহ একটি Bearer কী** ব্যবহার করে HTTP-এর মাধ্যমে OmniRoute-এর প্রতিটি রিসোর্স (প্রোভাইডার, কম্বো, কী, সেটিংস) পরিচালনা করতে পারেন। **ড্যাশবোর্ড → API কীসমূহ → নতুন কী → স্কোপ: manage** থেকে কী তৈরি করুন, তারপর: ```bash # প্রোভাইডারগুলোর তালিকা দেখুন curl http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" # একটি প্রোভাইডার সংযোগ যোগ করুন curl -X POST http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "provider": "openai", "apiKey": "sk-...", "name": "main" }' # একটি কম্বো তৈরি করুন curl -X POST http://localhost:20128/api/combos \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "premium", "strategy": "priority", "models": [{ "model": "cc/claude-opus-4-7" }, { "model": "glm/glm-5.1" }] }' # API কীসমূহের তালিকা দেখুন/তৈরি করুন curl http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" curl -X POST http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -d '{ "name": "ci-bot", "scopes": ["chat"] }' ``` সম্পূর্ণ এন্ডপয়েন্ট ক্যাটালগ এবং অনুরোধ/প্রতিক্রিয়া স্কিমার জন্য [API_REFERENCE.md](../reference/API_REFERENCE.md) দেখুন। --- ## 💻 অভ্যন্তরীণ CLI সেটআপ, ডায়াগনস্টিকস এবং রানটাইম নিয়ন্ত্রণের জন্য OmniRoute-এর সঙ্গে একটি অভ্যন্তরীণ CLI (`omniroute …`) রয়েছে। এটি ড্যাশবোর্ডের **"CLI Tools" পৃষ্ঠা থেকে আলাদা**, যেখানে তৃতীয়-পক্ষের CLI-গুলোকে (Claude Code, Cursor, Codex, Cline, …) কনফিগার করা হয়, যাতে সেগুলো OmniRoute-এর সঙ্গে যোগাযোগ করতে পারে। ```bash omniroute setup # ইন্টার্যাক্টিভ উইজার্ড (পাসওয়ার্ড, প্রোভাইডার, কম্বো) omniroute setup --non-interactive # CI-বান্ধব omniroute doctor # স্বাস্থ্য ডায়াগনস্টিকস (ডেটা ডিরেক্টরি, DB, প্রোভাইডার, পোর্ট) omniroute providers available # সমর্থিত প্রোভাইডারগুলোর তালিকা দেখান omniroute providers list # কনফিগার করা সংযোগগুলোর তালিকা দেখান omniroute providers test # কোনো প্রোভাইডার সংযোগের লাইভ পরীক্ষা করুন omniroute combos list # কম্বোগুলোর তালিকা দেখান omniroute combos switch # ডিফল্ট কম্বো নির্ধারণ করুন omniroute models # উপলভ্য মডেলগুলোর তালিকা দেখান (--json, --search) omniroute keys add | list | remove # টার্মিনাল থেকে API কী পরিচালনা করুন omniroute backup # কনফিগারেশন + DB-এর স্ন্যাপশট নিন omniroute restore [] # একটি স্ন্যাপশট থেকে পুনরুদ্ধার করুন omniroute health # বিস্তারিত স্বাস্থ্যতথ্য (ব্রেকার, ক্যাশ, মেমরি) omniroute quota # প্রোভাইডারের কোটা ব্যবহার omniroute mcp status # MCP সার্ভারের অবস্থা omniroute a2a status # A2A সার্ভারের অবস্থা omniroute tunnel list|create|stop # Cloudflare/Tailscale/ngrok টানেল omniroute reset-password # অ্যাডমিন পাসওয়ার্ড রিসেট করুন omniroute --mcp # stdio-এর মাধ্যমে MCP সার্ভার চালু করুন omniroute --port 3000 # কাস্টম পোর্টে সার্ভার চালু করুন ``` পরামর্শ: অস্বাস্থ্যকর প্রোভাইডার সংযোগ সম্পর্কে সতর্কতা পেতে আপনার মনিটরিং টুলের সঙ্গে `omniroute doctor --json` ব্যবহার করুন। --- ## 🖥️ ডেস্কটপ অ্যাপ্লিকেশন (Electron) OmniRoute Windows, macOS এবং Linux-এর জন্য একটি নেটিভ ডেস্কটপ অ্যাপ্লিকেশন হিসেবে উপলভ্য। ### ইনস্টলেশন ```bash # electron ডিরেক্টরি থেকে: cd electron npm install # ডেভেলপমেন্ট মোড (চলমান Next.js ডেভ সার্ভারের সঙ্গে সংযোগ করে): npm run dev # প্রোডাকশন মোড (স্ট্যান্ডঅ্যালোন বিল্ড ব্যবহার করে): npm start ``` ### ইনস্টলার তৈরি ```bash cd electron npm run build # বর্তমান প্ল্যাটফর্ম npm run build:win # Windows (.exe NSIS) npm run build:mac # macOS (.dmg universal) npm run build:linux # Linux (.AppImage) ``` আউটপুট → `electron/dist-electron/` ### প্রধান বৈশিষ্ট্য | বৈশিষ্ট্য | বিবরণ | | --------------------------- | --------------------------------------------------------------------------------- | | **সার্ভারের প্রস্তুতি** | উইন্ডো দেখানোর আগে সার্ভার পোল করে (ফাঁকা স্ক্রিন নয়) | | **সিস্টেম ট্রে** | ট্রেতে মিনিমাইজ করুন, পোর্ট পরিবর্তন করুন, ট্রে মেনু থেকে প্রস্থান করুন | | **পোর্ট ব্যবস্থাপনা** | ট্রে থেকে সার্ভার পোর্ট পরিবর্তন করুন (সার্ভার স্বয়ংক্রিয়ভাবে পুনরায় চালু হয়) | | **কনটেন্ট সিকিউরিটি পলিসি** | সেশন হেডারের মাধ্যমে সীমাবদ্ধ CSP | | **একক ইনস্ট্যান্স** | একবারে অ্যাপের কেবল একটি ইনস্ট্যান্স চলতে পারে | | **অফলাইন মোড** | বান্ডেল করা Next.js সার্ভার ইন্টারনেট ছাড়াই কাজ করে | ### এনভায়রনমেন্ট ভেরিয়েবল | ভেরিয়েবল | ডিফল্ট | বিবরণ | | --------------------- | ------- | ------------------------------ | | `OMNIROUTE_PORT` | `20128` | সার্ভার পোর্ট | | `OMNIROUTE_MEMORY_MB` | `512` | Node.js হিপ সীমা (64–16384 MB) | 📖 সম্পূর্ণ ডকুমেন্টেশন: [`electron/README.md`](../../electron/README.md)