## 💰 ~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 [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Шлюз продолжает расти
## 🆓 Установите, подключите провайдера, затем маршрутизируйте через одну конечную точку
```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?
## 🤝 Поддерживается нашими друзьями из Open Source
> **Хотите присоединиться в качестве друга Open Source?** Это компании, которые поддерживают открытый исходный код и помогают OmniRoute развиваться — и мы публично сообщаем, куда идет каждый токен, который они нам дают. Свяжитесь с нами: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Благодарим Kimi (Moonshot AI), нашего основателя-друга Open Source, за поддержку этого проекта! Kimi — это лаборатория ИИ, стоящая за семействами моделей K2 и K3 с открытым весом — Kimi K3 предоставляет окно контекста в 1M токенов, нативное зрение и передовое кодирование за долю цены закрытых моделей, и работает из коробки с Claude Code, Codex и каждым инструментом кодирования, который обслуживает OmniRoute.
Что обеспечивает поддержка Kimi: Кредиты API Kimi обеспечивают работу конвейера выпуска OmniRoute, проверенного ИИ — этап *проверки слияния на базе Kimi K3*, который проверяет каждый pull request перед его отправкой — плюс ежедневную разработку функций. Первоклассная поддержка Kimi поставляется по обоим каналам: прямой Kimi API (kimi-k3) и план кодирования Kimi Code (OAuth и API key). OmniRoute также является первым бразильским проектом с открытым исходным кодом в программе поддержки Kimi. Получите Kimi API key с 15% дополнительными кредитами →
Cheaper Inference cheaperinference.com
Благодарим Cheaper Inference, друга Open Source 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 key →
Ссылки с тегом aff=omniroute являются партнерскими ссылками. Они финансируют проект без дополнительных затрат для вас. 🎟️ Партнерские акции — бесплатные купоны на регистрацию от провайдеров, которых мы не спонсируем (нажмите, чтобы развернуть)Этот раздел предназначен только для реферальных/купонных кодов. Спонсируемые партнерства находятся в разделе **🤝 Поддерживается нашими друзьями из Open Source** выше. 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? Откройте issue, и мы добавим его сюда.
## 🎯 Комбо — флагманская возможность
> **Комбо** — это цепочка моделей, между которыми OmniRoute переключается **автоматически**. Если квота исчерпана, провайдер недоступен или расходы резко возрастают, комбо может перейти к следующей подходящей и исправной модели. 🛡️
### ⚡ Без настройки — просто используйте `auto`
Создавать комбо не нужно. Укажите `auto` (или один из его вариантов) в качестве модели, и OmniRoute сформирует виртуальное комбо из подключённых провайдеров, оценивая их в реальном времени:
ID модели
Что оптимизируется
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 copia-e-cola:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Криптовалюта — BTC · ETH · USDT-TRC20 · USDC-Solana (нажмите, чтобы развернуть)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Отправляйте каждую монету только через указанную сеть — отправка через неверную сеть может привести к потере средств.
🐛 Нашли ошибку или хотите поделиться отзывом? Создайте [обсуждение](https://github.com/diegosouzapw/OmniRoute/discussions).
Примечания для разработчиков: Во время npm install/postinstall проект может создать локальный файл .env для удобства разработчика. Этот файл намеренно игнорируется через .gitignore (см. .gitignore) и никогда не должен попадать в коммиты — если он был случайно добавлен в коммит, замените все раскрытые секреты и удалите файл из истории. Рекомендации по управлению локальными файлами окружения и секретами см. в docs/DEVELOPER-ENVIRONMENT.md.
## 📡 Радар OmniRoute
Основной показатель бесплатного уровня по-прежнему составляет **~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 и панель на дашборде с голосовым чатом Faro с кнопкой push-to-talk. → [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 + китайского (вэньянь), фильтры 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, игнорирующие переменные окружения прокси, с CA для каждого SNI + установщиком доверенного хранилища. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Телеметрия затрат повсюду** — заголовки стоимости/использования `X-OmniRoute-*` на каждом эндпоинте, заголовок экономии при попадании в кеш, квоты расходов в 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)
- **🖼️ Новые эндпоинты** — `/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 направляют повторные запросы обратно в соединение, удерживающее кешированный префикс; а эндпоинт только для чтения `/v1/auto-combo/{channel}/candidates` раскрывает живой пул кандидатов канала `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Локальная производительность и инфраструктура** — локальный Redis в один клик, деплоеры relay для Cloudflare Workers / Deno Deploy, Bifrost и Mux как управляемые встроенные сервисы. → [Встроенные сервисы](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` — и **любая** ИИ-среда разработки или CLI работает с бесплатными и недорогими моделями.
+ также работает с · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · любым инструментом, совместимым с OpenAI
📖 Настройка каждого из всех 37 инструментов (27 CLI для написания кода + 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 зарегистрированных провайдеров** в канонических коллекциях чата, медиа, поиска, локальных моделей, облачных агентов и системных сервисов, включая **153 с метаданными обнаружения `hasFree: true`**. Реестр чат-моделей охватывает **239 провайдеров / 3 059 уникальных пар «провайдер — модель» / 1 475 исходных ID моделей**; отдельный каталог бесплатных лимитов содержит **467 строк по моделям**, **34 повторяющихся пула** и **51 повторяющегося/бесключевого провайдера с бессрочным бесплатным доступом**. Это разные знаменатели по замыслу; определения и расчёты с дедупликацией пулов приведены в [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) и [Free Tiers](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+ — каждая иконка подгружается в реальном времени из каталога провайдеров дашборда. 📖 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Бесплатно навсегда — $0, без карты
OpenCode Zen DeepSeek V4, Nemotron 3 Без лимита токенов
Kilo Code Автомаршрутизация, Tencent Hy3 Бесплатно навсегда
Cerebras GLM 4.7, GPT-OSS Разовый кредит $5; требуется карта
OpenRouter модели :free +$10 → выше RPM
📖 Полный машиночитаемый каталог → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ Где работает OmniRoute — везде
> То же приложение, ваше устройство, ваши правила. От глобальной установки через npm до **вашего телефона** с помощью Termux.
Платформа
Установка
Особенности
📦 npm (глобально)
npm install -g omniroute
Одна команда, любая ОС
🐳 Docker
docker run … diegosouzapw/omniroute
Мультиархитектурная поддержка AMD64 + ARM64
🖥️ Десктопное приложение (Electron)
npm run electron:build
Нативное окно + системный трей — Windows / macOS / Linux
🎩 Строка меню (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Контролирует и автоматически обновляет сервер — macOS
💪 ARM
нативная поддержка arm64
Raspberry Pi, ARM-серверы, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Работает на вашем телефоне круглосуточно и без 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 командами**, а также открытые агентские протоколы, позволяющие ИИ-агенту управлять им **самостоятельно**.
### ⌨️ Настоящий 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**, **вебхуки** или **удалённый CLI** — любой совместимый агент (или ваш собственный код) получит полный контроль над шлюзом: маршрутизацией, провайдерами, комбинациями, кешем, сжатием и памятью — автономно. Приведённые ниже HTTP-эндпоинты доступны по адресу `http://localhost:20128`.
Интерфейс
Эндпоинт / команда
Назначение
🧰 MCP (stdio)
omniroute --mcp
Подключение к Claude Desktop, Cursor или любому MCP-клиенту
🌊 MCP (HTTP)
/api/mcp/stream
Удалённый MCP — 110 инструментов, 33 области доступа (принудительное применение включается отдельно), полный журнал аудита
📡 MCP (SSE)
/api/mcp/sse
Потоковый транспорт MCP
🤝 A2A
/.well-known/agent.json
Взаимодействие между агентами, JSON-RPC 2.0 + SSE, 6 навыков
🌐 REST API
/v1/*
Совместимый с OpenAI интерфейс — чат, эмбеддинги, изображения, аудио, OCR
🔔 Вебхуки
/api/webhooks
Отправка событий запросов и квот в Slack, Discord, Telegram или на любой URL
🛰️ Удалённый CLI
omniroute connect
Управление удалённым экземпляром с помощью токенов доступа с ограниченными правами
```bash
# Предоставить 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%
Безопасный режим по умолчанию для постоянного использования
🪨 Standard (Caveman)
~30%
Повседневной разработки
⚡ Aggressive
~50%
Длительных сеансов с интенсивным использованием инструментов
🔥 Ultra
~75%
Максимальной экономии
🧰 RTK
60–90%
Вывода оболочки, тестов, сборки и git
🔗 Stacked (RTK → Caveman)
78–95%
Смешанных запросов и журналов инструментов
**Реальный пример — режим Standard:**
> **До (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, исправлять первопричину, минимальный работающий diff.
- **У меня СДВГ (сначала действие)** — вперёд идёт следующее действие, шаги пронумерованы, один конкретный следующий шаг, без вступлений.
- **Лаконичный CJK (文言)** — сверхлаконичный стиль классического китайского (включается только для локали `zh`).
- **🎯 Адаптивный бюджет контекста** _(регулятор)_ — вместо одного порога токенов вкл/выкл наращивать самые дешёвые и наименее разрушительные движки ровно настолько, насколько нужно, чтобы **уместиться в контекстное окно модели**. Политика: `reserve-output` (по умолчанию, с учётом модели) · `percentage` · `absolute`. Режим: `floor` (гарантировать вписывание) · `replace-autotrigger` (ваш явный выбор побеждает) · `off` (устаревший порог).
- **🎛️ Где решается сжатие** _(приоритет, от высшего к низшему)_ — заголовок `x-omniroute-compression` на уровне запроса › переопределение в routing-combo › активный именованный профиль › адаптивный / авто-триггер › значение панели по умолчанию › выкл. Применённый план возвращается в заголовке ответа `X-OmniRoute-Compression: ; source=`.
Авто-триггер по порогу токенов, включение адаптивного регулятора, закрепление именованного профиля, разовая настройка на запрос или назначение конвейера на routing-combo — что лучше подходит под нагрузку. Опциональный офлайн-**стенд для оценки** (`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`) необходим для подготовки его нативных файлов среды выполнения. Разрешите пакеты, перечисленные в предупреждении 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 или другого провайдера с веб-cookie?** Пакет npm включает
> Playwright, но не его бинарник Chromium. См. заметку
> [Настройка 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: [скопировать из Dashboard → Endpoints]
Model: auto (маршрутизирует среди подходящих подключений — или выберите provider/model)
```
**4) Проверьте, что всё работает**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Вы должны увидеть список подключённых моделей. 🎉 Вот и всё — начинайте писать код, а OmniRoute сам маршрутизирует запросы и делает fallback за вас.
Если ваш клиент не может отправлять пользовательские заголовки, OmniRoute также предоставляет совместимые псевдонимы с токеном:
```txt
Каталог OpenAI: http://localhost:20128/vscode/YOUR_KEY/
Модели OpenAI: http://localhost:20128/vscode/YOUR_KEY/models
Чат OpenAI: http://localhost:20128/vscode/YOUR_KEY/chat/completions
Responses OpenAI: http://localhost:20128/vscode/YOUR_KEY/responses
Чат Ollama: http://localhost:20128/vscode/YOUR_KEY/api/chat
Теги Ollama: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Используйте их только для клиентов, которые не могут передать `Authorization: Bearer ...`. Аутентификация через заголовок остаётся предпочтительным режимом.
## 📦 Другие способы установки — Docker, исходный код, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Тег `:latest` соответствует самой новой **опубликованной** стабильной версии SemVer. Он не отслеживает ветку git `main`. Для GitOps закрепляйте тег `:X.Y.Z`. См. [каналы выпусков Docker](docs/guides/DOCKER_GUIDE.md#release-channels). В образе задано значение **`OMNIROUTE_MEMORY_MB=1024`**. Этого достаточно для панели управления и непродолжительных чатов. **Агенты для программирования** (`POST /v1/responses` из Claude Code, Codex, Grok, …) требуют значительно большего объёма кучи V8, иначе при двух перекрывающихся длинных контекстах процесс завершается с `FATAL ERROR` примерно на 12 ГиБ. Выделяйте контейнеру больше памяти, чем размер кучи (нативные буферы размещаются за пределами V8):
| Рабочая нагрузка | Куча (`-e OMNIROUTE_MEMORY_MB`) | Контейнер (`--memory`) |
| ------------------------------------------------- | ------------------------------- | ---------------------- |
| Панель управления / лёгкий чат | `1024` (по умолчанию в образе) | ≥2 ГиБ |
| Один агент для программирования | `8192` | ≥10 ГиБ |
| Два одновременных длинных запроса `/v1/responses` | `10240`–`12288` | ≥12–16 ГиБ |
```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`**: при запуске в Bun OmniRoute использует встроенный драйвер Bun `bun:sqlite`, а в Node.js переключается на `better-sqlite3` или `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
# Использование flakes Nix
nix develop
npm run dev
# Или использование devbox
devbox run npm run dev
```
📖 [Руководство по Docker](docs/guides/DOCKER_GUIDE.md) — профили Compose, HTTPS через Caddy, туннели 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+ либо встроенный WASM-модуль `sql.js`) — инструменты сборки не требуются.
Чтобы полностью пропустить нативную инициализацию после установки (для 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 request
Подсчёт выполнен 2026-10-18 15:09:09 UTC на актуальной вершине release/v3.8.52656f01cb43. Постраничный подсчёт через GitHub GraphQL охватывает 9 191 объединённый PR: 3 834 от владельца репозитория, 229 от Dependabot, 6 от других ботов/приложений и 5 122 внешних PR от 835 разных контрибьюторов. «Изменённые строки» — это добавления + удаления по данным GitHub, включая сгенерированные файлы, lock-файлы, каталоги, переводы и документацию; это объём изменений, а не количество написанных автором строк кода (LOC). В 49 PR указаны диффы GitHub объёмом более 500 000 строк (например, #13399 — добавление одного провайдера — содержит 2 347 изменённых файлов), что завышает некоторые итоговые значения выше. При равенстве показателей места являются общими.
### Коммиты, атрибутированные GitHub
Перепроверено 2026-10-18 14:44:45 UTC: коммиты с атрибуцией GitHub, о которых сообщает Contributors API репозитория для ветки по умолчанию release/v3.8.52. API вернул 849 идентичностей (429 пользователей, 2 бота, 418 анонимных); эта таблица исключает мейнтейнера, ботов и анонимные идентичности и сохраняет равные результаты. Она отличается как от приведённого выше рейтинга по объединённым PR, так и от приведённой ниже переписи по метаданным Git.
> 🙏 Функции, исправления ошибок и улучшения инфраструктуры этих контрибьюторов — **неотъемлемая часть** того, что делает OmniRoute надёжным и многофункциональным. Каждый пул-реквест, каждый тестовый пример и каждый файл перевода i18n важны. Открытый исходный код создают такие люди, как они.
---
## 💖 Спонсоры
Огромное спасибо людям, которые финансируют OmniRoute из собственного кармана — каждый вклад помогает проекту оставаться бесплатным, независимым и продолжать развиваться.
Pixma 💛 Поддержал проект разовым взносом в прошлом
Paco Cartones 💛 Поддержал проект разовым взносом в прошлом
longtao 💛 Поддержал проект разовым взносом в прошлом
… и другим людям, предпочитающим сохранять конфиденциальность 💛Данные о публичных спонсорах GitHub повторно проверены 2026-10-18 через GitHub Sponsors GraphQL API: 11 публичных спонсорских взносов (6 активных, 5 прошлых) из 14 в общей сложности. Статус GitHub isActive определяет приведённые выше пометки об активности; публичные пользователи, ранее оказавшие разовую поддержку, по-прежнему упомянуты с благодарностью, а частные спонсоры остаются анонимными. Пожертвования через 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, адреса электронной почты сравниваются без учёта регистра, числовые и обычные noreply-адреса GitHub объединяются только в том случае, если они соответствуют одному и тому же имени пользователя; исключены 26 идентичностей ботов, агентов, сервисов и заполнителей, а обычные адреса электронной почты не объединяются лишь на основании совпадения отображаемых имён. В аудите от 2026-08-24 было опубликовано число 639; повторное применение этого метода к базовому коммиту того аудита ac02c5b42f даёт 619, поэтому рост обусловлен появлением новых участников, а не менее строгой методикой.
### Как внести вклад
1. Создайте форк репозитория
2. Создайте ветку от вершины **активной** ветки `release/vX.Y.Z` (не от `main`) — см. [Модель ветвления и выпуска релизов](docs/ops/BRANCHING_MODEL.md)
3. Создайте ветку для своей функции (`git checkout -b feat/amazing-feature`)
4. Зафиксируйте изменения (`git commit -m 'feat: add amazing feature'`)
5. Отправьте ветку (`git push origin feat/amazing-feature`)
6. Откройте Pull Request с **базовой веткой = соответствующая ветка `release/vX.Y.Z`**
Подробные рекомендации см. в [CONTRIBUTING.md](CONTRIBUTING.md).
### Выпуск новой версии
```bash
# Создайте релиз — публикация в npm произойдёт автоматически
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, включая адаптеры браузерных сессий, формирования ответов, учёта использования и веб-поиска.
Шаблоны, перенесённые в восстановление потоковой передачи, псевдонимы без рассуждений, резервный веб-поиск, ограничения скользящего окна, редактирование конфиденциальных данных в журналах и усиленные сценарии запуска.
Совместимые с 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 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 — вдохновил нас на основанное на парсере удаление комментариев с сохранением строковых и шаблонных литералов, а также литералов регулярных выражений.
Агенты с отслеживанием состояния и многоуровневой памятью — послужили источником вдохновения для нашей многоуровневой модели управления и восстановления контекста (CCR).
Таксономия ProblemMap, охватывающая 16 регулярно возникающих режимов отказа RAG/LLM, — общий словарь терминов в нашем руководстве по устранению неполадок.
### 🛰️ Инспекция трафика, MITM и прозрачный прокси
MITM-перехват и анализ трафика между помощниками по программированию и LLM легли в основу первоначальных требований к Traffic Inspector. Четыре ранее заимствованных модуля — объединение SSE, нормализация диалогов, маскирование секретов и очистка заголовков — были заменены независимыми реализациями с чистого листа, основанными на общедоступных стандартах протоколов. Два компонента сквозной передачи трафика хоста (passthrough.ts и _internal/bypass.cjs) остаются внутренними реализациями OmniRoute, классифицированными независимо; они не переписывались в рамках этой замены.
Прозрачная маршрутизация через прокси для отдельных процессов — послужила источником вдохновения для нашего отказоустойчивого завершения MITM, тайм-аутов бездействия сокетов, атрибуции процессов через /proc и перехвата TPROXY.
### 📚 Данные моделей, наблюдаемость и пользовательский интерфейс
Визуализация графа рабочего процесса в реальном времени в LangGraph Studio послужила источником вдохновения для представления каскадов в реальном времени в наших студиях.
Наблюдаемость за сервисной сеткой Istio — послужила источником вдохновения для наших индикаторов автоматического выключателя и визуализации рёбер с ошибками в Routing/Combo Studio.
Курируемый список библиотек с безопасными настройками по умолчанию, которым мы руководствуемся при выборе средств безопасности (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Послужил источником вдохновения для дедупликации запросов, аварийного бесплатного резервного варианта, подключаемых стратегий Auto-Combo и многоязычной классификации намерений.
Его переназначение моделей с учётом учётных записей, проверка пути к исполняемому файлу и логика меток тарифных планов легли в основу среды выполнения Antigravity в OmniRoute.
Его компактный формат обратного отсчёта до сброса квоты послужил источником вдохновения для соответствующего отображения лимитов поставщика в OmniRoute.