## 💰 ~1,62 млрд токенов в месяц на бесплатных тарифах сторонних провайдеров
> **Используйте собственные аккаунты провайдеров.** Это оценочная совокупность отдельно доступных бесплатных тарифов сторонних провайдеров, а не пакет токенов от OmniRoute. Зарегистрируйтесь, получите учётные данные там, где это требуется, и подключите доступных вам провайдеров; каждый провайдер самостоятельно определяет свои лимиты, доступность и условия.
>
> Объединять бесплатные тарифы вручную непросто — десятки SDK, десятки ограничений частоты запросов и никакого понимания, какой объём вам фактически доступен. OmniRoute каталогизирует **489 записей бесплатных тарифов по 35 ключам повторяющихся пулов** и рассчитывает общее количество токенов на основе **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)**
## 📈 Шлюз продолжает расти
## 🆓 Установите, подключите провайдера и направляйте запросы через единую конечную точку
```bash
# Подключив провайдера, скопируйте свой ключ OmniRoute из раздела «Панель управления → Конечные точки»:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
Для `auto` требуется подходящий маршрут. В новой установке может не быть подходящих целей без ключей, а провайдер без ключей может отклонять запросы сторонних клиентов. Провайдеры с пометкой `tos: avoid`, включая OpenCode Free и 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/offline
🔋 В первую очередь — наибольший запас квоты / лимита частоты запросов
auto/smart
🔭 Приоритет качества + 10% на исследование для поиска более подходящих моделей
auto/lkgp
📌 Явная привязка к последнему успешно использованному провайдеру
auto/chaos
🧪 Параллельная отправка запросов группе моделей (по одной на провайдера, по умолчанию — 5) с возвратом одного ответа; один вышестоящий вызов на каждую модель в группе, а не внедрение сбоев
##
### 🔀 Или создайте собственное комбо — 19 стратегий маршрутизации
Все **19** стратегий — комбинируйте их на каждом шаге комбо:
#
Стратегия
Что она делает
1
priority
Упорядоченный список с приоритетом первой цели — каждая используется до исчерпания перед переходом к следующей 🥇
2
fill-first
Полностью использует квоту каждой цели перед переходом к следующей
3
weighted
Взвешенный случайный выбор с учётом веса каждой цели
4
round-robin
Последовательно циклически перебирает цели
5
p2c
Случайная балансировка нагрузки методом выбора из двух вариантов
6
least-used
Выбирает цель с наименьшей текущей нагрузкой
7
random
Равномерный случайный выбор (с удалением дубликатов)
8
strict-random
Случайный выбор без удаления повторов 🎲
9
cost-optimized
Минимизирует стоимость запроса в $ на основе актуальных цен из каталога 💸
10
headroom
Выбирает цель с наибольшим остатком квоты
11
reset-window
Предпочитает цель, окно квоты которой сбросится раньше всего
12
reset-aware
Ранжирует по времени сброса квоты — сначала короткие окна 📊
13
context-relay
Передаёт контекст между целями в длительных диалогах 🧠
14
context-optimized
Выбирает наиболее подходящую цель для текущего размера контекста
15
cache-optimized
Закрепляет каждый повторно используемый префикс промпта за одной учётной записью, максимально повышая долю попаданий в кеш промптов 🎯
16
lkgp
Последний успешный маршрут — закрепляет последний успешно использованный провайдер, а затем при необходимости переходит к резервным правилам
17
auto
Оценка каждого подключения в реальном времени по 16 факторам 🤖
18
fusion
Отправляет запрос группе моделей, а модель-судья синтезирует единый ответ 🧬
19
pipeline
Объединяет шаги в цепочку — результат каждой цели передаётся следующей 🔗
Движок Auto-Combo оценивает каждого кандидата по **16 факторам** (исправность, квота, стоимость, задержка, соответствие задаче, качество, доступность сеанса…) — см. [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Отказоустойчивость встроена (3 независимых уровня)
📖 [Механизм 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.50**. Полная история — в [`CHANGELOG.md`](CHANGELOG.md).
- **🎛️ OmniConductor** — входящее делегирование A2A вашему парку агентов, навыки Conductor в карточке агента и панель управления с голосовым чатом Faro в режиме «нажми и говори». → [Сервер A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Адаптивный контроль доступа и защита от перегрузки** — ресурсоёмкие запросы чата ставятся в очередь вместо возврата 503, с атомарными скользящими арендными лимитами RPM для каждого подключения. → [Руководство по отказоустойчивости](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Канонический порядок `/v1/models`** — один непрерывный блок для каждого поставщика (с закреплёнными в начале комбинациями), стабильный во всех источниках каталога. → [Справочник API](docs/reference/API_REFERENCE.md)
- **🗜️ Усиление защиты при сжатии** — включённое по умолчанию ограничение распаковки, пакеты Caveman для DE / FR / JA и китайского (wényán), фильтры RTK для Gradle и .NET. → [Сжатие](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Честная фиксированная стоимость** — поставщики с подпиской / тарифами для программирования отображают **$0** в аналитике затрат; оценка бюджета, квот и маршрутизации сохраняется. → [Справочник API](docs/reference/API_REFERENCE.md)
- **⚖️ Маршрутизация Quota-Share** — справедливое распределение квоты общей учётной записи между объединёнными ключами с сохранением эффективности: неиспользуемые доли передаются другим. → [Руководство по отказоустойчивости](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Настройка CLI/агентов одной командой** — 13 зарегистрированных команд `setup-*`; `omniroute run` запускает 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` поддерживает 10 целей, интерактивный выбор поставщика и модели, а также избранное для каждого контекста. → [Интеграции CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Удалённый режим** — управление удалённым экземпляром OmniRoute с помощью токенов с ограниченными областями действия (`connect` / `contexts` / `tokens`) и OAuth-помощника `antigravity` для установок на VPS. → [Удалённый режим](docs/guides/REMOTE-MODE.md)
- **🧭 Более умная автоматическая маршрутизация** — комбинации `auto/:`, **Fusion** (панель моделей + судья), маршрутизация с учётом задачи, переопределение модели / режима / бюджета в USD для каждого запроса. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Подключаемое сжатие** — 12 комбинируемых движков и Compression Studios: LLMLingua-2, двухуровневый Ultra, omniglyph, контроль точности на каждом этапе, GCF v3.2, редактор с изменением порядка перетаскиванием. → [Сжатие](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Прозрачная расшифровка MITM (TPROXY)** — перехват CLI, игнорирующих переменные окружения прокси, с отдельным центром сертификации для каждого SNI и установщиком в хранилище доверенных сертификатов. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Телеметрия затрат повсюду** — заголовки стоимости/использования `X-OmniRoute-*` для каждой конечной точки, заголовок экономии при попадании в кеш и квоты расходов в USD для каждого ключа. → [Справочник API](docs/reference/API_REFERENCE.md)
- **🧠 Память под вашим контролем** — по умолчанию отключена; доступна опциональная int8-квантизация векторов и типизированное затухание, а также `x-omniroute-no-memory` для каждого запроса. → [Память](docs/frameworks/MEMORY.md)
- **🛡️ Безопасность** — защита от инъекций в промпты на каждом маршруте LLM (набор тестов red-team), опциональное маскирование учётных данных (удаляет утёкшие ключи API и секреты в обоих направлениях), бесплатный веб-поиск DuckDuckGo как крайняя мера и опциональный вход через OIDC для панели управления (вход по паролю всегда остаётся доступным). → [Защитные механизмы](docs/security/GUARDRAILS.md)
- **🖼️ Новые конечные точки** — `/v1/ocr` (Mistral OCR) и `/v1/audio/translations` (в стиле Whisper) дополняют возможности работы с медиа. → [Справочник API](docs/reference/API_REFERENCE.md)
- **🎨 Генерация изображений / видео / аудио** — единый API для медиа: xAI Grok Imagine и Novita AI для видео, ComfyUI, Magnific, Adobe Firefly, Segmind и поставщики речевых сервисов, такие как ElevenLabs. → [Справочник API](docs/reference/API_REFERENCE.md)
- **🌍 Развёртывание и эксплуатация** — `basePath` для обратного прокси, автоматическое определение языка браузера, отслеживание устройств для каждого ключа, доверие MITM без прав root, локализация zh-TW. → [Переменные окружения](docs/reference/ENVIRONMENT.md)
- **🤝 Больше поставщиков и агентов** — облачные агенты (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) с браузером и входом через OAuth, полноценная карточка Ollama, Claude Opus 5 и Sonnet 5, официальное партнёрство с Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… и обновлённый **каталог из 352 поставщиков**. → [Поставщики](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Прозрачность маршрутизации** — каждый ответ содержит заголовок `X-OmniRoute-Decision` с указанием обслуживших его стратегии, поставщика и задержки; новая стратегия комбинации `cache-optimized` и фактор Auto-Combo `cacheAffinity` направляют повторные запросы обратно к подключению, где хранится кешированный префикс, а конечная точка только для чтения `/v1/auto-combo/{channel}/candidates` предоставляет актуальный пул кандидатов канала `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Локальная производительность и инфраструктура** — локальный Redis в один клик, средства развёртывания ретрансляторов для Cloudflare Workers / Deno Deploy, Bifrost и Mux как контролируемые встроенные сервисы. → [Встроенные сервисы](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Также в комплекте** — платформа плагинов и маркетплейс, платформы навыков Omni/Agent/GitHub, интеграция с хранилищами Obsidian (22 инструмента MCP), совместимые с OpenAI API Batch и Files, семантический кеш ответов, геймификация с таблицами лидеров, обнаружение агентов 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-совместимым инструментом
📖 Настройка каждого из 36 инструментов (26 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
```
Каждая команда учитывает активный удалённый контекст (`omniroute connect `), `--dry-run`
показывает точные переменные окружения и аргументы без выполнения, а `--api-key-env NAME` не позволяет секретам
попасть в историю командной оболочки. → [Интеграции с CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 372 провайдера ИИ — 154 отмечены в каталоге как бесплатные
> **372 зарегистрированных провайдера** в канонических коллекциях чатов, мультимедиа, поиска, локальных моделей, облачных агентов и систем, включая **154 с метаданными обнаружения `hasFree: true`**. Реестр чат-моделей охватывает **237 провайдеров / 3 009 уникальных пар «провайдер-модель» / 1 443 исходных идентификатора моделей**; отдельный каталог бесплатных лимитов содержит **491 строку для отдельных моделей**, **35 возобновляемых пулов** и **54 провайдера с возобновляемым или бессрочным бесплатным доступом без ключа**. Эти знаменатели намеренно различаются; определения и расчёты с дедупликацией пулов приведены в [справочнике провайдеров](docs/reference/PROVIDER_REFERENCE.md) и разделе [бесплатных тарифов](docs/reference/FREE_TIERS.md).
### 🏢 Все крупнейшие лаборатории — через одну конечную точку
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…и ещё более 330 — все значки загружаются в реальном времени из каталога провайдеров панели управления. 📖 [Справочник провайдеров](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Бесплатно навсегда — $0, карта не требуется
OpenCode Zen DeepSeek V4, Nemotron 3 Без ограничения токенов
Kilo Code Автоматическая маршрутизация, Tencent Hy3 Бесплатно навсегда
Qoder AI Qwen3-Max, Kimi-K2 Неограниченно и БЕСПЛАТНО
Pollinations GPT, Llama, Claude Ключ не требуется
Cloudflare AI Более 50 моделей 10 тыс. нейронов в день
NVIDIA NIM GLM, MiniMax Около 40 запросов в минуту бесплатно
Cerebras GLM 4.7, GPT-OSS Единоразовый кредит $5; требуется карта
OpenRouter Модели :free +$10 → больше запросов в минуту
📖 Полный машиночитаемый каталог → [`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 list # ← выполняется на УДАЛЁННОМ сервере
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%
Безопасный режим по умолчанию для постоянного использования
🪨 Стандартный (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 токенов):** _«Повторный рендеринг: новая ссылка в каждом цикле (встроенный объект создаётся заново). Использовать `useMemo`»._
>
> **Тот же ответ. Примерно на 70% меньше токенов. Техническая точность сохранена.** ✅
### 🎚️ Помимо движков — стили вывода, адаптивный регулятор и управление для каждого запроса
12 движков выше сокращают то, что поступает **на вход**. Ещё три уровня определяют, **как**, **когда** и что выходит **на выходе**:
- **🪄 Стили вывода** _(управление по оси вывода)_ — добавляют детерминированные, безопасные для кэширования инструкции по формированию ответа; их можно комбинировать, каждый с интенсивностью `lite` / `full` / `ultra`. Добавление стиля — одна строка в реестре:
- **Лаконичная проза** — убрать лишние слова / артикли / оговорки; сохранить точность технического содержания.
- **Меньше кода** — YAGNI в стиле «ленивого ведущего разработчика»: минимальное рабочее изменение, без незапрошенной инфраструктуры.
- **Конский хвост (ленивый ведущий разработчик)** — следовать принципу YAGNI, устранять первопричину, вносить минимальные рабочие изменения.
- **У меня СДВГ (сначала действие)** — начинать со следующего действия, нумеровать шаги, указывать один конкретный следующий шаг, без предисловий.
- **Лаконичный CJK (文言)** — сверхлаконичный стиль классического китайского языка (доступен только для локали `zh`).
- **🎯 Адаптивный бюджет контекста** _(регулятор)_ — вместо единого порога токенов «вкл./выкл.» активирует самые дешёвые движки с минимальными потерями лишь настолько, насколько необходимо, чтобы **уложиться в контекстное окно модели**. Политика: `reserve-output` (по умолчанию, с учётом модели) · `percentage` · `absolute`. Режим: `floor` (гарантировать соответствие лимиту) · `replace-autotrigger` (ваш явный выбор имеет приоритет) · `off` (устаревший порог).
- **🎛️ Где принимается решение о сжатии** _(приоритет, от высокого к низкому)_ — заголовок `x-omniroute-compression` для отдельного запроса › переопределение комбинации маршрутизации › активный именованный профиль › адаптивный режим / автозапуск › настройка панели по умолчанию › отключение. Применённый план возвращается в заголовке ответа `X-OmniRoute-Compression: ; source=`.
Настройте автозапуск по порогу токенов, включите адаптивный регулятор, закрепите именованный профиль, задайте однократную настройку для отдельного запроса или назначьте конвейер для комбинации маршрутизации — выберите вариант, подходящий для вашей нагрузки. Опциональный автономный **набор для оценки** (`npm run eval:compression`) оценивает точность и экономию на закреплённом корпусе, прежде чем вы введёте изменение в эксплуатацию.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Быстрый старт
**1) Установите и запустите**
```bash
npm install -g omniroute
omniroute
```
> 💡 Видите `npm warn ERESOLVE` или предупреждения о 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.51:
>
> ```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. Перед первым запросом к веб-провайдеру ознакомьтесь с
> примечанием о [настройке Chromium для Playwright](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium).
Панель управления доступна по адресу `http://localhost:20128` · API — по адресу `http://localhost:20128/v1`.
**2) Подключите подходящего провайдера с помощью собственной учётной записи**
Панель управления → **Провайдеры** → выберите провайдера, актуальные условия и квоты которого соответствуют вашему сценарию использования → добавьте его API-ключ или завершите процедуру подключения учётной записи. Для бесплатных тарифов могут потребоваться регистрация, одобрение или способ оплаты. Ознакомьтесь с [руководством по бесплатным тарифам](docs/getting-started/FREE-TIERS-GUIDE.md); доступ без ключа не гарантируется, а провайдеры с пометкой `tos: avoid` по умолчанию исключаются из `auto`.
**3) Настройте инструмент для программирования**
```txt
Базовый URL: http://localhost:20128/v1
Ключ API: [скопируйте из «Панель управления → Конечные точки»]
Модель: auto (маршрутизация между подходящими подключениями — либо выберите провайдера/модель)
```
**4) Проверьте работу**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Вы должны увидеть список подключённых моделей. 🎉 Готово — начинайте программировать, а OmniRoute будет автоматически маршрутизировать запросы и переключаться на резервные варианты.
Если ваш клиент не может отправлять пользовательские заголовки, OmniRoute также предоставляет токенизированные псевдонимы для совместимости:
```txt
Каталог OpenAI: http://localhost:20128/vscode/YOUR_KEY/
Модели OpenAI: http://localhost:20128/vscode/YOUR_KEY/models
Чат OpenAI: http://localhost:20128/vscode/YOUR_KEY/chat/completions
Ответы OpenAI: http://localhost:20128/vscode/YOUR_KEY/responses
Чат Ollama: http://localhost:20128/vscode/YOUR_KEY/api/chat
Теги Ollama: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Используйте их только для клиентов, которые не могут добавлять `Authorization: Bearer ...`. Аутентификация через заголовок остаётся предпочтительным режимом.
## 📦 Другие способы установки — Docker, исходный код, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Тег `:latest` соответствует самой новой **опубликованной** стабильной версии SemVer. Он не отслеживает ветку git `main`. Для GitOps закрепляйте тег `:X.Y.Z`. См. [каналы выпусков Docker](docs/guides/DOCKER_GUIDE.md#release-channels). В образе задано значение **`OMNIROUTE_MEMORY_MB=1024`**. Этого достаточно для панели управления и непродолжительных чатов. **Агенты для программирования** (`POST /v1/responses` из Claude Code, Codex, Grok, …) требуют значительно большего объёма кучи 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 сейчас нет.
pino — структурированные журналы JSON с контекстом запроса
Тестирование
Средство запуска тестов Node.js + Vitest — более 39 000 статических объявлений тестов в более чем 5 100 отслеживаемых файлах тестов (модульные, интеграционные, E2E, тесты безопасности и экосистемы)
Платформы
Настольные системы (Electron) · Android (Termux) · PWA (любой браузер)
CI/CD
GitHub Actions — автоматическая публикация в npm и Docker Hub при выпуске релиза
Стратегия тестового покрытия для более чем 39 000 статических объявлений тестов в более чем 5 100 отслеживаемых файлах тестов
# ⭐ Ведущие участники
> OmniRoute развивается благодаря увлечённому сообществу открытого исходного кода. Эти люди внесли выдающийся вклад, непосредственно повлиявший на качество, стабильность и охват проекта. **Спасибо.**
### Внешние участники по количеству объединённых pull request
Данные зафиксированы на актуальной вершине release/v3.8.50 — dafb4ae808, с учётом слияний по 2026-08-24 05:26:03 UTC. Постраничная статистика GitHub GraphQL включает 5 911 объединённых PR: 2 707 от владельца репозитория, 179 от Dependabot и 3 025 внешних PR от 535 различных участников. «Изменённые строки» — это сумма добавлений и удалений по данным GitHub, включая сгенерированные файлы, файлы блокировки, каталоги, переводы и документацию; это объём изменений, а не количество написанных строк кода. Участники с одинаковыми показателями на границе списка сохранены.
### Коммиты, атрибутированные GitHub
Bob.Hou 🏅 51 коммит, учтённый GitHub · делит 10-е место
Xiangzhe 🏅 51 коммит, учтённый GitHub · делит 10-е место
Повторно проверено 2026-08-24 06:14:31 UTC: коммиты, учтённые GitHub и представленные API участников репозитория для ветки release/v3.8.50, используемой по умолчанию. API вернул 525 идентификаторов (415 пользователей, 2 бота и 108 анонимных участников); из этой таблицы исключены сопровождающий проекта, боты и анонимные участники, а одинаковые места сохранены. Этот рейтинг отличается как от приведённого выше рейтинга по объединённым PR, так и от приведённой ниже переписи 639 участников на основе метаданных Git.
> 🙏 Функции, исправления ошибок и улучшения инфраструктуры, созданные этими участниками, — **неотъемлемая часть** того, что делает OmniRoute надёжным и многофункциональным. Каждый запрос на включение изменений, каждый тестовый сценарий и каждый файл перевода i18n имеют значение. Открытый исходный код создаётся такими людьми, как они.
---
## 💖 Спонсоры
Огромное спасибо людям, которые финансируют OmniRoute из собственного кармана — каждый вклад помогает проекту оставаться бесплатным, независимым и продолжать развиваться.
… и другие, предпочитающие сохранять конфиденциальность 💛Публичные спонсоры GitHub были повторно проверены 2026-08-24. Статус GitHub activeOnly определяет указанные выше активные категории; мы по-прежнему благодарим ранее объявленных публичных разовых спонсоров, а частные спонсоры остаются анонимными.💖 Стать спонсором → — каждый доллар помогает OmniRoute оставаться бесплатным и независимым.
## 👥 Более 600 участников
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Аудит проведён 2026-08-24 на зафиксированной базе ac02c5b42f, а повторная проверка — на актуальной вершине release/v3.8.50dafb4ae808: 639 нормализованных Git-идентификаторов людей — 407 указаны как авторы коммитов (включая сопровождающего проекта), а 232 встречаются только в явных трейлерах Co-authored-by. При подсчёте нормализуются идентификаторы GitHub noreply, исключаются 26 идентификаторов ботов, агентов, сервисов и заполнителей, а обычные адреса электронной почты не объединяются только на основании совпадения отображаемых имён.
### Как внести вклад
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, указав **base = эта ветка `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)** и порт проекта **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** с Go на TypeScript, а затем каждая из перечисленных ниже подсистем создавалась под влиянием проекта с открытым исходным кодом, который уже реализовал подобную идею. Каждый из них сформировал определённую часть OmniRoute. Так мы выражаем им всем свою благодарность. 🙏
> ⭐ количество звёзд проверено через REST API GitHub 24 августа 2026 года — поставьте звезду этим проектам. Указанные значения являются точным снимком на эту дату и со временем, естественно, изменятся.
### 🧬 Происхождение и шлюз
Шлюз ИИ, чей общедоступный набор данных о ценах используется для синхронизации отслеживания наших затрат, а модель нормализации провайдеров легла в основу нашей маршрутизации.
Исходный код под лицензией MIT, адаптированный во встроенный мост ChatGPT Web → Codex Responses, включая адаптеры браузерных сеансов, фрейминга ответов, учёта использования и веб-поиска.
Шаблоны, перенесённые в восстановление потоков, псевдонимы без рассуждений, резервный веб-поиск, ограничения скользящего окна, редактирование журналов и усиленные процессы запуска.
Его сопоставления моделей 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 — вдохновил нас на удаление комментариев на основе парсера с сохранением строковых, шаблонных и литералов регулярных выражений.
MITM-перехват и анализ трафика между ассистентом для программирования и LLM повлияли на ранние требования к Traffic Inspector. Четыре ранее заимствованных модуля — объединение SSE, нормализация диалогов, маскирование секретов и очистка заголовков — были заменены независимыми реализациями, созданными с нуля на основе общедоступных стандартов протоколов. Два компонента сквозной передачи на уровне хоста (passthrough.ts и _internal/bypass.cjs) остаются внутренними реализациями OmniRoute, классифицированными независимо; они не переписывались в рамках этой замены.
Прозрачная маршрутизация через прокси для отдельных процессов — она вдохновила нашу отказоустойчивую деинициализацию MITM, тайм-ауты бездействия сокетов, атрибуцию процессов через /proc и перехват TPROXY.
### 📚 Данные о моделях, наблюдаемость и пользовательский интерфейс
Тщательно подобранный список библиотек с безопасными настройками по умолчанию, которым мы руководствуемся при выборе средств безопасности (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Его переназначение моделей с учётом учётных записей, проверка путей к исполняемым файлам и логика меток тарифных планов повлияли на среду выполнения Antigravity в OmniRoute.
Выявил интерфейс квот Grok Build; затем OmniRoute независимо проверил и исправил фактический формат передаваемых данных.
## 📄 Лицензия
Лицензия MIT — подробности см. в файле [LICENSE](LICENSE).
---
**[⬆ Вернуться наверх](#-omniroute)** · Создано с ❤️ для сообщества разработчиков ИИ с открытым исходным кодом.
OmniRoute v3.8.52 · Node ≥22.22.2 · Лицензия MIT · omniroute.online