## 💰 ~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?
## 🤝 За підтримки наших друзів з відкритим кодом
> **Хочете приєднатися як друг відкритого коду?** Це компанії, які підтримують відкритий код і допомагають OmniRoute розвиватися — і ми публічно повідомляємо, куди йде кожен токен, який вони нам надають. Зв'яжіться з нами: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Дякуємо Kimi (Moonshot AI), нашому засновнику-другу відкритого коду, за підтримку цього проекту! Kimi — це лабораторія ШІ, що стоїть за відкритими моделями K2 та K3 — Kimi K3 забезпечує контекстне вікно на 1 мільйон токенів, нативне бачення та кодування на передовому рівні за частку ціни закритих моделей, і працює "з коробки" з Claude Code, Codex та всіма інструментами кодування, які підтримує OmniRoute.
Що підтримує Kimi: Кредити API Kimi забезпечують конвеєр випуску OmniRoute, перевірений ШІ — етап перевірки злиття за допомогою Kimi K3, який перевіряє кожен запит на злиття перед його відправкою — а також щоденну розробку функцій. Першокласна підтримка Kimi доступна на обох шляхах: прямий Kimi API (kimi-k3) та план кодування Kimi Code (OAuth та ключ API). OmniRoute також є першим бразильським проектом з відкритим кодом у програмі підтримки Kimi. Отримайте ключ API Kimi з 15% додаткових кредитів →
Cheaper Inference cheaperinference.com
Дякуємо Cheaper Inference, другу відкритого коду OmniRoute, за підтримку цього проекту! Cheaper Inference — це шлюз з рейтингом вартості, який перепродає 42 передові моделі — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok та MiniMax — за однією сумісною з OpenAI кінцевою точкою, маршрутизуючи кожен запит до найдешевшого відповідного провайдера, ніколи не стягуючи плату вище прейскурантної ціни виробника моделі.
Першокласна підтримка в OmniRoute: Chat Completions, нативна кінцева точка /v1/responses, бачення, виклик інструментів та 3 моделі зображень (grok-imagine, nano-banana-pro, nano-banana-2, доступні як cheaperinference/<model>). Отримайте ключ API →
Посилання, позначені aff=omniroute, є партнерськими. Вони фінансують проект без додаткових витрат для вас. 🎟️ Партнерська акція — безкоштовні купони на реєстрацію від провайдерів, яких ми не спонсоруємо (натисніть, щоб розгорнути)Цей розділ призначений лише для реферальних/купонних кодів. Спонсорські партнерства знаходяться вище в розділі 🤝 За підтримки наших друзів з відкритим кодом. OmniRoute не має спонсорства чи партнерства з провайдерами, переліченими тут — це публічні купони, які може використовувати кожен.
AgentRouter agentrouter.org
AgentRouter — партнерська реєстрація · $100 безкоштовних кредитів при реєстрації (безкоштовний сервер, очікуйте вищу затримку — найкраще для тестування, не для виробництва). Першокласна підтримка в OmniRoute з v3.8.50: Chat Completions, сумісний з Anthropic формат дроту та сумісний з OpenAI шлях. Доступні моделі включають claude-opus-4-8, claude-opus-5, gpt-5.6-sol та інші. Отримайте свої $100 →
⚠️ Партнерське посилання — OmniRoute не має спонсорства чи партнерства з цим провайдером.
Знаєте іншого провайдера з щедрим безкоштовним купоном на реєстрацію, який приносить користь користувачам OmniRoute? Відкрийте issue, і ми додамо його сюди.
## 🎯 Комбінації — флагманська функція
> **Комбінація** — це ланцюжок моделей, між якими OmniRoute маршрутизує запити **автоматично**. Якщо квоту вичерпано, постачальник дає збій або витрати різко зростають, комбінація може перейти до наступної доступної справної моделі. 🛡️
### ⚡ Без налаштування — просто використовуйте `auto`
Не потрібно створювати комбінацію. Укажіть `auto` (або один із варіантів) як модель, і OmniRoute побудує віртуальну комбінацію з підключених постачальників, оцінюючи їх у реальному часі:
Ідентифікатор моделі
Що оптимізує
auto
🎯 Збалансований варіант за замовчуванням (LKGP — продовжує використовувати останнього справного постачальника)
auto/coding
🧑💻 Ваги з пріоритетом якості для генерування коду
auto/fast
⚡ Спочатку варіанти з найнижчою затримкою
auto/cheap
💰 Спочатку варіанти з найнижчою вартістю токена
auto/subscription
🎟️ Лише квота передплати, за яку ви вже платите — закрите завершення в разі збою, без переходу до тарифікованого резервного варіанта (посібник)
auto/thrifty
🪜 Спочатку квота тарифного плану, а потім послідовний перехід до найдешевших платних варіантів — повернення до плану після скидання квоти (посібник)
auto/offline
🔋 Спочатку варіанти з найбільшим запасом квоти / обмеження частоти запитів
auto/smart
🔭 Пріоритет якості + 10% на дослідження для пошуку кращих моделей
auto/lkgp
📌 Явне закріплення за останнім відомим справним постачальником
auto/chaos
🧪 Паралельне розгалуження запитів на групу моделей (по одній від кожного постачальника, типово 5) із поверненням однієї відповіді; один виклик вищого рівня на кожну модель групи, а не ін’єкція збоїв
##
### 🔀 Або створіть власну комбінацію — 20 стратегій маршрутизації
Усі **20** стратегій — комбінуйте їх на кожному кроці комбінації:
#
Стратегія
Як вона працює
1
priority
Упорядкований список із пріоритетом першої цілі — повністю використати кожну, перш ніж перейти до наступної 🥇
2
fill-first
Повністю використати квоту кожної цілі, перш ніж переходити далі
3
weighted
Зважений випадковий вибір відповідно до ваги кожної цілі
4
round-robin
Циклічний послідовний перебір цілей
5
p2c
Випадкове балансування навантаження за методом вибору з двох варіантів
6
least-used
Вибір цілі з найменшим поточним навантаженням
7
random
Рівномірний випадковий вибір (без дублікатів)
8
strict-random
Випадковий вибір без усунення повторень 🎲
9
cost-optimized
Мінімізація вартості запиту в $ на основі актуальних цін каталогу 💸
10
headroom
Вибір цілі з найбільшою залишковою квотою
11
quota-weighted
Пропуск облікових записів із вичерпаною квотою, а потім вибір пропорційно до залишкової квоти ÷ поточного навантаження — наявні розмови залишаються закріпленими ⚖️
12
reset-window
Перевага цілі, вікно квоти якої буде скинуто найшвидше
13
reset-aware
Ранжування за часом скидання квоти — спочатку короткі вікна 📊
14
context-relay
Передавання контексту між цілями для довгих розмов 🧠
15
context-optimized
Вибір найкращої відповідності поточному розміру контексту
16
cache-optimized
Закріплення кожного повторно використовуваного префікса запиту за тим самим обліковим записом — для максимальної кількості влучань у кеш запитів 🎯
17
lkgp
Останній відомий справний шлях — закріплення за останнім успішним постачальником із подальшим резервним переходом за правилами
18
auto
Оцінювання за 16 чинниками в реальному часі для кожного підключення 🤖
19
fusion
Розгалуження запитів на групу моделей + модель-суддя синтезує одну відповідь 🧬
20
pipeline
Ланцюжок кроків — вихідні дані кожної цілі передаються наступній 🔗
Рушій Auto-Combo оцінює кожного кандидата за **16 факторами** (стан, квота, вартість, затримка, відповідність завданню, якість, доступність сесії…) — див. [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Відмовостійкість вбудована (3 незалежні рівні)
📖 [Рушій Auto-Combo](docs/routing/AUTO-COMBO.md) · [Посібник із відмовостійкості](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Що вирізняє OmniRoute
📊 Повна методологія та докладне порівняння кожної функції з 9router, OpenRouter, CLIProxyAPI і LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Підтримайте OmniRoute
OmniRoute розповсюджується за ліцензією MIT і підтримується відкрито. Якщо він заощаджує ваш час або гроші, ось як можна допомогти йому залишатися незалежним — оберіть зручний для вас спосіб. Спонсорство ніколи не впливає на пріоритет маршрутизації; воно дає видимість, а не вищу позицію в рейтингу.
⭐ Поставте зірку репозиторію
Безкоштовно — це справді допомагає підвищити видимість
**🇧🇷 PIX** — миттєво, без комісій (Бразилія)
Ключ (випадковий): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix 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 Radar
Основний показник безкоштовного рівня залишається на рівні **~1,62 млрд токенів/місяць** згідно з наведеним вище задокументованим каталогом із дедуплікацією пулів. Тимчасові кредити за реєстрацію в постачальників можуть окремо збільшити обсяг у першому місяці до **~2,22 млрд**. Radar — це необов’язкове підписане доповнення до каталогу для тих, хто хоче отримувати актуальніші дані про доступність безкоштовних моделей між випусками OmniRoute; каталог спільноти та всі наявні безкоштовні функції залишаються безкоштовними.
Прихильники можуть отримувати актуальний каталог і додаткові пропозиції від постачальників. Його окрема змінна верхня межа становить **щонайбільше приблизно 3 млрд токенів/місяць** залежно від доступності постачальників. Ця верхня межа не є гарантією: постачальники можуть будь-коли змінювати квоти, критерії відповідності, моделі або регіони.
Radar використовується за бажанням і лише через GET-запити. Клієнт OmniRoute не передає запити, трафік, конфігурацію постачальників, телеметрію використання або локальний стан приховування оголошень. Дізнайтеся про критерії відповідності та поточний каталог на сторінці **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Що нового
> Останні важливі зміни з **v3.8.20 → v3.8.53**. Повна історія в [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Маршрутизація `quota-weighted`** — 20-та стратегія комбо пропускає вичерпані акаунти, а потім обирає серед решти пропорційно до залишкової квоти ÷ поточного навантаження, зберігаючи наявні розмови закріпленими. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Безголовий режим** — `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 + китайської (wényán), фільтри RTK для Gradle і .NET. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Чесна фіксована вартість** — провайдери з підпискою / планом для кодування показують **$0** в аналітиці витрат; бюджет, квота й маршрутизація продовжують оцінювати. → [API Reference](docs/reference/API_REFERENCE.md)
- **⚖️ Маршрутизація Quota-Share** — справедливо розподіляє квоту спільного акаунта між ключами з пулу, працюючи без простоїв (work-conserving), тож незадіяні частки позичаються. → [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)
- **🛡️ Безпека** — захист від ін'єкцій підказок на кожному маршруті 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` + фактор 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 vault (22 MCP-інструменти), OpenAI-сумісні Batch & Files API, семантичний кеш відповідей, гейміфікація з таблицями лідерів, виявлення ACP-агентів (15 вбудованих агентів), запланований експорт логів до BigQuery, паралельний багатомодельний fan-out `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 зареєстрованих провайдерів** у канонічних колекціях chat, media, search, local, cloud-agent і system, зокрема **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 Безкоштовно назавжди
📖 Повний машинозчитуваний каталог → [`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% токенів — автоматично
### 📖 Як це працює — pipeline, архітектура та математика економії
Типовий стековий комбо запускає `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 і структуровані дані **завжди захищені** двигуном збереження.
> **Навіщо використовувати багато токенів, коли кілька токенів вирішують задачу?** Кожен запит проходить через pipeline стиснення 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 двигунів
Двигуни запускаються в порядку pipeline; кожен незалежно вмикається та налаштовується для кожного комбо:
#
Двигун
Що він робить
1
Session-Dedup
Відкидає вміст, що повторюється між ходами (адресований за вмістом, між ходами)
2
CCR
Архівує великі блоки за маркерами отримання, які завантажуються на вимогу
3
Lite
Обрізання пробілів + URL-адрес зображень (базова лінія з малою затримкою)
4
RTK
Розумна фільтрація результатів інструментів, дедуплікація та обрізання (з урахуванням команд)
5
Responses Tool Output
JSON без втрат у першу чергу + обмежена діагностична компресія для виводу shell/patch/search/build (Responses API)
6
Headroom
Стиснення табличних JSON-масивів без втрат (~30%) через вбудований кодек GCF
7
Relevance
Екстрактивне оцінювання речень відносно останнього запиту користувача
8
Caveman
Компресія прози на основі правил (~65–75% на виході)
9
Aggressive
Підсумовування + прогресивне старіння старих ходів
10
LLMLingua-2
ML-семантичне обрізання через MobileBERT ONNX — безпечне для коду, асинхронне
11
Ultra
Евристичне обрізання токенів з опціональним рівнем малої моделі (SLM)
12
OmniGlyph
Експериментальне кодування контексту як зображення для виміряного Claude Fable 5 у прямому каналі Anthropic; трансформери GPT 5.6 залишаються fail-closed в очікуванні квитанцій від провайдера. Чотири профілі компресії (агресивний за замовчуванням, збалансований, безпечний для коду, наскрізний) (найагресивніший; за бажанням)
Блоки коду, URL-адреси та структуровані дані **завжди зберігаються** байт-у-байт. **Попередні налаштування в один клік** комбінують двигуни:
Режим
Економія
Найкраще для
🪶 Lite
~15%
Безпечне типове значення, завжди ввімкнене
🪨 Standard (Caveman)
~30%
Щоденне кодування
⚡ Aggressive
~50%
Довгі сесії з інтенсивним використанням інструментів
🔥 Ultra
~75%
Максимальна економія
🧰 RTK
60–90%
Вивід shell/test/build/git
🔗 Stacked (RTK → Caveman)
78–95%
Змішані запити + логи інструментів
**Реальний приклад — режим Standard:**
> **До (69 токенів):** _"Причина, чому ваш React-компонент повторно рендериться, ймовірно, полягає в тому, що ви створюєте нове посилання на об'єкт у кожному циклі рендерингу. Коли ви передаєте вбудований об'єкт як проп, поверхневе порівняння 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` або попередження про однорангові залежності? [Вони нешкідливі](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) Підключіть відповідного постачальника за допомогою власного облікового запису**
Панель керування → **Постачальники** → виберіть постачальника, поточні умови та квота якого відповідають вашому сценарію використання → додайте його ключ 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
# Використання Nix flakes
nix develop
npm run dev
# Або використання devbox
devbox run npm run dev
```
📖 [Посібник із Docker](docs/guides/DOCKER_GUIDE.md) — профілі Compose, Caddy HTTPS, тунелі Cloudflare.
**🦭 Podman**
```bash
# 1. Підготуйте каталог даних для монтування через bind mount
mkdir -p data
# 2. Лише Linux + локальний rootless Podman (ніколи не віддалений клієнт Podman Machine):
podman unshare chown 1000:1000 ./data
# 3. Установіть підказку середовища виконання, зберіть локальний образ Compose і запустіть
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
У macOS або Windows Podman використовує віддалену Podman Machine: пропустіть `podman unshare` і
дотримуйтеся [рекомендацій щодо каталогу даних для відповідної топології](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Посібник із Podman](contrib/podman/README.md) — збірки Compose, Podman Machine і
налаштування Quadlet для Linux/systemd.
**⚡ Швидше / компактніше встановлення (без нативної збірки)**
Нативний рушій SQLite (`better-sqlite3`) є **необов’язковою** залежністю, тому глобальне
встановлення ніколи не блокується через компіляцію з вихідного коду: воно використовує попередньо зібраний бінарний файл, якщо він відповідає
вашій платформі/Node, а в іншому разі прозоро переходить на рушій на чистому JS
(`node:sqlite` у Node 22+, інакше — вбудований 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, за даними API Contributors репозиторію для гілки за замовчуванням release/v3.8.52. API повернув 849 ідентичностей (429 користувачів, 2 боти, 418 анонімних); ця таблиця виключає супровідника, ботів та анонімні ідентичності й зберігає нічиї в рейтингу. Вона відрізняється як від наведеного вище рейтингу за злитими PR, так і від перепису за Git-метаданими нижче.
> 🙏 Функції, виправлення помилок та інфраструктурні покращення цих контриб'юторів — це **важлива частина** того, що робить OmniRoute надійним і багатофункціональним. Кожен pull request, кожен тестовий випадок і кожен файл перекладу i18n має значення. Відкритий код створюють люди, подібні до них.
---
## 💖 Спонсори
Щиро дякуємо людям, які фінансують OmniRoute із власної кишені — кожен внесок допомагає проєкту залишатися безкоштовним, незалежним і розвиватися.
… та інші, які воліють зберігати конфіденційність 💛Публічних спонсорів 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.52ad160ab2d1 (6 826 комітів): 993 нормалізовані людські ідентичності Git — 707 зазначені як автори комітів (включно із супроводжувачем), а 286 — лише в явних завершальних рядках Co-authored-by. Під час підрахунку застосовується .mailmap, адреси електронної пошти порівнюються без урахування регістру, числові та звичайні адреси GitHub noreply об’єднуються лише тоді, коли вони кодують однаковий нікнейм, виключаються 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 із **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)** і TypeScript-порт Go-проєкту **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**, а відтоді кожна наведена нижче підсистема надихалася проєктом із відкритим вихідним кодом, який проклав цей шлях раніше. Кожен із них сформував певну частину OmniRoute. Так ми дякуємо їм усім. 🙏
> ⭐ кількість зірок перевірено через REST API GitHub 18 жовтня 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 з автентифікацією через cookie та патерн потокового передавання result.response.token стали основою для транспорту Grok Web в OmniRoute.
Під час створення оригінальної реалізації Grok Web враховувалася його архітектура висхідного HTTP/браузерного з’єднання; прямий HTTP-шлях походить від GrokProxy, тому про незалежне перенесення коду не заявляється.
Вірусний проєкт «навіщо використовувати багато токенів, коли мало токенів роблять справу» — його філософія печерної мови лежить в основі нашого стандартного режиму стиснення та понад 30 правил видалення слів-паразитів і ущільнення.
Високопродуктивне стиснення виводу команд — надихнуло нас на рушій RTK, DSL для фільтрації JSON, відновлення необробленого виводу та послідовний конвеєр RTK → Caveman.
Дослідження стиснення промптів (LLMLingua / LLMLingua-2) — надихнуло нас на асинхронний, безпечний для коду рушій llmlingua із безпечним пропуском у разі збою.
Стиснення токенів pt-BR — забезпечує роботу нашого мовного пакета pt-BR: скорочення плеоназмів і видалення слів-паразитів, налаштовані для бразильсько-португальської граматики.
Вірусна навичка YAGNI-програміста «лінивий старший розробник» — надихнула нас на стиль виводу less-code: спрямування до найменшої працездатної зміни, що скорочує _згенерований_ код (аналог лаконічної прози Caveman для осі виводу).
Контекстно-залежне стиснення виводу для кожного типу файлу з виходом у разі збою — підтвердило наш підхід із диспетчеризацією за типом і пропуском за недостатнього виграшу.
Стовпцевий JSON на Rust + адресоване за вмістом отримання + дедуплікація між повідомленнями — підтвердили дизайн наших рушіїв headroom/ccr/session-dedup та стабільний для кешу інваріант «стиснена форма не залежить від позиції».
Інструментарій TypeScript Compiler API — надихнув нас на видалення коментарів за допомогою парсера зі збереженням рядкових, шаблонних і regex-літералів.
Перехоплення й аналіз трафіку між асистентом програмування та LLM за допомогою MITM стали основою ранніх вимог до інспектора трафіку. Чотири раніше похідні модулі — об’єднання 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)** · Створено з ❤️ для спільноти AI з відкритим кодом.
OmniRoute v3.8.53 · Node ≥22.22.2 · Ліцензія MIT · omniroute.online