## 💰 ~1,62 млрд. токена / месец в безплатните планове на трети страни
> **Използвайте собствените си акаунти при доставчиците.** Това е прогнозна обща стойност от отделни безплатни планове на трети страни, за които отговаряте на условията, а не пакет от токени, предоставен от OmniRoute. Регистрирайте се, получете идентификационни данни, където е необходимо, и свържете доставчиците, които можете да използвате; всеки доставчик определя собствените си ограничения, наличност и условия.
>
> Ръчното комбиниране на безплатни планове е мъчително — десетки SDK пакети, десетки ограничения на заявките и никаква представа с какъв реален обем разполагате. OmniRoute каталогизира **467 записа за безплатни планове в 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 [🌍 Глобално](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)**
## 📈 Шлюзът продължава да расте
| | v3.8.50 | **v3.8.51** | `v3.8.53+` |
| --------------------------------------- | :-----------------------: | :---------: | :-------------------: |
| 🌐 Доставчици | 352 | **358** | 375 |
| 🧠 Уникални ID на чат модели | 1320 | **1374** | 1475 |
| 🖼️ Мост за модалности | 🆕 зрение + аудио + видео | ✓ | ✓ |
| 📡 Безплатен каталог 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 ключ от Dashboard → Endpoints:
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.53**. Пълна история в [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Маршрутизиране `quota-weighted`** — 20-ата комбо стратегия пропуска изчерпаните акаунти, след което тегли сред останалите пропорционално на остатъчната квота ÷ текущото натоварване, запазвайки съществуващите разговори фиксирани. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Headless режим** — `omniroute serve --headless` (или `OMNIROUTE_HEADLESS=1`) стартира само прокси машината `/v1/*`, като таблото и подсистемите само за таблото са изключени. → [Headless Mode](docs/guides/HEADLESS.md)
- **🔎 Откриване на модели** — `/v1/models` филтрира по възможност, контекст, вид и текст, а `POST /v1/models/query` връща кратък детерминиран списък със същата видимост за всеки ключ. → [API Reference](docs/reference/API_REFERENCE.md)
- **🔑 Контрол на маршрутизирането за всеки ключ** — фиксирайте API ключ към един модел или комбо с `forcedModel` и добавяйте или премахвайте моделите и комботата на даден ключ атомарно (`/api/keys/{id}/access`). → [API Reference](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ По-фини контроли за PII** — избор по тип, до 20 валидирани потребителски шаблона за маскиране и броячи за откриване по тип; самото маскиране остава по избор. → [Guardrails](docs/security/GUARDRAILS.md)
- **🌍 67 езика** — табло, огледала на документацията и CLI, като `npm run i18n:add-locale` добавя език навсякъде с една команда. → [i18n Guide](docs/guides/I18N.md)
- **🎛️ OmniConductor** — входящо A2A делегиране към вашата флота от агенти, Conductor умения в Agent Card и панел в таблото с гласов чат с push-to-talk на Faro. → [A2A Server](docs/frameworks/A2A-SERVER.md)
- **🛂 Адаптивно приемане и защита от претоварване** — тежките чат заявки се нареждат на опашка вместо да връщат 503, с атомарни RPM подвижни наеми за всяка връзка. → [Resilience Guide](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Канонично подреждане на `/v1/models`** — един непрекъснат блок, групиран по доставчик, за всеки доставчик (комботата са фиксирани първи), стабилно във всеки източник на каталог. → [API Reference](docs/reference/API_REFERENCE.md)
- **🗜️ Затягане на компресията** — защита срещу раздуване, включена по подразбиране, Caveman пакети за DE / FR / JA + китайски (wényán), RTK филтри за Gradle & .NET. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Честна цена при фиксирана тарифа** — доставчиците с абонамент / план за кодене се отчитат като **$0** в анализа на разходите; бюджетът, квотата и маршрутизирането продължават да правят оценка. → [API Reference](docs/reference/API_REFERENCE.md)
- **⚖️ Маршрутизиране Quota-Share** — разделете квотата на споделен акаунт справедливо между ключовете в пула, с консервативно използване на работата, така че бездейните дялове се отпускат назаем. → [Resilience Guide](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 Integrations](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Отдалечен режим** — управлявайте отдалечен OmniRoute с ограничени токени (`connect` / `contexts` / `tokens`) + OAuth помощник `antigravity` за VPS инсталации. → [Remote Mode](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, редактор с влачене за пренареждане. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Прозрачно MITM декриптиране (TPROXY)** — прихващайте CLI, които пренебрегват прокси env променливите, със CA за всеки SNI + инсталатор за хранилището за доверие. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Телеметрия за разходите навсякъде** — заглавки `X-OmniRoute-*` за разходи/използване на всеки endpoint, заглавка за спестявания при cache-HIT, квоти за разходи в USD за всеки ключ. → [API Reference](docs/reference/API_REFERENCE.md)
- **🧠 Памет, която контролирате** — изключена по подразбиране, по избор int8 векторна квантизация + типизирано затихване, `x-omniroute-no-memory` за всяка заявка. → [Memory](docs/frameworks/MEMORY.md)
- **🛡️ Сигурност** — защита срещу prompt-injection на всеки LLM маршрут (red-team набор), предпазна мярка за маскиране на идентификационни данни по избор (скрива изтекли API ключове/тайни в двете посоки), безплатно уеб търсене през DuckDuckGo като последна мярка и незадължителен OIDC вход за таблото (входът с парола винаги остава наличен). → [Guardrails](docs/security/GUARDRAILS.md)
- **🖼️ Нови endpoint-и** — `/v1/ocr` (Mistral OCR) и `/v1/audio/translations` (в стил Whisper) допълват медийната повърхност. → [API Reference](docs/reference/API_REFERENCE.md)
- **🎨 Генериране на изображения / видео / аудио** — един API за медии: xAI Grok Imagine & Novita AI видео, ComfyUI, Magnific, Adobe Firefly, Segmind и доставчици на реч като ElevenLabs. → [API Reference](docs/reference/API_REFERENCE.md)
- **🌍 Внедряване и операции** — `basePath` за обратно прокси, автоматично откриване на езика на браузъра, проследяване на устройства за всеки ключ, MITM доверие без root, локализация zh-TW. → [Environment](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… и обновен **каталог с 375 доставчика**. → [Providers](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Прозрачност на маршрутизирането** — всеки отговор носи заглавка `X-OmniRoute-Decision`, указваща стратегията/доставчика/латентността, които са го обслужили, нова комбо стратегия `cache-optimized` + фактор `cacheAffinity` на Auto-Combo връщат повторните заявки обратно към връзката, държаща кеширания префикс, а endpoint-ът само за четене `/v1/auto-combo/{channel}/candidates` показва живия набор от кандидати на канал `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Локална производителност и инфраструктура** — локален Redis с едно кликване, деплойъри на Cloudflare Workers / Deno Deploy relay, Bifrost и Mux като supervised вградени услуги. → [Вградени услуги](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Още в комплекта** — плъгин рамка + пазар, рамки за умения Omni/Agent/GitHub, интеграция с Obsidian vault (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
📖 Настройка за всеки от 37-те инструмента (27 CLI Code + 10 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 5dive
```
Всяка команда използва активния отдалечен контекст (`omniroute connect `), `--dry-run`
показва предварително точните променливи на средата и аргументи без изпълнение, а `--api-key-env NAME` не допуска тайните
до хронологията на обвивката ви. → [CLI интеграции](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 375 AI доставчика — 153 маркирани в каталога като безплатни
> **375 регистрирани доставчика** в каноничните колекции chat, media, search, local, cloud-agent и system, включително **153 с метаданни за откриване `hasFree: true`**. Регистърът на chat моделите покрива **239 доставчика / 3,059 отделни двойки доставчик-модел / 1,475 сурови ID на модели**; отделният каталог за безплатен бюджет има **467 реда на модел**, **34 повтарящи се пула** и **51 повтарящи се/безключови безплатни завинаги доставчика**. Това са различни знаменатели по дизайн; дефинициите и изчисленията с дедупликация на пулове се намират в [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) и [Free Tiers](docs/reference/FREE_TIERS.md).
### 🏢 Всяка голяма лаборатория — през един endpoint
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…и още 350+ — всяка икона се зарежда на живо от каталога с доставчици на таблото. 📖 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Безплатно завинаги — $0, без карта
OpenCode Zen DeepSeek V4, Nemotron 3 Без ограничение на токени
Kilo Code Auto-router, Tencent Hy3 Безплатно завинаги
> Същото приложение, вашата машина, вашите правила. От глобална 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
Работи на телефона ви, денонощно, без root достъп
📲 PWA
„Добавяне към началния екран“
Цял екран, офлайн режим, инсталиране от браузъра
🧩 Добавка за OpenCode
@omniroute/opencode-provider
Вградена интеграция с OpenCode
🤖 VS Code Copilot Chat
инсталирайте разширението OmniCopilot
Всеки модел на OmniRoute във вградения инструмент за избор на Copilot Chat — стабилна версия и Insiders
🛠️ От изходния код
npm install && npm run dev
Експериментирайте с него, допринасяйте
📖 [Ръководство за Docker](docs/guides/DOCKER_GUIDE.md) · [Настолно приложение](electron/README.md) · [Икона в лентата с менюта](https://github.com/zoispag/omniroute-tray) · [Termux](docs/guides/TERMUX_GUIDE.md) · [PWA](docs/guides/PWA_GUIDE.md) · [OpenCode](docs/frameworks/OPENCODE.md)
### 🧩 Ново: 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) — настройване, какво показва инструментът за избор, табло в раздел, отстраняване на неизправности
### 🎩 Ново: 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 с обратно броене до нулирането, разбивка на разходите за 30 дни
🔄 Автоматично актуализиране на място
Поетапно инсталиране, атомарна замяна, връщане назад при неуспех — винаги с най-новата версия
🚀 Стартиране при влизане
Незадължително стартиране при влизане; само в системната област, без икона в Dock
🩺 Диагностика и журнали
Диагностика с едно щракване и достъп до журналите на сървъра
```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`. Когато и двата механизма обработват едни и същи данни от инструмент или контекст, спестяванията се натрупват:
```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 обработка без загуби като първи избор и ограничено диагностично компресиране на изходни данни от обвивки, корекции, търсене и компилации (Responses API)
6
Headroom
Таблично уплътняване без загуби на JSON масиви (~30%) чрез вграден GCF кодек
7
Relevance
Оценяване и извличане на изречения спрямо последната потребителска заявка
8
Caveman
Компресиране на проза чрез правила (~65–75% при изходните данни)
9
Aggressive
Обобщаване и постепенно съкращаване на старите реплики
10
LLMLingua-2
Семантично съкращаване чрез машинно обучение с MobileBERT ONNX — безопасно за код и асинхронно
11
Ultra
Евристично съкращаване на токени с незадължително ниво с малък модел (SLM)
12
OmniGlyph
Експериментално кодиране на контекста като изображение за измерения Claude Fable 5 по директната връзка с Anthropic; трансформаторите GPT 5.6 остават затворени при грешка до получаването на потвърждения от доставчика. Четири профила за компресиране (агресивен по подразбиране, балансиран, безопасен за код, без обработка) (най-агресивният; с изрично активиране)
Блоковете с код, URL адресите и структурираните данни **винаги се запазват** с точност до байт. **Предварителните настройки с едно щракване** комбинират механизмите:
Режим
Спестявания
Най-подходящ за
🪶 Lite
~15%
Безопасен режим по подразбиране, който е винаги включен
🪨 Стандартен (Caveman)
~30%
Ежедневно програмиране
⚡ Агресивен
~50%
Дълги сесии с интензивно използване на инструменти
🔥 Ultra
~75%
Максимални спестявания
🧰 RTK
60–90%
Изходни данни от обвивки, тестове, компилации и git
🔗 Последователен (RTK → Caveman)
78–95%
Смесени подкани и журнали от инструменти
**Реален пример — стандартен режим:**
> **Преди (69 токена):** _„Причината вашият React компонент да се рендира повторно вероятно е, че създавате нова препратка към обект при всеки цикъл на рендиране. Когато подадете вграден обект като свойство, повърхностното сравнение на React го разпознава като различен обект всеки път, което задейства повторно рендиране. Препоръчвам да използвате useMemo, за да мемоизирате обекта.“_
>
> **След (19 токена):** _„Нова препратка към обект при всяко рендиране. Вграден обект като свойство = нова препратка = повторно рендиране. Обвийте го в useMemo.“_
>
> **Същият отговор. 72% по-малко токени. Нулева загуба на точност.** ✅
**Пример на PT-BR — режим [Troglodita](https://github.com/leninejunior/troglodita):**
> **Преди (42 токена):** "Проблемът е, че компонентът се пре-рендира, защото при всеки цикъл на рендиране се създава нова референция към обект. Бих препоръчал да използвате useMemo."
>
> **След (12 токена):** "Пре-рендиране: нова реф. на всеки цикъл (inline обектът се пресъздава). Да се използва `useMemo`."
>
> **Същият отговор. ~70% по-малко токени. Техническата точност е запазена.** ✅
### 🎚️ Отвъд двигателите — стилове на изхода, адаптивният регулатор и контрол за всяка заявка
12-те двигателя по-горе свиват това, което **влиза**. Още три слоя оформят **как**, **кога** и какво **излиза**:
- **🪄 Стилове на изхода** _(насочване по оста на изхода)_ — вкарват детерминистични, безопасни за кеша инструкции, оформящи отговора; комбинируеми, всяка с интензитет `lite` / `full` / `ultra`. Добавянето на стил е един ред в регистъра:
- **Сбита проза** — без пълнеж / членове / предпазливост; техническата същност остава точна.
- **По-малко код** — YAGNI на "мързелив старши разработчик": най-малката работеща промяна, без непоискано скеле.
- **Ponytail (мързелив старши разработчик)** — изкачете стълбата на YAGNI, отстранете основната причина, най-малката работеща разлика.
- **Имам ADHD (действие на първо място)** — следващото действие е начело, стъпките са номерирани, една конкретна следваща стъпка, без увод.
- **Terse CJK (文言)** — свръхсбит стил на класически китайски (ограничен до локал `zh`).
- **🎯 Адаптивен бюджет на контекста** _(регулаторът)_ — вместо един праг на токените включено/изключено, ескалирайте най-евтините и най-беззагубни двигатели само доколкото е нужно, за да **се побере в контекстния прозорец на модела**. Политика: `reserve-output` (по подразбиране, съобразена с модела) · `percentage` · `absolute`. Режим: `floor` (гарантира поберане) · `replace-autotrigger` (изричният ви избор печели) · `off` (легаси праг).
- **🎛️ Къде се решава компресията** _(приоритет, висок → нисък)_ — хедър `x-omniroute-compression` за всяка заявка › override от routing combo › активен именуван профил › адаптивен / авто-тригер › стойност по подразбиране в панела › изключено. Приложеният план се връща в хедъра на отговора `X-OmniRoute-Compression: ; source=`.
Авто-тригер по праг на токените, включване на адаптивния регулатор, закачане на именуван профил, еднократна настройка за конкретна заявка или задаване на pipeline за всяко routing combo — което пасва на натоварването. Опционален офлайн **eval harness** (`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 може да блокира lifecycle скриптовете на пакетите, освен ако не са разрешени. `postinstall` на OmniRoute (`node scripts/build/postinstall.mjs`) е задължителен за подготовката на нативните му runtime файлове. Разрешете пакетите, посочени в предупреждението на npm, когато инсталирате глобално. За набора от пакети, отчетен от OmniRoute 3.8.53:
>
> ```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 binary. Вижте бележката за
> [настройка на Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> преди първата заявка към уеб доставчик.
Табло на `http://localhost:20128` · API на `http://localhost:20128/v1`.
**2) Свържете подходящ доставчик с вашия собствен акаунт**
Табло → **Providers** → изберете доставчик, чиито текущи условия и квота пасват на случая ви → добавете неговия 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.
Стратегия за тестово покритие за над 56 000 статични декларации на тестове в над 7 800 проследявани тестови файла
# ⭐ Водещи сътрудници
> OmniRoute се оформя от отдадена общност с отворен код. Тези хора имат изключителен принос, който влияе пряко върху качеството, стабилността и обхвата на проекта. **Благодарим ви.**
### Външни сътрудници по брой слети pull заявки
Преброяването е извършено на 2026-10-18 15:09:09 UTC с актуалния връх на release/v3.8.52 — 656f01cb43. Страницираното преброяване чрез GitHub GraphQL съдържа 9 191 слети PR заявки: 3 834 от собственика на хранилището, 229 от Dependabot, 6 от други ботове/приложения и 5 122 външни PR заявки от 835 различни сътрудници. „Променени редове“ представлява сборът от добавянията и изтриванията в GitHub и включва генерирани файлове, заключващи файлове, каталози, преводи и документация; това е обем на промените, а не авторски LOC. За 49 PR заявки GitHub отчита разлики над 500 000 реда (например #13399, добавяне на един доставчик, включва 2 347 променени файла), което завишава някои от общите стойности по-горе. Равните резултати споделят едно и също място.
### Комити, приписани от GitHub
Повторно проверено на 2026-10-18 14:44:45 UTC: приписани от GitHub комити, отчетени от API за сътрудници на хранилището за клона по подразбиране release/v3.8.52. API върна 849 самоличности (429 потребители, 2 бота, 418 анонимни); тази таблица изключва поддържащия проекта, ботовете и анонимните самоличности и запазва равенствата в класирането. Тя е различна както от класацията по слети 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 да остане безплатен и независим.
## 👥 Над 900 участници
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Одитирано на 2026-10-18 спрямо актуалния връх на release/v3.8.52 — ad160ab2d1 (6 826 комита): 993 нормализирани човешки Git самоличности — 707 присъстват като автори на комити (включително отговорникът по поддръжката), а 286 — само в изрични маркери Co-authored-by. При преброяването се прилага .mailmap, адресите на електронна поща се сравняват без оглед на регистъра, цифровите и обикновените GitHub noreply адреси се обединяват само когато съдържат един и същ идентификатор, изключват се 26 самоличности на ботове/агенти/услуги/заместители и обикновените адреси на електронна поща не се обединяват само защото показваните им имена съвпадат. Одитът от 2026-08-24 отчете 639; повторното прилагане на този метод върху базата ac02c5b42f от същия одит дава 619, така че увеличението се дължи на нови участници, а не на по-либерален метод.
### Как да допринесете
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. Изпратете клона (`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 на GitHub на 18 октомври 2026 г. — дайте звезда и на тези проекти. Стойностите са точна моментна снимка към посочената дата и естествено ще се променят.
### 🧬 Произход и шлюз
Шлюзът за ИИ, чийто публичен набор от ценови данни захранва синхронизирането за проследяване на разходите ни и чийто модел за нормализиране на доставчиците повлия върху нашето маршрутизиране.
Изходен код под MIT лиценз, адаптиран във включения мост ChatGPT Web → Codex Responses, включително адаптери за браузърни сесии, рамкиране на отговорите, употреба и търсене в мрежата.
Шаблони, пренесени във възстановяването на потоци, псевдонимите без разсъждение, резервното търсене в мрежата, ограниченията с плъзгащ се прозорец, редактирането на чувствителни данни в регистрационните файлове и подсилените процеси за стартиране.
Шаблони на Cursor Composer за избор на инструменти, ограничения на изхода и потвърждаване на инструменти, адаптирани в собствения изпълнител на Cursor.
Съвместими с Claude Code настройки по подразбиране за преобразуване и поведение на заглавките за таксуване, обобщени в управлявания чрез конфигурация мост на OmniRoute.
Неговите съпоставяния на модели на Grok, генераторът на Statsig с имитиран TypeError, настройките по подразбиране за заявки и устройства и обработчикът на NDJSON отговори бяха съществено адаптирани в изпълнителя Grok Web на OmniRoute.
Основният транзитивен източник на код зад grok2api-merged; неговите реализации на модели, заглавки, полезни товари, Statsig и обработчици са запазени в произхода на Grok Web.
Базовият източник под MIT лиценз за полезните товари и настройките по подразбиране за устройства на Grok, генератора на Statsig и обработчика на result.response, пренесен чрез TQZHR и grok2api-merged.
Транзитивен източник, посочен от grok2api-merged за неговия слой с пул от прокси сървъри; OmniRoute запазва това сведение за произхода, но не твърди, че в ограничения му изпълнител Grok Web е пренесен пулът от прокси сървъри.
Неговото прокси за Grok с удостоверяване чрез бисквитки и шаблонът за поточно предаване чрез result.response.token повлияха върху транспорта Grok Web на OmniRoute.
При оригиналната реализация на Grok Web беше използван като ориентир неговият дизайн на HTTP/браузърната комуникация с външната услуга; директният му HTTP път произлиза от GrokProxy, затова не се претендира за независимо пренасяне на код.
### 🗜️ Компресиране на контекста и токените — механизми
Станалият вайръл проект „защо използва много токен, когато малко токен върши работа“ — неговата философия на пещерняшка реч задвижва стандартния ни режим за компресиране и над 30 правила за премахване на пълнеж и съкращаване.
Високопроизводително компресиране на изхода от команди — вдъхнови нашата RTK машина, DSL за JSON филтри, възстановяването на необработен изход и комбинирания конвейер RTK → Caveman.
Изследвания върху компресирането на подкани (LLMLingua / LLMLingua-2) — вдъхновиха нашата асинхронна, безопасна за код и пропускаща при грешка машина llmlingua.
Компресиране на токени за PT-BR — задвижва нашия езиков пакет за pt-BR: намаляване на плеоназмите и премахване на пълнежа, настроени за бразилско-португалската граматика.
Станалото вайръл умение за програмиране на „мързелив старши разработчик“ според YAGNI — вдъхнови нашия изходен стил less-code: насочване към най-малката работеща промяна, което намалява _генерирания_ код (аналогът по оста на изхода на сбитата проза на Caveman).
Компресиране на изхода според съдържанието и типа на файла, с прекратяване при грешка — потвърди нашето разпределяне по тип и пропускането при минимална печалба.
Колонен JSON на Rust + адресирано по съдържание извличане + дедупликация между съобщения — потвърди дизайна на нашите машини headroom/ccr/session-dedup и стабилния спрямо кеша инвариант „компресираната форма е независима от позицията“.
Набор от инструменти за TypeScript Compiler API — вдъхнови нашето базирано на синтактичен анализатор премахване на коментари, което запазва низовите, шаблонните и regex литералите.
MITM прихващането/анализът на трафика между асистент за програмиране ↔ LLM повлия върху първоначалните изисквания към инспектора на трафика. Четири модула, създадени по-рано — обединяване на 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 независимо провери и коригира актуалния формат за предаване на данни.
## 📄 Лиценз
MIT License – вижте [LICENSE](LICENSE) за подробности.
---
**[⬆ Обратно към началото](#-omniroute)** · Създаден с ❤️ за общността на отворения код в AI.
OmniRoute v3.8.53 · Node ≥22.22.2 · MIT License · omniroute.online