> رویهمگذاشتن دستی پلنهای رایگان دردسرساز است — دهها SDK، دهها محدودیت نرخ و بدون اینکه بدانید واقعاً چه مقدار در اختیار دارید. OmniRoute تعداد **489 ورودی پلن رایگان را در 35 کلید استخر تکرارشونده** فهرست میکند و رقم توکن شاخص را از **17 استخری که بودجه ماهانه مثبت و منتشرشده دارند، بهعلاوه پنج سقف Groq برای هر مدل** محاسبه میکند؛ در این محاسبه، استخرهای مشترک تکراری حذف میشوند. سهمیههایی که تنها پس از تأیید هویت منطقهای فعال میشوند (در حال حاضر: ModelScope)، جداگانه نمایش داده میشوند؛ +~6M پشت تأیید هویت منطقهای قرار دارد و هرگز در رقم شاخص جمع زده نمیشود. نتیجه در داشبورد (`/dashboard/free-tiers`) قابل مشاهده باقی میماند.
> خلاصه متحرک صفحه زنده `/dashboard/free-tiers`. روششناسی کامل (حذف تکرار استخرها، سطوح اعتبار، شرایط ارائهدهندگان): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> این ارقام هر دو هفته یکبار بر اساس فهرست زنده مجدداً ممیزی میشوند و **در هر دو جهت تغییر میکنند** — اگر ارائهدهندهای پلن رایگان خود را پایان دهد، عدد کاهش مییابد؛ اگر پلن جدیدی اضافه شود، افزایش پیدا میکند. ما همان چیزی را منتشر میکنیم که فهرست واقعاً محاسبه میکند، نه بهترین حالتِ رو به بالا گردشده.
⭐ اگر OMNIROUTE به شما کمک کرده است در هزینه صرفهجویی کنید و کارتان را آسانتر انجام دهید، به مخزن ستاره بدهید.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 به جامعه بپیوندید
**👋 نگهدارنده پروژه را دنبال کنید — زودتر از همه از ارائهدهندگان جدید، نسخهها و نکتهها باخبر شوید:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**پرسشها، نکتههای مربوط به ارائهدهندگان، نقشه راه و پشتیبانی ← [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 جهانی](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 برزیل](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [پورتال](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 دروازه همچنان در حال رشد است
## 🆓 به محض نصب کار میکند — بدون نیاز به کلید، بدون تنظیمات
```bash
# نصب تازه، بدون اعتبارنامه — `auto` از قبل کار میکند:
curl http://localhost:20128/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
یک بکاند رایگان خاص را ترجیح میدهید؟ مستقیماً `oc/…` (OpenCode Free) را فراخوانی کنید. سپس به `auto` ارتقا دهید و اجازه دهید OmniRoute انتخاب کند.📦 اسکریپتهای شروع سریع را برای **پایتون، Node.js، PHP و cURL** کپی-پیست کنید → [`examples/quickstart/`](examples/quickstart/)
# 💥 وعده
# 🤔 چرا OmniRoute؟
## 🤝 مورد حمایت دوستان متنباز ما
> **آیا میخواهید به عنوان یک دوست متنباز به ما بپیوندید؟** اینها شرکتهایی هستند که از متنباز حمایت میکنند و به حرکت OmniRoute کمک میکنند — و ما به صورت عمومی اعلام میکنیم که هر توکنی که به ما میدهند به کجا میرود. با ما تماس بگیرید: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
با تشکر از Kimi (Moonshot AI)، دوست متنباز بنیانگذار ما، برای حمایت از این پروژه! Kimi آزمایشگاه هوش مصنوعی پشت خانواده مدلهای K2 و K3 با وزن باز است — Kimi K3 یک پنجره زمینه 1M-توکن، دید بومی و کدنویسی در سطح مرزی را با کسری از قیمت مدلهای بسته ارائه میدهد و با Claude Code، Codex و هر ابزار کدنویسی که OmniRoute ارائه میدهد، خارج از جعبه کار میکند.
حمایت Kimi چه چیزی را تامین میکند: اعتبارات API Kimi خط لوله انتشار تایید شده توسط هوش مصنوعی OmniRoute را تامین میکند — مرحله تایید ادغام توسط Kimi K3 که هر درخواست کشش را قبل از ارسال بررسی میکند — به علاوه توسعه ویژگیهای روزمره. پشتیبانی درجه یک Kimi در هر دو مسیر ارائه میشود: API مستقیم Kimi (kimi-k3) و برنامه کدنویسی Kimi Code (OAuth و کلید API). OmniRoute همچنین اولین پروژه متنباز برزیلی در برنامه پشتیبانی Kimi است. یک کلید API Kimi با 15% اعتبار اضافی دریافت کنید ←
استنتاج ارزانتر cheaperinference.com
با تشکر از استنتاج ارزانتر، یک دوست متنباز OmniRoute، برای حمایت از این پروژه! استنتاج ارزانتر یک دروازه با رتبهبندی هزینه است که 42 مدل مرزی — Claude، GPT-5.x، Gemini، Kimi K3، GLM، DeepSeek، Grok و MiniMax — را پشت یک نقطه پایانی سازگار با OpenAI به فروش میرساند و هر درخواست را به ارزانترین ارائهدهنده واجد شرایط هدایت میکند بدون اینکه هرگز بالاتر از قیمت لیست سازنده مدل شارژ کند.
پشتیبانی درجه یک در OmniRoute: تکمیل چت، نقطه پایانی بومی /v1/responses، دید، فراخوانی ابزار و 3 مدل تصویر (grok-imagine، nano-banana-pro، nano-banana-2، قابل دسترسی به عنوان cheaperinference/<model>). یک کلید API دریافت کنید ←
لینکهای دارای برچسب aff=omniroute لینکهای شریک هستند. آنها پروژه را بدون هیچ هزینه اضافی برای شما تامین مالی میکنند. 🎟️ تبلیغات وابسته — کوپنهای ثبتنام رایگان از ارائهدهندگانی که ما حمایت نمیکنیم (برای گسترش کلیک کنید)این بخش فقط برای کدهای ارجاع/کوپن است. مشارکتهای حمایتشده در بخش 🤝 مورد حمایت دوستان متنباز ما در بالا قرار دارند. OmniRoute هیچ حمایت یا مشارکتی با ارائهدهندگان ذکر شده در اینجا ندارد — اینها کوپنهای عمومی هستند که هر کسی میتواند از آنها استفاده کند.
AgentRouter agentrouter.org
AgentRouter — ثبتنام وابسته · 100 دلار اعتبار رایگان هنگام ثبتنام (سرور رایگان، انتظار تاخیر بالاتر — بهترین برای آزمایش، نه تولید). پشتیبانی درجه یک در OmniRoute از v3.8.50: تکمیل چت، فرمت سیمی سازگار با Anthropic و مسیر سازگار با OpenAI. مدلهای موجود شامل claude-opus-4-8، claude-opus-5، gpt-5.6-sol و موارد دیگر. 100 دلار خود را بگیرید ←
⚠️ لینک وابسته — OmniRoute هیچ حمایت یا مشارکتی با این ارائهدهنده ندارد.
آیا ارائهدهنده دیگری با کوپن ثبتنام رایگان سخاوتمندانه میشناسید که به کاربران OmniRoute سود برساند؟ یک مشکل باز کنید و ما آن را اینجا اضافه خواهیم کرد.
## 🎯 کمبوها — قابلیت شاخص
> یک **کمبو** زنجیرهای از مدلها است که OmniRoute بهصورت **خودکار** درخواستها را میان آنها مسیریابی میکند. اگر سهمیه تمام شود، ارائهدهندهای از کار بیفتد یا هزینهها جهش کنند، کمبو میتواند به مدل سالم و واجد شرایط بعدی منتقل شود. 🛡️
### ⚡ بدون نیاز به پیکربندی — فقط از `auto` استفاده کنید
نیازی به ساخت کمبو نیست. مدل خود را روی `auto` (یا یکی از گونههای آن) تنظیم کنید تا OmniRoute با استفاده از ارائهدهندگان متصل شما، یک کمبوی مجازی با امتیازدهی زنده بسازد:
شناسه مدل
برای چه چیزی بهینهسازی میشود
auto
🎯 پیشفرض متعادل (LKGP — ارائهدهنده موفق اخیر شما را حفظ میکند)
auto/coding
🧑💻 وزندهی کیفیتمحور برای تولید کد
auto/fast
⚡ ابتدا کمترین تأخیر
auto/cheap
💰 ابتدا کمهزینهترین گزینه بهازای هر توکن
auto/offline
🔋 ابتدا بیشترین ظرفیت آزاد سهمیه / محدودیت نرخ
auto/smart
🔭 کیفیتمحور + 10٪ کاوش برای یافتن مدلهای بهتر
auto/lkgp
📌 پایبندی صریح به آخرین ارائهدهنده موفق شناختهشده
auto/chaos
🧪 وزندهی تزریق خطا برای آزمون تابآوری (مهندسی آشوب)
##
### 🔀 یا کمبوی خودتان را بسازید — 19 راهبرد مسیریابی
همه **19** راهبرد — در هر گام کمبو آنها را با هم ترکیب کنید:
#
راهبرد
عملکرد
1
priority
فهرست مرتبشده با اولویت اولین هدف — هرکدام را پیش از رفتن به بعدی کاملاً مصرف میکند 🥇
2
fill-first
پیش از رفتن به هدف بعدی، سهمیه هر هدف را کاملاً پر میکند
3
weighted
انتخاب تصادفی وزندار بر اساس وزن هر هدف
4
round-robin
گردش میان هدفها بهترتیب
5
p2c
توازن بار تصادفی با روش انتخاب از میان دو گزینه
6
least-used
انتخاب هدفی با کمترین بار فعلی
7
random
انتخاب تصادفی یکنواخت (با حذف موارد تکراری)
8
strict-random
انتخاب تصادفی بدون حذف تکرارها 🎲
9
cost-optimized
کمینهسازی هزینه دلاری هر درخواست بر اساس قیمتگذاری زنده کاتالوگ 💸
10
headroom
انتخاب هدفی با بیشترین سهمیه باقیمانده
11
reset-window
ترجیح هدفی که بازه سهمیهاش زودتر بازنشانی میشود
12
reset-aware
رتبهبندی بر اساس زمان بازنشانی سهمیه — ابتدا بازههای کوتاهتر 📊
13
context-relay
انتقال زمینه میان هدفها برای مکالمات طولانی 🧠
14
context-optimized
انتخاب مناسبترین گزینه برای اندازه فعلی زمینه
15
cache-optimized
اختصاص هر پیشوند قابلاستفاده مجدد پرامپت به همان حساب — برای بیشینهسازی اصابتهای کش پرامپت 🎯
16
lkgp
آخرین مسیر موفق شناختهشده — ارائهدهنده موفق اخیر را حفظ میکند و سپس به قواعد جایگزین برمیگردد
17
auto
امتیازدهی زنده 16عاملی در تمام اتصالها 🤖
18
fusion
ارسال همزمان به مجموعهای از مدلها + یک داور که یک پاسخ واحد را ترکیب میکند 🧬
19
pipeline
زنجیرهسازی گامها — خروجی هر هدف به هدف بعدی داده میشود 🔗
موتور Auto-Combo هر گزینه را بر اساس **16 عامل** (سلامت، سهمیه، هزینه، تأخیر، تناسب با وظیفه، کیفیت، دسترسپذیری نشست و موارد دیگر) امتیازدهی میکند — به [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md) مراجعه کنید.
##
### 🧱 تابآوری بهصورت داخلی تعبیه شده است (3 لایه مستقل)
📖 [موتور ترکیب خودکار](docs/routing/AUTO-COMBO.md) · [راهنمای تابآوری](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 چه چیزی OmniRoute را متمایز میکند
📊 متدولوژی کامل و جزئیات هر ویژگی در مقایسه با 9router، OpenRouter، CLIProxyAPI و LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 از OmniRoute حمایت کنید
OmniRoute دارای مجوز MIT است و بهصورت عمومی نگهداری میشود. اگر باعث صرفهجویی در زمان یا هزینه شما شده است، از هر روشی که برایتان مناسب است برای مستقل ماندن آن حمایت کنید. حمایت مالی هرگز بر اولویت مسیریابی تأثیر نمیگذارد؛ این حمایت دیدهشدن را به همراه دارد، نه رتبهبندی را.
**🇧🇷 PIX** — فوری، بدون کارمزد (برزیل)
کلید (تصادفی): `5d865059-bc44-483a-962d-43ceb80126eb`
کد قابل کپی و جایگذاری Pix:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ رمزارز — BTC · ETH · USDT-TRC20 · USDC-Solana (برای باز کردن کلیک کنید)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ هر ارز را فقط از طریق شبکه مشخصشده ارسال کنید — ارسال از طریق شبکه اشتباه ممکن است باعث از دست رفتن دارایی شود.
🐛 باگ پیدا کردهاید یا بازخوردی دارید؟ یک [گفتوگو](https://github.com/diegosouzapw/OmniRoute/discussions) باز کنید.
یادداشتهای توسعهدهنده: این پروژه ممکن است برای راحتی توسعهدهندگان هنگام نصب یا پسنصب با npm، یک فایل محلی .env ایجاد کند. این فایل عمداً از طریق .gitignore نادیده گرفته میشود (.gitignore را ببینید) و هرگز نباید commit شود — اگر بهاشتباه commit شد، تمام اطلاعات محرمانه افشاشده را تغییر دهید و فایل را از تاریخچه حذف کنید. برای راهنمایی درباره مدیریت فایلهای محیطی محلی و اطلاعات محرمانه، به docs/DEVELOPER-ENVIRONMENT.md مراجعه کنید.
## 📡 رادار OmniRoute
عنوان اصلی سطح رایگان همچنان **~1.62B توکن در ماه** از کاتالوگ مستندشده و حذفتکرارشده بر اساس مخزن مشترک در بالا است. اعتبارهای موقت ثبتنام ارائهدهندگان میتوانند بهطور جداگانه میزان ماه اول را به **~2.22B** افزایش دهند. رادار یک لایهٔ اختیاری و امضاشده برای کاتالوگ است که برای افرادی طراحی شده که میخواهند در فاصلهٔ میان انتشار نسخههای OmniRoute، اطلاعات بهروزتری دربارهٔ دسترسپذیری مدلهای رایگان داشته باشند؛ کاتالوگ جامعه و تمام قابلیتهای رایگان موجود همچنان رایگان باقی میمانند.
حامیان میتوانند کاتالوگ زنده و فرصتهای بیشتری از ارائهدهندگان دریافت کنند. سقف جداگانه و متغیر آن، بسته به دسترسپذیری ارائهدهندگان، **حداکثر تقریباً 3B توکن در ماه** است. این سقف تضمینشده نیست: ارائهدهندگان ممکن است سهمیهها، شرایط احراز صلاحیت، مدلها یا مناطق را در هر زمان تغییر دهند.
رادار نیازمند فعالسازی اختیاری است و فقط از GET استفاده میکند. کلاینت OmniRoute هیچیک از اعلانها، ترافیک، پیکربندی ارائهدهنده، تلهمتری استفاده یا وضعیت محلی رد کردن اعلانها را آپلود نمیکند. برای آگاهی از شرایط احراز صلاحیت و کاتالوگ فعلی، به **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)** مراجعه کنید.
## ✨ تازهها
> نکات برجستهٔ اخیر از **v3.8.20 → v3.8.50**. تاریخچهٔ کامل در [`CHANGELOG.md`](CHANGELOG.md).
- **🎛️ OmniConductor** — واگذاری ورودی A2A به ناوگان عاملهای شما، مهارتهای Conductor در Agent Card و یک پنل داشبورد با گفتوگوی صوتی فشردن-برای-صحبت Faro. → [سرور A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 پذیرش تطبیقی و محافظت در برابر اضافهبار** — درخواستهای سنگین گفتوگو بهجای دریافت خطای 503 در صف قرار میگیرند، همراه با اجارههای چرخشی اتمی RPM برای هر اتصال. → [راهنمای تابآوری](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ ترتیب استاندارد `/v1/models`** — یک بلوک پیوسته و گروهبندیشده بر اساس ارائهدهنده برای هر ارائهدهنده (ابتدا ترکیبهای سنجاقشده)، پایدار در تمام منابع کاتالوگ. → [مرجع API](docs/reference/API_REFERENCE.md)
- **🗜️ مقاومسازی فشردهسازی** — محافظ پیشفرض و فعال در برابر تورم، بستههای Caveman برای DE / FR / JA + چینی (wényán)، و فیلترهای RTK برای Gradle و .NET. → [فشردهسازی](docs/compression/COMPRESSION_ENGINES.md)
- **💸 هزینه ثابت و صادقانه** — ارائهدهندگان اشتراکی / طرحهای کدنویسی در تحلیل هزینه مقدار **$0** را نشان میدهند؛ بودجه، سهمیه و مسیریابی همچنان برآورد میشوند. → [مرجع API](docs/reference/API_REFERENCE.md)
- **⚖️ مسیریابی Quota-Share** — سهمیه یک حساب مشترک را بهطور منصفانه میان کلیدهای تجمیعشده تقسیم میکند و با حفظ کارایی، سهمهای بلااستفاده را به دیگران قرض میدهد. → [راهنمای تابآوری](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 راهاندازی CLI/عامل با یک فرمان** — 13 فرمان ثبتشده `setup-*`؛ فرمان `omniroute run` تعداد 7 ابزار CLI را اجرا میکند (Claude Code، Codex، Aider، Goose، OpenCode، Qwen Code، Gemini CLI)؛ فرمان `omniroute configure` با انتخابگر تعاملی ارائهدهنده+مدل و موارد دلخواه مختص هر زمینه، از 10 مقصد پشتیبانی میکند. → [یکپارچهسازیهای CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ حالت راهدور** — یک OmniRoute راهدور را با توکنهای دارای دامنه (`connect` / `contexts` / `tokens`) و یک ابزار کمکی OAuth به نام `antigravity` برای نصبهای VPS کنترل کنید. → [حالت راهدور](docs/guides/REMOTE-MODE.md)
- **🧭 مسیریابی خودکار هوشمندتر** — ترکیبهای `auto/:`، **Fusion** (پنل مدل + داور)، مسیریابی آگاه از وظیفه، و بازنویسی مدل / حالت / بودجه USD برای هر درخواست. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ فشردهسازی قابلافزونه** — 12 موتور قابلترکیب + Compression Studios: LLMLingua-2، Ultra دومرحلهای، omniglyph، دروازه وفاداری برای هر گام، GCF v3.2 و ویرایشگر مرتبسازی با کشیدن. → [فشردهسازی](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ رمزگشایی شفاف MITM (TPROXY)** — ابزارهای CLI را که متغیرهای محیطی پراکسی را نادیده میگیرند، با یک CA مختص هر SNI و نصبکننده مخزن اعتماد رهگیری کنید. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 تلهمتری هزینه در همهجا** — سرآیندهای هزینه/مصرف `X-OmniRoute-*` در هر نقطه پایانی، سرآیند صرفهجویی cache-HIT و سهمیههای هزینهکرد USD برای هر کلید. → [مرجع API](docs/reference/API_REFERENCE.md)
- **🧠 حافظهای تحت کنترل شما** — بهطور پیشفرض غیرفعال، کوانتیزهسازی برداری int8 و زوال نوعدار بهصورت انتخابی، و `x-omniroute-no-memory` برای هر درخواست. → [حافظه](docs/frameworks/MEMORY.md)
- **🛡️ امنیت** — محافظ تزریق پرامپت در هر مسیر LLM (مجموعه آزمون تیم قرمز)، حفاظ اختیاری پوشاندن اطلاعات اعتباری (کلیدهای API/اسرار افشاشده را در هر دو جهت حذف میکند)، جستوجوی وب رایگان DuckDuckGo بهعنوان آخرین راهحل، و یک دروازه ورود اختیاری OIDC برای داشبورد (ورود با گذرواژه همیشه در دسترس میماند). → [حفاظها](docs/security/GUARDRAILS.md)
- **🖼️ نقاط پایانی جدید** — `/v1/ocr` (Mistral OCR) و `/v1/audio/translations` (به سبک Whisper) مجموعه قابلیتهای رسانهای را تکمیل میکنند. → [مرجع API](docs/reference/API_REFERENCE.md)
- **🎨 تولید تصویر / ویدئو / صدا** — یک API برای رسانه: ویدئوی xAI Grok Imagine و Novita AI، ComfyUI، Magnific، Adobe Firefly، Segmind و ارائهدهندگان گفتار مانند ElevenLabs. → [مرجع API](docs/reference/API_REFERENCE.md)
- **🌍 استقرار و عملیات** — `basePath` برای پراکسی معکوس، تشخیص خودکار زبان مرورگر، ردیابی دستگاه برای هر کلید، اعتماد MITM بدون دسترسی root و بومیسازی zh-TW. → [محیط](docs/reference/ENVIRONMENT.md)
- **🤝 ارائهدهندگان و عاملهای بیشتر** — عاملهای ابری (Codex Cloud، Cursor، Devin، Jules)، Grok Build (xAI) با مرورگر + ورود OAuth، کارت سطحاول Ollama، Claude Opus 5 و Sonnet 5، همکاری رسمی با Kimi (Code/Web/Moonshot)، Zed، Requesty، SenseNova، Yuanbao، Agnes AI… و یک **کاتالوگ بهروزشده شامل 352 ارائهدهنده**. → [ارائهدهندگان](docs/reference/PROVIDER_REFERENCE.md)
- **📡 شفافیت مسیریابی** — هر پاسخ دارای سرآیند `X-OmniRoute-Decision` است که راهبرد/ارائهدهنده/تأخیر ارائهکننده پاسخ را مشخص میکند؛ یک راهبرد ترکیبی جدید `cache-optimized` بههمراه عامل Auto-Combo با نام `cacheAffinity`، درخواستهای تکراری را به اتصالی بازمیگرداند که پیشوند ذخیرهشده در حافظه نهان را در اختیار دارد؛ و نقطه پایانی فقطخواندنی `/v1/auto-combo/{channel}/candidates` مجموعه زنده نامزدهای یک کانال `auto/*` را نمایش میدهد. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ عملکرد و زیرساخت محلی** — Redis محلی با یک کلیک، ابزارهای استقرار رله Cloudflare Workers / Deno Deploy، و Bifrost و Mux بهعنوان سرویسهای تعبیهشده تحت نظارت. → [سرویسهای تعبیهشده](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 امکانات دیگر موجود در بسته** — چارچوب افزونه + بازارچه، چارچوبهای مهارت Omni/Agent/GitHub، یکپارچهسازی مخزن Obsidian (22 ابزار MCP)، APIهای سازگار با OpenAI برای Batch و Files، حافظه نهان معنایی پاسخ، بازیوارسازی همراه با جدولهای رتبهبندی، کشف عامل ACP (15 عامل داخلی)، صدور زمانبندیشده گزارشها به BigQuery، تزریق خطای `auto/chaos`، یک پل ربات Telegram، مدیر نسخه درونبرنامهای و رتبهبندی ارائهدهندگان رایگان LMArena-ELO. → [مستندات](docs/README.md)
## 🤖 رابطهای خط فرمان و عاملهای کدنویسی سازگار
> یک پیکربندی — `http://localhost:20128/v1` — و **هر** محیط توسعه یا رابط خط فرمان هوش مصنوعی با مدلهای رایگان و کمهزینه اجرا میشود.
+ با این موارد نیز کار میکند · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · هر ابزار سازگار با OpenAI
📖 راهاندازی اختصاصی هر ابزار برای همهٔ ۳۶ ابزار (۲۶ ابزار CLI Code و ۱۰ عامل CLI) ← [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 افزونهٔ OpenCode ← [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**هر CLI پشتیبانیشده را تنها با یک فرمان از طریق OmniRoute اجرا کنید** — بدون نوشتن فایل پیکربندی،
با تزریق اعتبارنامهها بهصورت جداگانه برای هر فرایند و یک پوشهٔ خانگی موقت و ایزوله برای Qwen/Gemini:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# یا ارائهدهنده و مدل را بهصورت تعاملی انتخاب کنید و پیکربندی خود ابزار را بنویسید:
omniroute configure codex # همچنین: claude opencode qwen aider goose gemini cline continue kilo
```
هر فرمان از زمینهٔ راهدور فعال (`omniroute connect `) پیروی میکند، `--dry-run`
متغیرهای محیطی/آرگومانهای دقیق را بدون اجرا پیشنمایش میکند، و `--api-key-env NAME` اسرار را
از تاریخچهٔ پوستهٔ شما دور نگه میدارد. ← [یکپارچهسازیهای CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 357 ارائهدهندهٔ هوش مصنوعی — 152 مورد با برچسب رایگان در کاتالوگ
> **357 ارائهدهندهٔ ثبتشده** در مجموعههای مرجع چت، رسانه، جستوجو، محلی، عامل ابری و سیستم، شامل **152 مورد دارای فرادادهٔ اکتشافی `hasFree: true`**. رجیستری مدلهای چت شامل **229 ارائهدهنده / 2,554 جفت متمایز ارائهدهنده-مدل / 1,283 شناسهٔ خام مدل** است؛ کاتالوگ جداگانهٔ بودجهٔ رایگان نیز **491 ردیف بهازای هر مدل**، **35 مخزن دورهای** و **54 ارائهدهندهٔ رایگان همیشگیِ دورهای/بدون کلید** دارد. این مخرجها آگاهانه متفاوتاند؛ تعریفها و محاسباتی که مخزنهای تکراری از آنها حذف شدهاند، در [مرجع ارائهدهندگان](docs/reference/PROVIDER_REFERENCE.md) و [سطوح رایگان](docs/reference/FREE_TIERS.md) آمدهاند.
### 🏢 همهٔ آزمایشگاههای بزرگ — از طریق یک نقطهٔ پایانی
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…و بیش از 330 مورد دیگر — همهٔ آیکونها بهصورت زنده از کاتالوگ ارائهدهندگان داشبورد بارگیری میشوند. 📖 [مرجع ارائهدهندگان](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 رایگان برای همیشه — $0، بدون نیاز به کارت بانکی
OpenCode Zen DeepSeek V4, Nemotron 3 بدون محدودیت توکن
Kilo Code مسیریاب خودکار، Tencent Hy3 برای همیشه رایگان
Requesty GPT-OSS 120B, Nemotron برای همیشه رایگان
SiliconFlow DeepSeek V3.2 / R1 سطح رایگان
Z.AI GLM GLM-4.7 / 4.5-Flash برای همیشه رایگان
Baidu ERNIE ERNIE 4.0 برای همیشه رایگان
Qoder AI Qwen3-Max, Kimi-K2 رایگان و نامحدود
Pollinations GPT, Llama, Claude بدون نیاز به کلید
Cloudflare AI بیش از 50 مدل 10K نورون در روز
NVIDIA NIM GLM, MiniMax حدود 40 RPM رایگان
Cerebras GLM 4.7، GPT-OSS 1M توکن در روز
OpenRouter مدلهای :free +$10 ← RPM بالاتر
📖 فهرست کاملِ قابلخواندن توسط ماشین ← [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ OmniRoute کجا اجرا میشود — همهجا
> همان برنامه، دستگاه شما، قوانین شما. از نصب سراسری با npm گرفته تا اجرا روی **گوشی شما** از طریق Termux.
پلتفرم
نصب
ویژگیهای برجسته
📦 npm (سراسری)
npm install -g omniroute
یک فرمان، روی هر سیستمعامل
🐳 Docker
docker run … diegosouzapw/omniroute
چندمعماری AMD64 + ARM64
🖥️ دسکتاپ (Electron)
npm run electron:build
پنجره بومی + سینی سیستم — Windows / macOS / Linux
🎩 نوار منو (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
نظارت بر سرور و بهروزرسانی خودکار آن — macOS
💪 ARM
arm64 بومی
Raspberry Pi، سرورهای ARM، Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
بدون نیاز به روت، بهصورت ۲۴/۷ روی گوشی شما اجرا میشود
📲 PWA
«افزودن به صفحه اصلی»
تمامصفحه، آفلاین، قابل نصب از مرورگر
🧩 افزونه OpenCode
@omniroute/opencode-provider
یکپارچهسازی بومی با OpenCode
🤖 VS Code Copilot Chat
افزونه OmniCopilot را نصب کنید
همه مدلهای OmniRoute در انتخابگر بومی Copilot Chat — نسخههای پایدار و Insiders
### 🧩 جدید: OmniRoute درون Copilot Chat بومی VS Code
> نه نوار کناری جدیدی در کار است و نه رابط گفتوگوی تازهای — هر مدلی که OmniRoute ارائه میکند، مستقیماً در
> **انتخابگر مدل Copilot Chat که از قبل استفاده میکنید** نمایش داده میشود. از VS Code 1.122 به بعد، مدلهای ارائهدهندگان
> بدون ورود به GitHub یا اشتراک Copilot کار میکنند — حالت عامل، فراخوانی ابزار و بینایی،
> رایگان.
افزونه **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** را نصب کنید و آن را
به سرور OmniRoute خود متصل کنید (پیشفرض `localhost:20128` است)، سپس Copilot Chat ← انتخابگر مدل
← **مدیریت مدلها…** ← **OmniRoute** را باز کنید.
از داخل ویرایشگر: نمای **افزونهها** را باز کنید، **«OmniRoute»** را جستوجو کنید و روی **نصب**
کلیک کنید — در هر دو فروشگاه به یک شکل کار میکند. کد منبع، مشکلات و راهنمای انتشار در
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot) قرار دارند.
📖 [راهنمای VS Code Copilot Chat](docs/guides/VSCODE-COPILOT.md) — راهاندازی، آنچه انتخابگر نمایش میدهد، داشبورد در یک زبانه، عیبیابی
> `omniroute serve` وقتی همیشه روشن باشد، بهترین عملکرد را دارد. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> آن را به یک برنامه نوار منوی «تنظیم کن و فراموش کن» برای macOS تبدیل میکند: سرور را راهاندازی میکند، پس از
> راهاندازی مجدد سیستم فعال نگهش میدارد، آن را درجا بهروزرسانی میکند و بودجه زنده توکن شما را با یک کلیک در دسترس قرار میدهد — **بدون
> باز ماندن پنجره ترمینال و بدون نیاز به مراقبت از `npm install -g omniroute`.**
این برنامه با [Tauri v2](https://v2.tauri.app/) ساخته شده است (هستهای مبتنی بر Rust که اندازهاش تقریباً قابل چشمپوشی است)،
محیط اجرای امضاشده Node 24 خودش را ارائه میکند و نصب OmniRoute متعلق به برنامه را مدیریت میکند؛ بنابراین هرگز با
`node`/`bun` سراسری شما تداخل ندارد. این برنامه **از پیکربندی و پایگاه داده موجود شما در `~/.omniroute/` استفاده میکند** — پس همان
OmniRouteای است که از قبل اجرا میکنید، فقط این بار کلاه به سر دارد. 🎩
چه کاری انجام میدهد
چگونه
🟢 بر سرور نظارت میکند
omniroute serve را اجرا میکند و بهجای ایجاد نمونهای تکراری، نمونه از قبل در حال اجرا را بهکار میگیرد
📊 نمای کلی از مصرف زنده
نوارهای سهمیه ارائهدهندگان، محدودیتهای جلسهای/هفتگی Claude همراه با شمارش معکوس بازنشانی، تفکیک هزینه ۳۰روزه
🔄 بهروزرسانی خودکار درجا
نصب مرحلهای، جابهجایی اتمی، بازگشت در صورت شکست — همیشه روی جدیدترین نسخه
🚀 اجرا هنگام ورود
اجرای اختیاری هنگام ورود؛ فقط در سینی، بدون نماد در Dock
🩺 بررسی سلامت و گزارشها
عیبیابی با یک کلیک و دسترسی به گزارشهای سرور
```sh
brew install --cask zoispag/tap/omniroute-tray
```
دانلود را ترجیح میدهید؟ جدیدترین فایل .dmg را از
Releases دریافت کنید. کد منبع، مشکلات و مستندات
ساخت در zoispag/omniroute-tray قرار دارند.
💛 پروژهای اجتماعی توسط @zoispag — و نه یک نسخهٔ رسمی OmniRoute.
> فراتر از سرور، OmniRoute یک **مرکز کنترل کامل خط فرمان** با **بیش از 80 فرمان** است و در کنار آن پروتکلهای باز عامل را ارائه میدهد تا یک عامل هوش مصنوعی بتواند **بهتنهایی** آن را کنترل کند.
### ⌨️ یک CLI واقعی (نه فقط `start`)
```bash
omniroute # ارائهٔ دروازه + داشبورد (درگاه 20128)
omniroute chat # کلاینت تعاملی گفتوگوی TUI (دستورهای اسلش: /model /combo /skill /memory)
omniroute setup # راهانداز هدایتشده برای نخستین اجرا
omniroute doctor # عیبیابی ارائهدهندگان، درگاهها و وابستگیهای بومی
```
### 🛰️ حالت راه دور — CLI را اینجا و OmniRoute را روی یک VPS اجرا کنید
OmniRoute روی یک سرور است؟ با **همان CLI** آن را از لپتاپ خود کنترل کنید. یک بار
با یک توکن دسترسی دارای دامنهٔ محدود وارد شوید؛ سپس هر فرمان، سرور راه دور را هدف قرار میدهد.
```bash
omniroute connect 192.168.0.15 # گذرواژه ← توکن دارای دامنهٔ محدود، ذخیرهشده بهعنوان یک زمینه
omniroute models list # ← روی سرور راه دور اجرا میشود
omniroute configure codex # ← یک مدل راه دور را انتخاب و یک پروفایل محلی Codex ایجاد میکند
omniroute tokens create --name ci --scope read # ایجاد توکنهایی با دسترسی محدودتر برای دستگاههای دیگر
omniroute contexts use default # ← بازگشت به سرور محلی
```
دامنهٔ دسترسی توکنها `read` / `write` / `admin` است؛ مسیرهایی که فرایند اجرا میکنند فقط به رابط حلقهٔ محلی محدود میمانند.
📖 [حالت راه دور](docs/guides/REMOTE-MODE.md)
### 🤝 یک عامل را متصل کنید — تا خود OmniRoute را کنترل کند
OmniRoute را از طریق **MCP**، **A2A**، یک **REST API**، **وبهوکها** یا یک **CLI راه دور** در دسترس قرار دهید — هر عامل توانمند (یا کد خودتان) کلیدهای کنترل تمام دروازه را در اختیار میگیرد: مسیریابی، ارائهدهندگان، ترکیبها، حافظهٔ نهان، فشردهسازی و حافظه — بهصورت خودمختار. نقاط پایانی HTTP زیر در `http://localhost:20128` ارائه میشوند.
رابط
نقطهٔ پایانی / فرمان
کاربرد
🧰 MCP (stdio)
omniroute --mcp
اتصال به Claude Desktop، Cursor یا هر کلاینت MCP
🌊 MCP (HTTP)
/api/mcp/stream
MCP راه دور — 110 ابزار، 33 دامنهٔ دسترسی (اعمال محدودیت بهصورت اختیاری)، ردپای ممیزی کامل
📡 MCP (SSE)
/api/mcp/sse
انتقال جریانی MCP
🤝 A2A
/.well-known/agent.json
ارتباط عاملبهعامل، JSON-RPC 2.0 + SSE، 6 مهارت
🌐 REST API
/v1/*
سازگار با OpenAI — گفتوگو، تعبیهسازیها، تصاویر، صدا و OCR
🔔 وبهوکها
/api/webhooks
ارسال رویدادهای درخواست / سهمیه به Slack، Discord، Telegram یا هر URL
🛰️ CLI راه دور
omniroute connect
کنترل یک نمونهٔ راه دور با توکنهای دسترسی دارای دامنهٔ محدود
```bash
# مجموعهابزار کامل OmniRoute را از طریق MCP در اختیار Claude Code قرار دهید:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [سرور MCP](docs/frameworks/MCP-SERVER.md) · [سرور A2A](docs/frameworks/A2A-SERVER.md) · [پروتکلهای عامل](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ صرفهجویی خودکار ۱۵ تا ۹۵٪ در توکنها
### 📖 نحوه کار — خط لوله، معماری و محاسبات صرفهجویی
ترکیب پشتهای پیشفرض، `RTK → Caveman` را اجرا میکند. وقتی هر دو روی یک محموله ابزار/زمینه یکسان اعمال شوند، صرفهجوییها بهصورت مرکب محاسبه میشوند:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
بلوکهای کد، URLها، JSON و دادههای ساختاریافته **همیشه توسط موتور نگهداشت محافظت میشوند**.
> **وقتی چند توکن کار را راه میاندازند، چرا از توکنهای زیاد استفاده کنیم؟** هر درخواست بهصورت **شفاف** از خط لوله فشردهسازی OmniRoute عبور میکند — بدون نیاز به تغییر در کلاینت. اکنون این خط لوله **پشتهای از ۱۲ موتور ترکیبپذیر** است که بهترتیب اجرا میشوند و برای هر ترکیب مسیریابی قابل ترکیب و تطبیق هستند — با تکیه بر ایدههایی از [RTK](https://github.com/rtk-ai/rtk)، [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ بیش از 90K)، [LLMLingua-2](https://github.com/microsoft/LLMLingua) و [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 پشته ۱۲ موتوره
موتورها بهترتیب خط لوله اجرا میشوند؛ هرکدام را میتوان بهطور مستقل فعال یا غیرفعال کرد و برای هر ترکیب پیکربندی نمود:
#
موتور
کارکرد
1
Session-Dedup
محتوای تکرارشده در نوبتهای مختلف را حذف میکند (محتوامحور، بیننوبتی)
2
CCR
بلوکهای بزرگ را پشت نشانگرهای بازیابی بایگانی میکند تا در صورت نیاز واکشی شوند
3
Lite
حذف فضای خالی + کوتاهسازی URL تصاویر (خط مبنای سبک از نظر تأخیر)
4
RTK
فیلتر هوشمند نتایج ابزار، حذف موارد تکراری و کوتاهسازی (آگاه از فرمان)
5
Responses Tool Output
JSON با اولویت حفظ بدون اتلاف + فشردهسازی تشخیصی محدود برای خروجیهای پوسته/وصله/جستوجو/ساخت (Responses API)
6
Headroom
فشردهسازی جدولی و بدون اتلاف آرایههای JSON (حدود ۳۰٪) با استفاده از کدک داخلیشده GCF
7
Relevance
امتیازدهی استخراجی به جملهها بر اساس آخرین پرسش کاربر
8
Caveman
فشردهسازی قاعدهمحور نثر (حدود ۶۵ تا ۷۵٪ در خروجی)
9
Aggressive
خلاصهسازی + پیرسازی تدریجی نوبتهای قدیمی
10
LLMLingua-2
هرس معنایی مبتنی بر یادگیری ماشین با MobileBERT ONNX — ایمن برای کد، ناهمگام
11
Ultra
هرس ابتکاری توکنها با یک سطح اختیاری مدل کوچک (SLM)
12
OmniGlyph
رمزگذاری آزمایشی زمینه بهصورت تصویر برای Claude Fable 5 اندازهگیریشده روی اتصال مستقیم Anthropic؛ تبدیلکنندههای GPT 5.6 تا زمان دریافت رسیدهای ارائهدهنده، همچنان در حالت fail-closed باقی میمانند. چهار پروفایل فشردهسازی (پیشفرض تهاجمی، متعادل، ایمن برای کدنویسی، عبور مستقیم) (تهاجمیترین؛ نیازمند فعالسازی دستی)
بلوکهای کد، URLها و دادههای ساختاریافته **همیشه** با دقت بایتبهبایت حفظ میشوند. **پیشتنظیمهای تککلیکی** موتورها را با هم ترکیب میکنند:
حالت
صرفهجویی
مناسب برای
🪶 Lite
~۱۵٪
حالت پیشفرض ایمن و همیشهفعال
🪨 Standard (Caveman)
~۳۰٪
کدنویسی روزمره
⚡ Aggressive
~۵۰٪
جلسات طولانی با استفاده زیاد از ابزارها
🔥 Ultra
~۷۵٪
حداکثر صرفهجویی
🧰 RTK
۶۰–۹۰٪
خروجی پوسته/آزمایش/ساخت/git
🔗 Stacked (RTK → Caveman)
۷۸–۹۵٪
پرامپتهای ترکیبی + گزارشهای ابزار
**نمونه واقعی — حالت Standard:**
> **پیش از فشردهسازی (۶۹ توکن):** _«دلیل رندر مجدد کامپوننت React شما احتمالاً این است که در هر چرخه رندر، یک ارجاع شیء جدید ایجاد میکنید. وقتی یک شیء درونخطی را بهعنوان prop ارسال میکنید، مقایسه سطحی React هر بار آن را یک شیء متفاوت تشخیص میدهد و این باعث رندر مجدد میشود. توصیه میکنم برای بهخاطرسپاری شیء از useMemo استفاده کنید.»_
>
> **پس از فشردهسازی (۱۹ توکن):** _«در هر رندر یک ارجاع شیء جدید. prop شیء درونخطی = ارجاع جدید = رندر مجدد. آن را در useMemo قرار دهید.»_
>
> **همان پاسخ. ۷۲٪ توکن کمتر. بدون افت دقت.** ✅
**نمونه PT-BR — حالت [Troglodita](https://github.com/leninejunior/troglodita):**
> **قبل (42 توکن):** _«مشکل این است که کامپوننت دوباره رندر میشود، چون در هر چرخهٔ رندر یک ارجاع جدید به شیء ایجاد میشود. پیشنهاد میکنم از useMemo استفاده کنید.»_
>
> **بعد (12 توکن):** _«رندر مجدد: ارجاع جدید در هر چرخه (بازسازی شیء درونخطی). استفاده از `useMemo`.»_
>
> **همان پاسخ. حدود 70٪ توکن کمتر. دقت فنی دستنخورده.** ✅
### 🎚️ فراتر از موتورهای پردازش — سبکهای خروجی، تنظیمگر تطبیقی و کنترل در سطح هر درخواست
12 موتور بالا آنچه را **وارد میشود** فشرده میکنند. سه لایهٔ دیگر تعیین میکنند خروجی **چگونه**، **چه زمانی** و به چه شکلی **ارائه شود**:
- **🪄 سبکهای خروجی** _(هدایت در محور خروجی)_ — دستورالعملهای قطعی و سازگار با کش را برای شکلدهی پاسخ تزریق میکنند؛ قابل ترکیباند و هرکدام شدت `lite` / `full` / `ultra` دارند. افزودن یک سبک فقط به یک ورودی تکخطی در رجیستری نیاز دارد:
- **نثر موجز** — حذف حشو، حروف تعریف و تردیدگویی؛ حفظ دقیق محتوای فنی.
- **کد کمتر** — رویکرد YAGNI یک «توسعهدهندهٔ ارشد کمزحمت»: کوچکترین تغییر عملی، بدون زیرساختهای درخواستنشده.
- **Ponytail (توسعهدهندهٔ ارشد کمزحمت)** — حرکت در نردبان YAGNI، رفع علت ریشهای و ارائهٔ کوچکترین تفاوت عملی.
- **من ADHD دارم (اول اقدام)** — شروع با اقدام بعدی، مراحل شمارهگذاریشده، یک گام بعدی مشخص و بدون مقدمه.
- **CJK موجز (文言)** — سبک فوقموجز چینی کلاسیک (محدود به locale برابر با `zh`).
- **🎯 بودجهٔ تطبیقی کانتکست** _(تنظیمگر)_ — بهجای یک آستانهٔ روشن/خاموش برای توکنها، ارزانترین موتورهایی را که کمترین اتلاف را دارند فقط تا حد لازم فعال میکند تا محتوا **در پنجرهٔ کانتکست مدل جا شود**. سیاست: `reserve-output` (پیشفرض و آگاه از مدل) · `percentage` · `absolute`. حالت: `floor` (تضمین جا شدن) · `replace-autotrigger` (انتخاب صریح شما اولویت دارد) · `off` (آستانهٔ قدیمی).
- **🎛️ محل تصمیمگیری برای فشردهسازی** _(اولویت، از بالا به پایین)_ — هدر `x-omniroute-compression` در سطح درخواست › بازنویسی ترکیب مسیریابی › پروفایل نامگذاریشدهٔ فعال › تطبیقی / راهاندازی خودکار › پیشفرض پنل › خاموش. طرح اعمالشده در هدر پاسخ `X-OmniRoute-Compression: ; source=` بازتاب داده میشود.
راهاندازی خودکار بر اساس آستانهٔ توکن، فعالکردن تنظیمگر تطبیقی، ثابتکردن یک پروفایل نامگذاریشده، تنظیم یکباره برای هر درخواست یا اختصاص یک پایپلاین به هر ترکیب مسیریابی — هرکدام را که با بار کاری سازگار است انتخاب کنید. یک **چارچوب ارزیابی** آفلاین و اختیاری (`npm run eval:compression`) پیش از انتشار تغییر، میزان وفاداری در برابر صرفهجویی را روی یک مجموعهدادهٔ ثابت امتیازدهی میکند.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ شروع سریع
**1) نصب و اجرا**
```bash
npm install -g omniroute
omniroute
```
> 💡 پیام `npm warn ERESOLVE` یا هشدارهای وابستگی همتا میبینید؟ [بیضرر هستند](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
داشبورد در `http://localhost:20128` · API در `http://localhost:20128/v1`.
**2) اتصال یک ارائهدهندهٔ رایگان (بدون ثبتنام)**
داشبورد ← **ارائهدهندگان** ← اتصال **Kiro AI** (Claude رایگان، حدود 50 اعتبار در ماه برای هر حساب) یا **OpenCode Free** (بدون احراز هویت) ← تمام.
**3) هدایت ابزار کدنویسی**
```txt
نشانی پایه: http://localhost:20128/v1
کلید API: [از داشبورد ← نقاط پایانی کپی کنید]
مدل: auto (مسیریابی هوشمند بدون پیکربندی — یا هر ارائهدهنده/مدل)
```
**4) اطمینان از عملکرد صحیح**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
باید مدلهای متصلشدهٔ خود را در فهرست ببینید. 🎉 همین است — کدنویسی را شروع کنید؛ OmniRoute بهصورت خودکار درخواستها را مسیریابی میکند و در صورت نیاز به گزینهٔ جایگزین میرود.
اگر کلاینت شما نمیتواند هدرهای سفارشی ارسال کند، OmniRoute نامهای مستعار سازگاریِ توکندار را نیز ارائه میدهد:
```txt
کاتالوگ OpenAI: http://localhost:20128/vscode/YOUR_KEY/
مدلهای OpenAI: http://localhost:20128/vscode/YOUR_KEY/models
گفتوگوی OpenAI: http://localhost:20128/vscode/YOUR_KEY/chat/completions
پاسخهای OpenAI: http://localhost:20128/vscode/YOUR_KEY/responses
گفتوگوی Ollama: http://localhost:20128/vscode/YOUR_KEY/api/chat
برچسبهای Ollama: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
از این موارد فقط برای کلاینتهایی استفاده کنید که نمیتوانند `Authorization: Bearer ...` را پیوست کنند. احراز هویت با هدر همچنان روش ترجیحی است.
## 📦 روشهای بیشتر نصب — Docker، کد منبع، pnpm، Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` بالاترین نسخهٔ پایدار SemVer **منتشرشده** را دنبال میکند. این برچسب git `main` را دنبال نمیکند. برای GitOps، نسخه را روی `:X.Y.Z` ثابت کنید. به [کانالهای انتشار Docker](docs/guides/DOCKER_GUIDE.md#release-channels) مراجعه کنید. ایمیج مقدار **`OMNIROUTE_MEMORY_MB=1024`** را ثابت تنظیم میکند. این مقدار برای داشبورد و یک گفتوگوی سبک کافی است. **عاملهای کدنویسی** (`POST /v1/responses` از Claude Code، Codex، Grok و …) به heap بسیار بزرگتری برای V8 نیاز دارند؛ در غیر این صورت، با دو context طولانی همپوشان، پردازش در حدود ۱۲ گیگابایت با `FATAL ERROR` مواجه میشود. اندازهٔ کانتینر را بیشتر از heap در نظر بگیرید (بافرهای native خارج از V8 قرار دارند):
| بار کاری | Heap (`-e OMNIROUTE_MEMORY_MB`) | کانتینر (`--memory`) |
| -------------------------------- | ------------------------------- | -------------------- |
| داشبورد / گفتوگوی سبک | `1024` (پیشفرض ایمیج) | ≥2 g |
| یک عامل کدنویسی | `8192` | ≥10 g |
| دو `/v1/responses` طولانی همزمان | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
جدول کامل: [راهنمای Docker — RAM زمان اجرا](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **کانال پیشانتشار Docker:** برچسبهای `diegosouzapw/omniroute:next` و
> `diegosouzapw/omniroute:next-web` شاخهٔ پیشفرض فعلی `release/v*` را
> دنبال میکنند. این برچسبهای تغییرپذیر فقط برای آزمایش اصلاحات منتشرنشده در نظر گرفته شدهاند و
> **برای محیط production پشتیبانی نمیشوند**. به
> [کانالهای انتشار Docker](docs/guides/DOCKER_GUIDE.md#release-channels) مراجعه کنید.
**🥟 Bun**
دستور استاندارد `bun install` و نصب سراسری (`bun install -g omniroute`) از طریق تشخیص runtime مربوط به Bun پشتیبانی میشوند:
- **`bun:sqlite` داخلی**: هنگام اجرا تحت Bun، OmniRoute از درایور داخلی `bun:sqlite` متعلق به Bun استفاده میکند و در Node.js یا `sql.js` به `better-sqlite3` بازمیگردد.
- **انتخاب خودکار bundler مبتنی بر Webpack در محیط توسعه**: محیط توسعه (`bun run dev`) بهطور خودکار Bun را تشخیص میدهد و برای جلوگیری از ناسازگاریهای binding بومی V8، Turbopack را به نفع Webpack غیرفعال میکند. buildهای production (`bun run build`) دقیقاً مانند Node از `OMNIROUTE_USE_TURBOPACK` پیروی میکنند: بهصورت پیشفرض Turbopack و با `OMNIROUTE_USE_TURBOPACK=0`، ساخت با Webpack انجام میشود (`Dockerfile.bun` آن را بهصورت یک `--build-arg` ارائه میکند).
- **Dockerfile اختصاصی Bun**: فایل چندمرحلهای `Dockerfile.bun` برای استقرارهای production بومی Bun (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# نصب و اجرا با Bun
bun install
bun run dev
```
**🛠️ از کد منبع**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# استفاده از Nix flakes
nix develop
npm run dev
# یا استفاده از devbox
devbox run npm run dev
```
📖 [راهنمای Docker](docs/guides/DOCKER_GUIDE.md) — پروفایلهای Compose، Caddy HTTPS و tunnelهای Cloudflare.
**🦭 Podman**
```bash
# ۱. دایرکتوری دادهٔ bind-mounted را آماده کنید
mkdir -p data
# ۲. فقط Linux + Podman محلی و rootless (هرگز یک کلاینت remote از Podman Machine نباشد):
podman unshare chown 1000:1000 ./data
# ۳. راهنمای runtime را تنظیم کنید، ایمیج محلی Compose را بسازید و اجرا کنید
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
در macOS یا Windows، Podman از یک Podman Machine از راه دور استفاده میکند: از `podman unshare` صرفنظر کنید و
[راهنمای دایرکتوری داده متناسب با توپولوژی](contrib/podman/README.md#data-directory-permissions-by-topology) را دنبال کنید.
📖 [راهنمای Podman](contrib/podman/README.md) — ساختهای Compose، Podman Machine و
راهاندازی Quadlet در Linux/systemd.
**⚡ نصب سریعتر / سبکتر (صرفنظر از build بومی)**
موتور بومی SQLite (`better-sqlite3`) یک وابستگی **اختیاری** است؛ بنابراین نصب سراسری
هرگز منتظر کامپایل از کد منبع نمیماند: اگر binary ازپیشساختهشدهای با
پلتفرم/Node شما سازگار باشد، از آن استفاده میکند و در غیر این صورت، بهطور شفاف به یک موتور pure-JS
(`node:sqlite` در Node 22+، و در غیر این صورت `sql.js` WASM همراه بسته) بازمیگردد — بدون نیاز به ابزارهای build.
برای صرفنظر کامل از آمادهسازی بومی پس از نصب (در CI، محیطهای headless یا دستگاههای کند):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 نیز از آن صرفنظر میکند
```
برای سریعترین نصبها، **pnpm** را ترجیح دهید (ذخیرهسازی content-addressed + لینکهای سخت — بخش بالا را ببینید).
برای runtime بدون داشبورد و headless، از پروفایل Docker با نام `base` (در بالا) یا
[راهنمای Termux](docs/guides/TERMUX_GUIDE.md) استفاده کنید. CLI و داشبورد وب توسط
همان پردازش و روی یک پورت ارائه میشوند؛ بنابراین در حال حاضر بستهٔ جداگانهای فقط برای CLI وجود ندارد.
راهبرد پوشش آزمون برای بیش از 39,000 اعلان آزمون ایستا در بیش از 5,100 فایل آزمون رهگیریشده
# ⭐ برترین مشارکتکنندگان
> OmniRoute بهدست جامعهای پرشور از متنباز شکل گرفته است. این افراد مشارکتهای برجستهای داشتهاند که مستقیماً بر کیفیت، پایداری و گستره پروژه تأثیر میگذارد. **سپاسگزاریم.**
### مشارکتکنندگان خارجی بر اساس درخواستهای کشش ادغامشده
این آمار بر اساس آخرین وضعیت زنده release/v3.8.50 در dafb4ae808، با ادغامها تا 2026-08-24 05:26:03 UTC ثابت شده است. سرشماری صفحهبندیشده GitHub GraphQL شامل 5,911 درخواست کشش ادغامشده است: 2,707 مورد توسط مالک مخزن، 179 مورد توسط Dependabot و 3,025 درخواست کشش خارجی از 535 مشارکتکننده متمایز. «خطوط تغییریافته» برابر با مجموع افزودهها و حذفهای GitHub است و فایلهای تولیدشده، lockfileها، کاتالوگها، ترجمهها و مستندات را شامل میشود؛ این مقدار نشاندهنده حجم تغییرات است، نه LOC تألیفشده. رتبههای مساوی در مرز نهایی حفظ شدهاند.
### کامیتهای منتسب به GitHub
Bob.Hou 🏅 ۵۱ کامیت منتسب به GitHub · رتبه مشترک ۱۰
Xiangzhe 🏅 ۵۱ کامیت منتسب به GitHub · رتبه مشترک ۱۰
بازبینی مجدد در 2026-08-24 06:14:31 UTC: کامیتهای منتسب به GitHub که توسط API مشارکتکنندگان مخزن برای شاخه پیشفرض release/v3.8.50 گزارش شدهاند. API تعداد ۵۲۵ هویت (۴۱۵ کاربر، ۲ ربات و ۱۰۸ ناشناس) را برگرداند؛ این جدول نگهدارنده، رباتها و هویتهای ناشناس را مستثنا میکند و رتبههای مشترک را حفظ میکند. این جدول هم با رتبهبندی درخواستهای کشش ادغامشده در بالا و هم با سرشماری ۶۳۹نفره فرادادههای Git در پایین متفاوت است.
> 🙏 قابلیتها، رفع اشکالها و بهبودهای زیرساختی این مشارکتکنندگان، **بخشی اساسی** از عواملی هستند که OmniRoute را قابلاعتماد و سرشار از قابلیت میکنند. هر درخواست کشش، هر مورد آزمایشی و هر فایل ترجمه i18n اهمیت دارد. متنباز به دست افرادی مانند آنها ساخته میشود.
---
## 💖 حامیان مالی
سپاسی صمیمانه از افرادی که هزینههای OmniRoute را از جیب خود تأمین میکنند — هر کمک مالی باعث میشود این پروژه رایگان، مستقل و در حال پیشرفت باقی بماند.
… و دیگرانی که ترجیح میدهند ناشناس بمانند 💛حامیان عمومی GitHub در تاریخ 2026-08-24 دوباره اعتبارسنجی شدند. وضعیت activeOnly در GitHub برچسبهای فعال بالا را تعیین میکند؛ همچنان از حامیان عمومی با پرداخت یکباره که پیشتر اعلام شدهاند قدردانی میشود و حامیان خصوصی ناشناس باقی میمانند.💖 حامی مالی شوید ← — هر دلار کمک میکند OmniRoute رایگان و مستقل باقی بماند.
## 👥 بیش از 600 مشارکتکننده
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
در تاریخ 2026-08-24 بر روی مبنای ثابت ac02c5b42f ممیزی شد و مجدداً در نوک زنده شاخه release/v3.8.50 با شناسه dafb4ae808 بررسی شد: 639 هویت انسانی نرمالسازیشده Git — 407 مورد بهعنوان نویسنده commit ظاهر میشوند (از جمله نگهدارنده پروژه) و 232 مورد فقط در تریلرهای صریح Co-authored-by حضور دارند. این سرشماری شناسههای noreply در GitHub را نرمالسازی میکند، 26 هویت متعلق به رباتها، عاملها، سرویسها یا جاینگهدارها را کنار میگذارد و آدرسهای ایمیل معمولی را صرفاً بهدلیل یکسان بودن نام نمایشی آنها ادغام نمیکند.
### نحوه مشارکت
1. مخزن را fork کنید
2. از نوک **فعال** شاخه `release/vX.Y.Z` منشعب شوید (نه از `main`) — به [مدل شاخهبندی و انتشار](docs/ops/BRANCHING_MODEL.md) مراجعه کنید
3. شاخه قابلیت خود را ایجاد کنید (`git checkout -b feat/amazing-feature`)
4. تغییرات خود را commit کنید (`git commit -m 'feat: add amazing feature'`)
5. تغییرات را به شاخه push کنید (`git push origin feat/amazing-feature`)
6. یک Pull Request با **base = همان شاخه `release/vX.Y.Z`** باز کنید
برای دستورالعملهای دقیق، به [CONTRIBUTING.md](CONTRIBUTING.md) مراجعه کنید.
### انتشار نسخهای جدید
```bash
# ایجاد یک انتشار — npm publish بهصورت خودکار انجام میشود
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 ستارهها
## 🌍 StarMapper
## 🙏 قدردانی
OmniRoute بر شانههای غولها ایستاده است. این پروژه بهعنوان فورکی از **[9router](https://github.com/decolua/9router)** و یک پورت TypeScript از پروژهٔ Go به نام **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** آغاز شد — و از آنجا به بعد، هر زیرسامانهٔ زیر از پروژهای متنباز الهام گرفته است که پیشتر این مسیر را پیموده بود. هر یک از آنها بخش مشخصی از OmniRoute را شکل دادهاند. این پیام سپاس ما به همهٔ آنهاست. 🙏
> ⭐ تعداد ستارهها در ۲۴ اوت ۲۰۲۶ از طریق REST API گیتهاب تأیید شده است — شما هم به این پروژهها ستاره بدهید. این تعداد، تصویری دقیق مربوط به همان تاریخ است و طبیعتاً تغییر خواهد کرد.
### 🧬 تبار و درگاه
درگاه هوش مصنوعیای که مجموعهداده عمومی قیمتگذاری آن همگامسازی ردیابی هزینه ما را تغذیه میکند و مدل نرمالسازی ارائهدهندگان آن، مسیریابی ما را شکل داده است.
الگوهایی که به بازیابی جریان، نامهای مستعار بدون تفکر، جستوجوی وب جایگزین، محدودیتهای پنجره لغزان، حذف اطلاعات حساس از گزارشها و جریانهای راهاندازی مقاوم منتقل شدهاند.
نگاشتهای مدل Grok، مولد Statsig با TypeError جعلی، پیشفرضهای درخواست و دستگاه، و پردازشگر پاسخ NDJSON آن بهطور اساسی در اجراکننده Grok Web متعلق به OmniRoute اقتباس شدهاند.
یک منبع انتقالی که grok2api-merged برای لایه مخزن پراکسی خود به آن اعتبار داده است؛ OmniRoute این اعلام تبار را حفظ میکند، اما ادعای انتقال مخزن پراکسی به اجراکننده محدود Grok Web خود را ندارد.
پیادهسازی اولیه Grok Web از طراحی بالادستی HTTP/مرورگر آن بهره گرفته است؛ مسیر مستقیم HTTP آن از GrokProxy مشتق شده، بنابراین ادعایی درباره انتقال مستقل کد مطرح نمیشود.
پروژهٔ وایرال «چرا وقتی چند توکن کار راه میاندازد، از توکنهای زیاد استفاده کنیم» — فلسفهٔ گفتار غارنشینی آن، زیربنای حالت فشردهسازی استاندارد ما و بیش از ۳۰ قاعدهٔ حذف کلمات زائد/تلخیص است.
مهارت وایرال کدنویسی YAGNI به سبک «توسعهدهندهٔ ارشد تنبل» — الهامبخش سبک خروجی less-code ما بود: هدایت بهسمت کوچکترین تغییرِ کارآمد که حجم کد _تولیدشده_ را کاهش میدهد (همتای محور خروجیِ نثر موجز Caveman).
فشردهسازی خروجیِ آگاه از محتوا و ویژهٔ هر نوع فایل، همراه با انصراف آگاه از خرابی — مسیریابی بر اساس نوع و صرفنظر کردن در صورت سود حداقلی را در طراحی ما تأیید کرد.
JSON ستونی در Rust بهعلاوهٔ بازیابی مبتنی بر آدرسدهی محتوا و حذف موارد تکراری میان پیامها — طراحی موتورهای headroom/ccr/session-dedup ما و اصل تغییرناپذیرِ سازگاری با کش، یعنی «شکل فشرده مستقل از موقعیت است»، را تأیید کرد.
رهگیری/تحلیل MITM ترافیک میان دستیار کدنویسی ↔ LLM، الزامات اولیه «بازرس ترافیک» را شکل داد. چهار ماژولی که پیشتر از آن اقتباس شده بودند — ادغام SSE، عادیسازی مکالمه، پوشاندن اطلاعات محرمانه و پاکسازی هدرها — با پیادهسازیهای مستقل کلینروم مبتنی بر استانداردهای عمومی پروتکل جایگزین شدهاند. دو سطح عبور مستقیم میزبان (passthrough.ts و _internal/bypass.cjs) همچنان پیادهسازیهای داخلی OmniRoute هستند که بهطور مستقل طبقهبندی شدهاند؛ این دو در چارچوب آن جایگزینی بازنویسی نشدند.
مسیریابی شفاف پروکسی بهازای هر فرایند — الهامبخش جمعآوری ایمن MITM هنگام خرابی، مهلتهای بیکاری سوکت، انتساب فرایند از طریق /proc و ضبط TPROXY در سامانه ما بود.
فهرستی گزینششده از کتابخانههایی با تنظیمات پیشفرض امن که راهنمای انتخابهای امنیتی ما است (Helmet.js، DOMPurify، ssrf-req-filter، safe-regex، Google Tink).