# 🚀 OmniRoute — Безплатният AI шлюз
**Създадено от [Diego Souza](https://github.com/diegosouzapw)**
## 💰 ~1.62 млрд токена / месец в безплатните планове на трети страни
> **Използвайте собствени акаунти при доставчиците.** Това е приблизителен общ сбор от отделно допустими безплатни планове на трети страни, а не предоставени токени от OmniRoute. Регистрирайте се, получете идентификационни данни, когато са необходими, и свържете доставчиците, които можете да използвате; всеки доставчик контролира своите ограничения, наличност и условия.
>
> Ръчното комбиниране на безплатни планове е досадно — десетки SDK, десетки ограничения на честотата и никаква представа с колко всъщност разполагате. OmniRoute каталогизира **465 записа за безплатни планове в 34 повтарящи се ключа на пулове** и изчислява основната стойност за токените от **17 пула с публикуван положителен месечен бюджет плюс пет лимита на Groq за отделни модели**, като премахва дублирането по споделен пул. Квотите, които се активират едва след проверка на регионална самоличност (днес: ModelScope), се показват отделно — +~6 млн. след проверка на регионалната самоличност — и никога не се включват в основната стойност. Резултатът остава видим на таблото (`/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 [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Портал](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Gateway продължава да се разраства
| | v3.8.50 | **v3.8.51** | `v3.8.54+` |
| ---------------------------------------- | :-------------------------: | :---------: | :-------------------: |
| 🌐 Доставчици | 352 | **358** | 388 |
| 🧠 Уникални идентификатори на чат модели | 1320 | **1374** | 1491 |
| 🖼️ Мост на модалностите | 🆕 визуално + аудио + видео | ✓ | ✓ |
| 📡 Безплатен каталог на Radar | 🆕 с включване по избор | ✓ | ✓ |
| ⚖️ Планиране, съобразено с квотите | 🆕 Quota-Share | ✓ | ✓ |
| 📊 Телеметрия на квотите | 🆕 на живо | ✓ | ✓ |
| 🧰 Режим без интерфейс | — | — | 🆕 `serve --headless` |
| 🛤️ LTS инфраструктура на релсата | — | — | 🆕 канали за издания |
| 🔎 API за откриване на модели | — | — | 🆕 `/v1/models/query` |
**→ [Пътна карта](ROADMAP.md) — по релсата към `v3.9.0 LTS`**
## 🧩 Налично
[](https://www.npmjs.com/package/omniroute)

[](https://hub.docker.com/r/diegosouzapw/omniroute)
[](LICENSE)


## 🆓 Инсталирайте, свържете доставчик и маршрутизирайте през една крайна точка
```bash
# След като свържете доставчик, копирайте своя OmniRoute ключ от Табло → Крайни точки:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` се нуждае от допустим маршрут. При нова инсталация може да няма допустими цели без ключ, а доставчик без ключ може да отхвърля клиенти от трети страни. Доставчиците, маркирани с `tos: avoid`, включително Kiro, са изключени от автоматичното маршрутизиране по подразбиране; свързването на акаунт не отменя тази настройка. Вижте [Ръководството за безплатните планове](docs/getting-started/FREE-TIERS-GUIDE.md), преди да изберете доставчик.📦 Скриптове за бърз старт с копиране и поставяне за **Python, 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 се предоставя и по двата канала: директния Kimi API (kimi-k3) и плана за програмиране Kimi Code (OAuth и API ключ). OmniRoute е и първият бразилски проект с отворен код в програмата за подкрепа на Kimi. Вземете Kimi API ключ с 15% допълнителни кредити →
Cheaper Inference cheaperinference.com
Благодарим на Cheaper Inference, приятел на отворения код на OmniRoute, за подкрепата на този проект! Cheaper Inference е шлюз с класиране по цена, който препродава достъп до 42 водещи модела — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok и MiniMax — чрез една крайна точка, съвместима с OpenAI, като насочва всяка заявка към най-евтиния отговарящ на условията доставчик, без никога да начислява цена над обявената от създателя на модела.
Първокласна поддръжка в OmniRoute: Chat Completions, нативната крайна точка /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: Chat Completions, форматът за комуникация, съвместим с 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/subscription
🎟️ Само квотата от абонамента, за който вече плащате — спира при неуспех и никога не превключва към платена резервна опция (ръководство)
auto/thrifty
🪜 Първо квотата на плана, след това стъпка по стъпка към най-евтините платени опции — връща се към плана след нулиране на квотата (ръководство)
auto/offline
🔋 Първо най-големият резерв от квота / лимит на заявките
auto/smart
🔭 Приоритет на качеството + 10% проучване за откриване на по-добри модели
auto/lkgp
📌 Изрично придържане към последния известен надежден доставчик
auto/chaos
🧪 Паралелно разпращане към панел от модели (по един на доставчик, стандартно 5), връща един отговор; по едно извикване нагоре по веригата за всеки модел в панела, а не инжектиране на откази
##
### 🔀 Или създайте своя собствена — 20 стратегии за маршрутизиране
Всички **20** стратегии — комбинирайте ги свободно за всяка стъпка от комбинацията:
#
Стратегия
Какво прави
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
quota-weighted
Пропуска акаунтите с изчерпана квота, след което избира пропорционално на оставащата квота ÷ текущото натоварване — съществуващите разговори остават фиксирани ⚖️
12
reset-window
Предпочита целта, чийто прозорец за квота ще се нулира най-скоро
13
reset-aware
Класира според времето до нулиране на квотата — първо кратките прозорци 📊
14
context-relay
Предава контекста между целите при дълги разговори 🧠
15
context-optimized
Избира най-подходящата цел за текущия размер на контекста
16
cache-optimized
Фиксира всеки многократно използваем префикс на подкана към един и същ акаунт — максимизира попаденията в кеша за подкани 🎯
17
lkgp
Последен известен надежден път — фиксира към последния успешен доставчик, след което използва резервните правила
18
auto
Оценяване в реално време по 16 фактора за всяка връзка 🤖
19
fusion
Разпраща към панел от модели + модел-съдия синтезира един отговор 🧬
20
pipeline
Свързва стъпки във верига — изходът на всяка цел се подава към следващата 🔗
Механизмът Auto-Combo оценява всеки кандидат по **16 фактора** (работоспособност, квота, цена, латентност, пригодност за задачата, качество, наличност на сесията…) — вижте [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Вградена устойчивост (3 независими слоя)
📖 [Механизъм Auto-Combo](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).
Бележки за разработчици: Проектът може да генерира локален файл .env по време на npm install/postinstall за удобство на разработчиците. Този файл умишлено се игнорира чрез .gitignore (вижте .gitignore) и никога не трябва да бъде добавян към хранилището — ако бъде добавен случайно, сменете всички разкрити тайни и премахнете файла от историята. Вижте docs/DEVELOPER-ENVIRONMENT.md за насоки относно управлението на локални файлове на средата и тайни.
## 📡 OmniRoute Radar
Основното предимство на безплатното ниво остава **~1,62 млрд. токена/месец** от документирания
по-горе каталог с премахнато дублиране между общите квоти. Временните кредити при регистрация при доставчици могат отделно да увеличат обема за първия
месец до **~2,22 млрд.** Radar е незадължителен, подписан допълнителен слой към каталога за хора, които искат по-актуална
информация за наличността на безплатни модели между изданията на OmniRoute; каталогът на общността и всички съществуващи безплатни
функции остават безплатни.
Поддръжниците могат да получат каталога на живо и допълнителни възможности от доставчици. Неговият отделен,
променлив таван е **приблизително най-много 3 млрд. токена/месец** в зависимост от наличността при доставчиците.
Този таван не е гарантиран: доставчиците могат по всяко време да променят квотите, критериите за допустимост, моделите или регионите.
Radar се използва само по желание и поддържа единствено GET. Клиентът на OmniRoute не качва подкани, трафик, конфигурация на доставчици,
телеметрия за използването или локалното състояние за отхвърляне на съобщения. Научете повече за критериите за допустимост и
текущия каталог на **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Какво ново
> Последни акценти от **v3.8.20 → v3.8.54**. Пълната история е в [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Маршрутизиране с `quota-weighted`** — 20-ата комбинирана стратегия пропуска изчерпаните акаунти, след което избира измежду останалите пропорционално на оставащата квота ÷ натоварването от текущите заявки, като запазва съществуващите разговори към същия акаунт. → [Автоматични комбинации](docs/routing/AUTO-COMBO.md)
- **🧰 Режим без интерфейс** — `omniroute serve --headless` (или `OMNIROUTE_HEADLESS=1`) стартира само прокси механизма `/v1/*`, като таблото и подсистемите, предназначени само за таблото, остават изключени. → [Режим без интерфейс](docs/guides/HEADLESS.md)
- **🔎 Откриване на модели** — `/v1/models` филтрира по възможности, контекст, вид и текст, а `POST /v1/models/query` връща кратък детерминиран списък с еднаква видимост за всеки ключ. → [Справочник на API](docs/reference/API_REFERENCE.md)
- **🔑 Контрол на маршрутизирането за всеки ключ** — прикрепете API ключ към един модел или комбинация с `forcedModel` и атомарно добавяйте или премахвайте моделите и комбинациите на даден ключ (`/api/keys/{id}/access`). → [Справочник на API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ По-прецизни контроли за лични данни (PII)** — избор по тип, до 20 валидирани персонализирани шаблона за маскиране и броячи за откриване по тип; самото маскиране остава незадължително. → [Защитни механизми](docs/security/GUARDRAILS.md)
- **🌍 67 езика** — табло, огледала на документацията и CLI, като `npm run i18n:add-locale` добавя даден език навсякъде с една команда. → [Ръководство за i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — входящо A2A делегиране към вашия парк от агенти, уменията на Conductor в картата на агента и панел в таблото с гласов чат чрез 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 и агенти с една команда** — 15 регистрирани команди `setup-*`; `omniroute run` стартира 7 CLI инструмента (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` поддържа 11 цели с интерактивен избор на доставчик и модел и предпочитания за всеки контекст. → [CLI интеграции](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Отдалечен режим** — управлявайте отдалечен OmniRoute с токени с ограничен обхват (`connect` / `contexts` / `tokens`) + OAuth помощна програма `antigravity` за инсталации във VPS. → [Отдалечен режим](docs/guides/REMOTE-MODE.md)
- **🧭 По-интелигентно автоматично маршрутизиране** — комбинации `auto/:`, **Fusion** (панел от модели + оценяващ модел), маршрутизиране с отчитане на задачата, замени за модел / режим / бюджет в USD за всяка заявка. → [Автоматични комбинации](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-*` на всяка крайна точка, заглавка за спестявания при попадение в кеша и квоти за разходи в USD за всеки ключ. → [Справочник на API](docs/reference/API_REFERENCE.md)
- **🧠 Памет под ваш контрол** — изключена по подразбиране, с незадължително int8 векторно квантуване + затихване по тип и `x-omniroute-no-memory` за всяка заявка. → [Памет](docs/frameworks/MEMORY.md)
- **🛡️ Сигурност** — защита от prompt injection при всеки LLM маршрут (набор за red team), незадължителен защитен механизъм за маскиране на идентификационни данни (заличава изтекли 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` за reverse proxy, автоматично разпознаване на езика на браузъра, проследяване на устройствата за всеки ключ, доверие в 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… и обновен **каталог с 388 доставчици**. → [Доставчици](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Прозрачност на маршрутизирането** — всеки отговор съдържа заглавка `X-OmniRoute-Decision`, която посочва стратегията/доставчика/латентността, обслужили заявката; новата стратегия за комбинации `cache-optimized` + факторът `cacheAffinity` на Auto-Combo насочва повтарящите се заявки обратно към връзката, която притежава кеширания префикс; а достъпната само за четене крайна точка `/v1/auto-combo/{channel}/candidates` показва актуалния пул от кандидати на канал `auto/*`. → [Автоматични комбинации](docs/routing/AUTO-COMBO.md).
- **⚡ Локална производителност и инфраструктура** — локален Redis с едно щракване, инструменти за внедряване на relay към Cloudflare Workers / Deno Deploy, Bifrost и Mux като управлявани вградени услуги. → [Вградени услуги](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Също включено** — framework за плъгини и marketplace, framework-и за умения Omni/Agent/GitHub, интеграция с хранилища на Obsidian (22 MCP инструмента), съвместими с OpenAI Batch и Files API, семантичен кеш за отговори, геймификация с класации, откриване на ACP агенти (15 вградени агента), планиран износ на логове към BigQuery, паралелно разпределяне към множество модели чрез `auto/chaos`, мост към Telegram бот, вграден мениджър на версии и класации на безплатни доставчици по LMArena-ELO. → [Документация](docs/README.md)
## 🤖 Съвместими CLI & Кодиращи агенти
> Една конфигурация — `http://localhost:20128/v1` — и **всеки** AI IDE или CLI работи с безплатни и нискобюджетни модели.
+ работи и с · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · всеки инструмент, съвместим с OpenAI
📖 Настройка по инструменти за всички 39 инструмента (28 CLI Code + 11 CLI Agents) → [`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 получават изолиран временен home:
```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 5dive
```
Всяка команда зачита активния отдалечен контекст (`omniroute connect `), `--dry-run`
показва точната среда/аргументи без изпълнение, а `--api-key-env NAME` пази тайните извън
историята на вашия shell. → [CLI Интеграции](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 388 доставчици на AI — 153 маркирани в каталога като безплатни
> **388 регистрирани доставчици** в каноничните колекции за чат, медии, търсене, локални услуги, облачни агенти и системи, включително **153 с метаданни за откриване `hasFree: true`**. Регистърът на чат моделите обхваща **239 доставчици / 3 059 различни двойки доставчик-модел / 1 475 необработени идентификатора на модели**; отделният каталог за безплатен бюджет съдържа **471 реда за отделни модели**, **34 повтарящи се пула** и **52 повтарящи се/без ключ безплатни доставчици завинаги**. Това са различни знаменатели по замисъл; дефинициите и изчисленията с дедупликация на пуловете са в [Справочник за доставчиците](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
…и още 350+ — всяка икона се зарежда в реално време от каталога на доставчиците на таблото. 📖 [Справочник за доставчиците](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Безплатно завинаги — $0, без карта
OpenCode Zen DeepSeek V4, Nemotron 3 Без ограничение на токените
Kilo Code Автоматичен маршрутизатор, Tencent Hy3 Завинаги безплатно
### 🧩 Ново: OmniRoute в родния Copilot чат на VS кода
> Без нова странична лента, без нов чат UI — всеки модел, OmniRoute обслужва, се показва направо в** инструмент за избор на модел за чат Copilot който вече използвате** . От VS код 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 Код Copilot Ръководство за чат](docs/guides/VSCODE-COPILOT.md) — настройка, какво показва инструментът за избор, табло за управление в раздел, отстраняване на неизправности
### 🎩 Ново: OmniRouteTray — вашият шлюз, живеещ в лентата с менюта
> `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 session/weekly лимити с обратно броене за нулиране, разбивка на разходите за 30 дни
🔄 Автоматични актуализации на място
Поетапно инсталиране, атомарна смяна, връщане при повреда — винаги на най-новата версия
🚀 Стартиране при влизане
Незадължително стартиране при влизане; само тава, без икона на докинг станция
🩺 Доктор & регистрира
Диагностика с едно щракване и достъп до регистър на сървъра
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Предпочитате изтегляне? Вземете най-новия .dmg от
Издава . Източник, проблеми и изграждане
документи на живо в zoispag/omniroute-tray.
💛 Проект на общността от @zoispag — не е официално издание OmniRoute.
## 🔒 Поверително и с приоритет на локалната обработка
> Освен сървъра, OmniRoute е **пълноценен команден център за командния ред** с **над 80 команди**, както и с отворени протоколи за агенти, така че AI агент да може да го управлява **самостоятелно**.
### ⌨️ Истински 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 # ← изпълнява се спрямо ОТДАЛЕЧЕНИЯ сървър
omniroute configure codex # ← избира отдалечен модел и записва локален профил за Codex
omniroute tokens create --name ci --scope read # създава токени с по-тесен обхват за други машини
omniroute contexts use default # ← превключва обратно към локалния сървър
```
Токените са с обхват `read` / `write` / `admin`; маршрутите, стартиращи процеси, остават достъпни само през loopback.
📖 [Отдалечен режим](docs/guides/REMOTE-MODE.md)
### 🤝 Свържете агент — и той ще управлява самия OmniRoute
Предоставете достъп до OmniRoute чрез **MCP**, **A2A**, **REST API**, **webhooks** или **отдалечен 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
🔔 Webhooks
/api/webhooks
Изпращане на събития за заявки / квоти към Slack, Discord, Telegram или произволен URL
🛰️ Отдалечен CLI
omniroute connect
Управление на отдалечена инстанция с токени за достъп с определен обхват
```bash
# Предоставете на Claude Code пълния набор от инструменти на OmniRoute чрез MCP:
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)
## 🗜️ Автоматично спестяване на 15–95% от токените
### 📖 Как работи — конвейер, архитектура и математика на спестяванията
Комбинацията по подразбиране изпълнява `RTK → Caveman`. Когато и двата енджина действат върху един и същ payload на инструмент/контекст, спестяванията се натрупват:
```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 **прозрачно** — без промени по клиента. Сега това е **стек от 12 композируеми енджина**, които се изпълняват по ред и могат да се комбинират за всеки маршрут — надграждайки идеи от [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).
### 🧱 Стекът от 12 енджина
Енджините се изпълняват в реда на конвейера; всеки може да се включва или изключва независимо и да се конфигурира за всяка комбинация:
#
Енджин
Какво прави
1
Session-Dedup
Премахва съдържание, повтарящо се между ходовете (адресирано чрез съдържанието, между ходове)
2
CCR
Архивира големи блокове зад маркери за извличане, които се получават при поискване
3
Lite
Премахване на празни интервали и съкращаване на URL адреси на изображения (базова линия с ниска латентност)
4
RTK
Интелигентно филтриране, премахване на дубликати и съкращаване на резултати от инструменти (съобразено с командите)
5
Responses Tool Output
Компресиране на JSON с приоритет на запазването + ограничена диагностична компресия за shell/patch/search/build резултати (Responses API)
6
Headroom
Компресиране без загуби на таблични JSON масиви (~30%) чрез вградения codec GCF
7
Relevance
Екстрактивно оценяване на изречения спрямо последната потребителска заявка
8
Caveman
Компресиране на проза чрез правила (~65–75% върху изхода)
9
Aggressive
Обобщаване + постепенно състаряване на старите ходове
10
LLMLingua-2
ML семантично прореждане чрез MobileBERT ONNX — безопасно за код, асинхронно
11
Ultra
Евристично прореждане на токени с опционално ниво с малък модел (SLM)
12
OmniGlyph
Експериментално кодиране на контекста като изображение за измерен Claude Fable 5 по директния проводник на Anthropic; GPT 5.6 трансформърите остават в режим fail-closed до получаване на потвърждения от доставчика. Четири профила за компресиране (агресивен по подразбиране, балансиран, безопасен за кодиране, passthrough) (най-агресивен; включва се изрично)
Блоковете с код, URL адресите и структурираните данни са **винаги запазени** байт по байт. **Предварително зададените режими с едно щракване** комбинират енджините:
Режим
Спестяване
Най-подходящ за
🪶 Lite
~15%
Безопасна настройка по подразбиране, винаги включена
🪨 Standard (Caveman)
~30%
Ежедневно програмиране
⚡ Aggressive
~50%
Дълги сесии с много инструменти
🔥 Ultra
~75%
Максимално спестяване
🧰 RTK
60–90%
Shell/test/build/git изход
🔗 Stacked (RTK → Caveman)
78–95%
Смесени подсказки + журнали от инструменти
**Пример от практиката — режим Standard:**
> **Преди (69 токена):** _"Причината вашият React компонент да се изобразява повторно вероятно е, че създавате нова референция към обект при всеки цикъл на изобразяване. Когато подадете вграден обект като prop, плиткото сравнение на React го възприема като различен обект всеки път, което задейства повторно изобразяване. Препоръчвам да използвате useMemo, за да запаметите обекта."_
>
> **След (19 токена):** _"Нова референция към обект при всяко изобразяване. Вграден обект като prop = нова референция = повторно изобразяване. Обвийте го в useMemo."_
>
> **Същият отговор. 72% по-малко токени. Нулева загуба на точност.** ✅
**Пример на PT-BR — режим [Troglodita](https://github.com/leninejunior/troglodita):**
> **Преди (42 токена):** _„Проблемът е, че компонентът се рендерира повторно, защото при всеки цикъл на рендиране се създава нова референция към обект. Бих препоръчал да използвате useMemo.“_
>
> **След (12 токена):** _„Повторно рендиране: нова референция при всеки цикъл (вграденият обект се създава отново). Използвайте `useMemo`.“_
>
> **Същият отговор. ~70% по-малко токени. Техническата точност е запазена.** ✅
### 🎚️ Отвъд енджините — стилове на изхода, адаптивният регулатор и контролът за всяка заявка
12-те енджина по-горе намаляват това, което **влиза**. Още три слоя определят **как**, **кога** и какво **излиза**:
- **🪄 Стилове на изхода** _(насочване по оста на изхода)_ — инжектират детерминистични, безопасни за кеширане инструкции за оформяне на отговора; могат да се комбинират, като всеки е с интензитет `lite` / `full` / `ultra`. Добавянето на стил е един ред в регистъра:
- **Сбит текст** — премахва пълнежа / членовете / уклончивите формулировки; запазва техническото съдържание напълно точно.
- **По-малко код** — YAGNI подход на „мързелив старши разработчик“: най-малката работеща промяна, без непоискана инфраструктура.
- **Конска опашка (мързелив старши разработчик)** — изкачва стълбицата на YAGNI, отстранява първопричината, най-малкият работещ diff.
- **Имам ADHD (действие на първо място)** — следващото действие е първо, стъпките са номерирани, една конкретна следваща стъпка, без увод.
- **Сбит CJK (文言)** — ултрасбит стил на класическия китайски (ограничен според локала до `zh`).
- **🎯 Адаптивен бюджет за контекста** _(регулаторът)_ — вместо един праг на токените с включено/изключено състояние, най-евтините и най-малко губещи енджини се активират само дотолкова, доколкото е необходимо, за да се вместят в контекстния прозорец на модела. Политика: `reserve-output` (по подразбиране, съобразена с модела) · `percentage` · `absolute`. Режим: `floor` (гарантира вместяването) · `replace-autotrigger` (изричният ви избор има предимство) · `off` (старият праг).
- **🎛️ Къде се определя компресирането** _(приоритет, от висок към нисък)_ — заглавка за всяка заявка `x-omniroute-compression` › заместване на комбинацията за маршрутизиране › активен именуван профил › adaptive / auto-trigger › настройка по подразбиране на панела › off. Приложеният план се връща в заглавката на отговора `X-OmniRoute-Compression: ; source=`.
Автоматично задействайте компресирането чрез праг на токените, включете адаптивния регулатор, фиксирайте именуван профил, задайте еднократна настройка за заявка или задайте pipeline за всяка комбинация за маршрутизиране — което най-добре отговаря на работното натоварване. Опционалният офлайн **тестов набор за оценяване** (`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` или предупреждения за peer зависимости? [Те са безвредни](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Използвате npm 11 или по-нова версия?** npm може да блокира скриптовете за жизнения цикъл на пакетите, освен ако не бъдат разрешени. `postinstall` на OmniRoute (`node scripts/build/postinstall.mjs`) е необходим за подготовката на собствените runtime файлове. Разрешете пакетите, посочени в предупреждението на npm, при глобално инсталиране. За набора от пакети, отчетен от OmniRoute 3.8.54:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> За да използвате този списък с разрешени пакети при бъдещи глобални инсталации, конфигурирайте го веднъж и след това инсталирайте нормално:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Списъкът със зависимости може да се променя между изданията; ако npm отчете различен списък, използвайте имената на пакетите от това предупреждение. Разрешаването на даден пакет позволява изпълнението на неговите скриптове за инсталиране.
> **Използвате Gemini Web или друг доставчик с уеб бисквитки?** Пакетът npm включва
> Playwright, но не и неговия двоичен файл Chromium. Вижте бележката
> [Настройване на Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> преди първата заявка към уеб доставчик.
Табло на `http://localhost:20128` · API на `http://localhost:20128/v1`.
**2) Свържете допустим доставчик със собствения си акаунт**
Табло → **Доставчици** → изберете доставчик, чиито актуални условия и квота отговарят на вашия случай на употреба → добавете неговия API ключ или завършете процедурата за акаунта. Безплатните планове може да изискват регистрация, одобрение или платежен метод. Прегледайте [Ръководството за безплатните планове](docs/getting-started/FREE-TIERS-GUIDE.md); наличността без ключ не е гарантирана, а доставчиците, маркирани с `tos: avoid`, са изключени от `auto` по подразбиране.
**3) Насочете инструмента си за програмиране**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Проверете дали работи**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Трябва да видите изброените свързани модели. 🎉 Това е всичко — започнете да програмирате, а OmniRoute автоматично ще избира маршрути и ще използва резервни варианти вместо вас.
Ако клиентът ви не може да изпраща персонализирани заглавки, OmniRoute предоставя и токенизирани псевдоними за съвместимост:
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: 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`. Фиксирайте `:X.Y.Z` за GitOps. Вижте [Канали за издания на Docker](docs/guides/DOCKER_GUIDE.md#release-channels).Образът фиксира **`OMNIROUTE_MEMORY_MB=1024`**. Това е достатъчно за таблото и лек чат. **Агентите за програмиране** (`POST /v1/responses` от Claude Code, Codex, Grok, …) се нуждаят от много по-голяма V8 heap памет, в противен случай процесът завършва с `FATAL ERROR` при около 12 GiB с два припокриващи се дълги контекста. Оразмерете контейнера над размера на heap паметта (собствените буфери са извън 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 — оперативна памет за изпълнение](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Docker канал за предварителни издания:** `diegosouzapw/omniroute:next` и
> `diegosouzapw/omniroute:next-web` следват текущия стандартен клон `release/v*`.
> Тези променливи тагове са предназначени само за тестване на непубликувани корекции и
> **не се поддържат за продукционна среда**. Вижте
> [Канали за издания на Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
Стандартното `bun install` и глобалното инсталиране (`bun install -g omniroute`) се поддържат чрез откриване на средата за изпълнение Bun:
- **Вграден `bun:sqlite`**: OmniRoute използва вградения в Bun драйвер `bun:sqlite`, когато се изпълнява под Bun, като преминава към `better-sqlite3` при Node.js или към `sql.js`.
- **Автоматичен избор на Webpack като пакетиращ инструмент при разработка**: Режимът за разработка (`bun run dev`) автоматично открива Bun и деактивира Turbopack в полза на Webpack, за да предотврати несъвместимости със собствените V8 обвързвания. Продукционните компилации (`bun run build`) следват `OMNIROUTE_USE_TURBOPACK` точно както при Node: Turbopack по подразбиране, `OMNIROUTE_USE_TURBOPACK=0` за компилиране с Webpack (`Dockerfile.bun` го предоставя като `--build-arg`).
- **Специализиран Dockerfile за Bun**: Многоетапен `Dockerfile.bun` за собствени продукционни внедрявания с 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, Cloudflare тунели.
**🦭 Podman**
```bash
# 1. Подгответе директорията с данни, монтирана чрез bind mount
mkdir -p data
# 2. Само за Linux + локален rootless Podman (никога за отдалечен клиент на Podman Machine):
podman unshare chown 1000:1000 ./data
# 3. Задайте указанието за средата за изпълнение, изградете локалния 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.
**⚡ По-бързо / по-леко инсталиране (пропускане на собствената компилация)**
Собственият SQLite енджин (`better-sqlite3`) е **незадължима** зависимост, така че глобалното
инсталиране никога не блокира заради компилиране от изходен код: използва предварително компилиран двоичен файл, когато има съвпадащ
за вашата платформа/Node, а в противен случай прозрачно преминава към енджин, реализиран изцяло на JS
(`node:sqlite` при Node 22+, иначе включения `sql.js` WASM) — не са необходими инструменти за компилиране.
За да пропуснете напълно собственото предварително инициализиране след инсталиране (CI, среди без графичен интерфейс или бавни машини):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 също го пропуска
```
За най-бързо инсталиране предпочитайте **pnpm** (хранилище, адресирано по съдържание + твърди връзки — вижте по-горе).
За среда за изпълнение без табло и без графичен интерфейс използвайте Docker профила `base` (по-горе) или
[ръководството за Termux](docs/guides/TERMUX_GUIDE.md). CLI и уеб таблото се обслужват от
един и същ процес на един порт, така че към момента няма отделен пакет само за CLI.
Прекъсвач на веригата, експоненциално обратно изчакване, защита от ефекта на тълпата, автоматично комбинирано самовъзстановяване
Регистриране
pino — структурирани JSON журнали с контекст на заявките
Тестване
Тестов изпълнител на Node.js + Vitest — над 60 000 декларации на статични тестове в над 8 400 проследявани тестови файла (модулни, интеграционни, E2E, за сигурност и за екосистемата)
Стратегия за тестово покритие на над 60 000 декларации за статични тестове в над 8 400 проследявани тестови файла
# ⭐ Основни участници
> OmniRoute се развива благодарение на отдадената общност с отворен код. Тези хора са допринесли изключително много и пряко влияят върху качеството, стабилността и обхвата на проекта. **Благодарим ви.**
### Външни участници според обединените pull заявки
Преброяването е извършено на 2026-11-03 03:01:19 UTC с актуалния връх на release/v3.8.5305bc048d6c. Страницираното преброяване чрез GitHub GraphQL съдържа 9,947 обединени PR: 4,130 от собственика на хранилището, 240 от Dependabot, 6 от други ботове/приложения и 5,571 външни PR от 883 различни участници. „Променени редове“ означава добавянията + изтриванията в GitHub и включва генерирани файлове, lock файлове, каталози, преводи и документация; това е обем на промените, а не авторски LOC. 53 PR отчитат GitHub разлики над 500,000 реда (например #13399, което представлява добавяне на един доставчик, изброява 2,347 променени файла), което увеличава няколко от посочените по-горе общи стойности. Равните резултати са класирани заедно.
### Комити, приписани от GitHub
Проверено отново на 2026-11-03 02:09:16 UTC: комита, приписани от GitHub, отчетени от Contributors API на хранилището за клона по подразбиране release/v3.8.53. API върна 903 самоличности (429 потребители, 2 бота, 472 анонимни); тази таблица изключва поддържащия проекта, ботовете и анонимните самоличности и запазва равенствата в класирането. Тя се различава както от класирането по обединени PR по-горе, така и от преброяването на Git метаданните по-долу.
> 🙏 Функционалностите, корекциите на грешки и подобренията на инфраструктурата, предоставени от тези сътрудници, са **основна част** от това, което прави OmniRoute надежден и богат на функции. Всяка заявка за изтегляне, всеки тестов случай и всеки файл с i18n превод са важни. Отвореният код се създава от хора като тях.
---
## 💖 Спонсори
Сърдечни благодарности на хората, които финансират OmniRoute от собствения си джоб — всеки принос помага на проекта да остане безплатен, независим и да продължава да се развива.
… и други, които предпочитат да останат анонимни 💛Публичните спонсори в GitHub са проверени повторно на 2026-10-18 чрез GitHub Sponsors GraphQL API: 11 публични спонсорства (6 активни, 5 предишни) от общо 14. Състоянието isActive на GitHub определя обозначенията за активност по-горе; на предишните публични еднократни дарители продължава да бъде изказвана благодарност, а частните спонсори остават анонимни. Даренията чрез Ko-fi, Buy Me a Coffee, Liberapay, PIX и криптовалути не са изброени, тъй като за тях няма публичен запис за спонсорство.💖 Станете спонсор → — всеки долар помага на OmniRoute да остане безплатен и независим.
## 👥 Над 1 000 приносящи вноски
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Одитирано на 2026-11-02 при live release/v3.8.53 tip 1c7135e0fb (7 972 комита): 1 074 нормализирани човешки Git идентичности — 759 се появяват като автори на комити (включително поддържащия проекта), а 315 са само в изрични трейлъри Co-authored-by. Преброяването прилага .mailmap, сравнява имейл адресите без разлика между главни и малки букви, обединява числови и обикновени GitHub noreply адреси само когато кодират един и същ handle, изключва 29 идентичности на ботове/агенти/услуги/заместители и не обединява обикновени имейл адреси само защото показваните им имена съвпадат. Одитът от 2026-08-24 публикува 639; повторното изпълнение на този метод върху базата на онзи одит ac02c5b42f дава 619, така че увеличението идва от нови приноси, а не от по-свободен метод.
### Как да допринесете
1. Направете fork на хранилището
2. Създайте branch от **активния** връх `release/vX.Y.Z` (не от `main`) — вижте [Модел за branch-ове и издания](docs/ops/BRANCHING_MODEL.md)
3. Създайте своя feature branch (`git checkout -b feat/amazing-feature`)
4. Направете commit на промените си (`git commit -m 'feat: add amazing feature'`)
5. Изпратете branch-а (`git push origin feat/amazing-feature`)
6. Отворете Pull Request с **base = този `release/vX.Y.Z` branch**
Вижте [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 на GitHub на 3 ноември 2026 г. — дайте звезда на тези проекти. Броят е точна моментна снимка към посочената дата и естествено ще се променя.
### 🧬 Произход и gateway
AI gateway, чийто публичен набор от данни за ценообразуването захранва синхронизирането за проследяване на разходите ни и чийто модел за нормализация на доставчиците вдъхнови нашето маршрутизиране.
MIT изходен код, адаптиран във вградения bridge от ChatGPT Web към Codex Responses, включително адаптери за браузърна сесия, рамкиране на отговорите, използване и уеб търсене.
Шаблони, пренесени в механизмите за възстановяване на потока, псевдонимите без мислене, резервното уеб търсене, ограниченията с плъзгащ се прозорец, редактирането на логове и подсилените процеси за стартиране.
Шаблоните на Cursor Composer за избор на инструменти, ограничения на изхода и потвърждаване на инструменти са адаптирани в native executor-а на Cursor.
Съвместимите с Claude Code стандартни настройки за трансформация и поведението на billing header-а са обобщени в конфигурационно управлявания bridge на OmniRoute.
Неговите съпоставяния на Grok модели, генераторът на Statsig за fake-TypeError, стандартните стойности за заявки и устройства и процесорът за NDJSON отговори са съществено адаптирани в Grok Web executor-а на OmniRoute.
Основният транзитивен източник на код зад grok2api-merged; неговите реализации на моделите, заглавките, payload-ите, Statsig и процесора са запазени в родословието на Grok Web.
Базовият MIT изходен код за payload-ите и стандартните стойности за устройства на Grok, генератора на Statsig и процесора result.response, пренесен чрез TQZHR и grok2api-merged.
Транзитивен източник, посочен от grok2api-merged за неговия слой с proxy pool; OmniRoute запазва това известие за произход, но не претендира за порт на proxy pool в ограничения си Grok Web executor.
Неговият Grok proxy с удостоверяване чрез бисквитки и шаблонът за поточно предаване на result.response.token вдъхновиха транспорта на OmniRoute за Grok Web.
При разработването беше проучена оригиналната реализация на Grok Web и дизайнът ѝ за HTTP/browser upstream; директният ѝ HTTP път произлиза от GrokProxy, затова не се претендира за независим порт на код.
### 🗜️ Компресиране на контекста и токените — engines
Вирусният проект „защо да използваш много токени, когато малко токени вършат работа“ — неговата философия на говорене като пещерен човек задвижва стандартния ни режим на компресия и над 30 правила за премахване/кондензиране на излишен текст.
Високопроизводителна компресия на изхода от команди — вдъхнови нашия RTK engine, DSL за филтриране на JSON, възстановяването на необработения изход и комбинирания pipeline RTK → Caveman.
Изследвания върху компресията на подсказки (LLMLingua / LLMLingua-2) — вдъхновиха нашия асинхронен, безопасен за код и отказоустойчив llmlingua engine.
Компресия на токени за PT-BR — задвижва нашия езиков пакет pt-BR: намаляване на плеоназмите и премахване на пълнежни думи, настроени за бразилско-португалската граматика.
Вирусното умение на „мързеливия старши разработчик“ за YAGNI кодиране — вдъхнови нашия Output Style less-code: насочване към най-малката работеща промяна, което намалява _генерирания_ код (съответстващият на изхода подход към сбитата проза на Caveman).
Компресия на изхода според съдържанието и типа на файла, с отказ при грешка — потвърди нашето разпределяне според типа и пропускането при минимална печалба.
Колонен JSON на Rust + извличане чрез адресиране на съдържанието + дедупликация между съобщенията — потвърдиха дизайна ни на engine-ите headroom/ccr/session-dedup и инварианта за стабилност на кеша, че „компресираната форма не зависи от позицията“.
MITM прихващането/анализът на трафика между асистенти за програмиране и LLM насочи ранните изисквания към Traffic Inspector. Четири преди това производни модула — SSE обединяване, нормализиране на разговори, маскиране на тайни и саниране на хедъри — бяха заменени от независими реализации, разработени в чиста среда въз основа на публични протоколни стандарти. Двете повърхности за пропускане на хостове (passthrough.ts и _internal/bypass.cjs) остават вътрешни за OmniRoute реализации, класифицирани независимо; те не бяха пренаписани като част от тази замяна.
Прозрачно маршрутизиране на прокси по процеси — вдъхнови безопасното при срив прекратяване на MITM, времевите ограничения за неактивни сокети, атрибутирането на процеси чрез /proc и прихващането чрез TPROXY.
### 📚 Данни за модели, наблюдаемост и потребителски интерфейс
Подбран списък с библиотеки, сигурни по подразбиране, който насочва избора ни по отношение на сигурността (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Вдъхнови дедупликацията на заявки, аварийния резервен вариант с нулева цена, стратегиите за включаем Auto-Combo и многоезиковата класификация на намеренията.
Неговото пренасочване на модели с отчитане на акаунта, валидирането на пътищата към изпълними файлове и поведението на етикетите на плановете повлияха на средата за изпълнение Antigravity на OmniRoute.
Идентифицира повърхността на квотата за Grok Build; след това OmniRoute независимо провери и коригира актуалния wire формат.
## 📄 Лиценз
Лиценз MIT — вижте [LICENSE](LICENSE) за подробности.
---
**[⬆ Обратно към началото](#-omniroute)** · Създадено ❤️ за общността на AI с отворен код.
Създадено от Diego Souza · OmniRoute v3.8.54 · Node ≥22.22.2 · Лиценз MIT · omniroute.online