## 💰 ~1.62B токенів / місяць у безкоштовних тарифах сторонніх провайдерів
> **Використовуйте власні облікові записи провайдерів.** Це орієнтовний сукупний показник для окремих безкоштовних тарифів сторонніх провайдерів, які відповідають вимогам, а не грант токенів від OmniRoute. Зареєструйтеся, отримайте облікові дані, де це потрібно, і підключіть доступних вам провайдерів; кожен провайдер самостійно визначає свої ліміти, доступність і умови.
>
> Вручну поєднувати безкоштовні тарифи складно — десятки SDK, десятки обмежень швидкості й жодного розуміння, скільки ресурсів у вас насправді є. OmniRoute каталогізує **465 записів безкоштовних тарифів за 34 ключами періодичних пулів** і обчислює заголовкове значення токенів на основі **17 пулів із опублікованим позитивним місячним бюджетом, а також п’яти обмежень Groq для окремих моделей**, дедуплікованих за спільним пулом. Квоти, які стають доступними лише після регіональної перевірки особи (сьогодні: ModelScope), показуються окремо: +~6M після регіональної перевірки особи, і ніколи не додаються до заголовкового значення. Результат і надалі доступний на інформаційній панелі (`/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 з 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.54**. Повна історія — у [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Маршрутизація `quota-weighted`** — 20-та стратегія-комбінація пропускає вичерпані облікові записи, а потім обирає серед решти пропорційно до залишкової квоти ÷ навантаження запитами в обробці, зберігаючи прив’язку наявних діалогів. → [Автоматичні комбінації](docs/routing/AUTO-COMBO.md)
- **🧰 Безголовий режим** — `omniroute serve --headless` (або `OMNIROUTE_HEADLESS=1`) запускає лише проксі-рушій `/v1/*`, вимикаючи панель керування та підсистеми, призначені лише для панелі. → [Безголовий режим](docs/guides/HEADLESS.md)
- **🔎 Виявлення моделей** — `/v1/models` фільтрує моделі за можливостями, контекстом, типом і текстом, а `POST /v1/models/query` повертає короткий детермінований список із тією самою видимістю для кожного ключа. → [Довідник API](docs/reference/API_REFERENCE.md)
- **🔑 Керування маршрутизацією для кожного ключа** — закріплюйте ключ API за однією моделлю або комбінацією за допомогою `forcedModel`, а також атомарно додавайте чи видаляйте моделі та комбінації ключа (`/api/keys/{id}/access`). → [Довідник API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Точніший контроль PII** — вибір за типом, до 20 перевірених власних шаблонів маскування та лічильники виявлення для кожного типу; саме маскування залишається опційним. → [Захисні механізми](docs/security/GUARDRAILS.md)
- **🌍 67 мов** — панель керування, дзеркала документації та CLI, причому `npm run i18n:add-locale` додає мову всюди однією командою. → [Посібник з i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — вхідна делегація A2A до вашого флоту агентів, навички Conductor у картці агента та панель у dashboard із голосовим чатом Faro push-to-talk. → [Сервер A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Адаптивний допуск і захист від перевантаження** — ресурсоємні запити чату стають у чергу замість відповіді 503, з атомарними ковзними орендами RPM для кожного з’єднання. → [Посібник із відмовостійкості](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Канонічне впорядкування `/v1/models`** — один суцільний блок моделей, згрупованих за провайдером, для кожного провайдера (комбінації закріплено першими), стабільний у всіх джерелах каталогу. → [Довідник API](docs/reference/API_REFERENCE.md)
- **🗜️ Посилене стиснення** — захист від розгортання за замовчуванням, пакети Caveman для DE / FR / JA і китайської (wényán), фільтри RTK для Gradle і .NET. → [Стиснення](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Чесна фіксована вартість** — провайдери підписок і планів для програмування відображаються як **$0** в аналітиці витрат; бюджет, квота та маршрутизація продовжують використовувати оцінки. → [Довідник API](docs/reference/API_REFERENCE.md)
- **⚖️ Маршрутизація Quota-Share** — справедливо розподіляє квоту спільного облікового запису між ключами пулу, ефективно використовуючи ресурси, щоб невикористані частки позичалися іншим. → [Посібник із відмовостійкості](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Налаштування CLI/агентів однією командою** — 15 зареєстрованих команд `setup-*`; `omniroute run` запускає 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` підтримує 11 цільових систем з інтерактивним вибором провайдера й моделі та обраними параметрами для кожного контексту. → [Інтеграції CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Віддалений режим** — керування віддаленим OmniRoute за допомогою токенів із визначеною областю дії (`connect` / `contexts` / `tokens`) і помічника OAuth `antigravity` для встановлень на VPS. → [Віддалений режим](docs/guides/REMOTE-MODE.md)
- **🧭 Розумніша автоматична маршрутизація** — комбінації `auto/:`, **Fusion** (панель моделей + суддя), маршрутизація з урахуванням завдань, перевизначення моделі / режиму / бюджету в USD для кожного запиту. → [Автоматичні комбінації](docs/routing/AUTO-COMBO.md)
- **🗜️ Підключне стиснення** — 12 комбінованих рушіїв + Compression Studios: LLMLingua-2, дворівневий Ultra, omniglyph, перевірка точності на кожному кроці, GCF v3.2, редактор із перетягуванням для зміни порядку. → [Стиснення](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Прозоре розшифрування MITM (TPROXY)** — CLI для перехоплення програм, які ігнорують змінні середовища проксі, із засобом встановлення CA для кожного SNI та сховища довіри. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Телеметрія витрат усюди** — заголовки витрат/використання `X-OmniRoute-*` для кожної кінцевої точки, заголовок економії завдяки влучанню в кеш і квоти витрат у USD для кожного ключа. → [Довідник API](docs/reference/API_REFERENCE.md)
- **🧠 Пам’ять під вашим контролем** — за замовчуванням вимкнена, підтримує опційне int8-квантування векторів і типізоване згасання, а також `x-omniroute-no-memory` для кожного запиту. → [Пам’ять](docs/frameworks/MEMORY.md)
- **🛡️ Безпека** — захист від ін’єкцій у промпти для кожного маршруту LLM (набір red-team тестів), опційний захист із маскуванням облікових даних (маскує витік API-ключів/секретів в обох напрямках), безкоштовний вебпошук DuckDuckGo як крайній захід і опційний шлюз входу OIDC для dashboard (вхід за паролем завжди доступний). → [Захисні механізми](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… і оновлений **каталог із 388 провайдера**. → [Провайдери](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Прозорість маршрутизації** — кожна відповідь містить заголовок `X-OmniRoute-Decision` із назвою стратегії/провайдера/затримки, які її обробили; нова стратегія комбінацій `cache-optimized` і фактор маршруту `cacheAffinity` в Auto-Combo спрямовують повторні запити до з’єднання, що містить кешований префікс; кінцева точка лише для читання `/v1/auto-combo/{channel}/candidates` показує актуальний пул кандидатів каналу `auto/*`. → [Автоматичні комбінації](docs/routing/AUTO-COMBO.md).
- **⚡ Локальна продуктивність та інфраструктура** — локальний Redis в один клік, засоби розгортання ретрансляторів Cloudflare Workers / Deno Deploy, Bifrost і Mux як контрольовані вбудовані служби. → [Вбудовані служби](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Також у комплекті** — фреймворк плагінів і маркетплейс, фреймворки навичок Omni/Agent/GitHub, інтеграція зі сховищем Obsidian (22 інструменти MCP), сумісні з OpenAI API пакетні API та API файлів, семантичний кеш відповідей, гейміфікація з таблицями лідерів, виявлення агентів ACP (15 вбудованих агентів), запланований експорт журналів до BigQuery, паралельне розгалуження на кілька моделей `auto/chaos`, міст для бота Telegram, менеджер версій у застосунку та рейтинги безкоштовних провайдерів LMArena-ELO. → [Документація](docs/README.md)
## 🤖 Сумісні CLI та агенти для кодування
> Одна конфігурація — `http://localhost:20128/v1` — і **кожен** AI IDE або CLI працює на безкоштовних і недорогих моделях.
+ також працює з · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · будь-яким інструментом, сумісним з OpenAI
📖 Налаштування для кожного з 39 інструментів (28 CLI Code's + 11 CLI Agents) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Плагін OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Запускайте будь-який підтримуваний CLI через OmniRoute однією командою** — жодних конфігураційних файлів,
облікові дані підставляються для кожного процесу, Qwen/Gemini отримують ізольований тимчасовий home:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Або виберіть провайдера+модель інтерактивно та запишіть власний конфіг інструменту:
omniroute configure codex # також: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Кожна команда враховує активний віддалений контекст (`omniroute connect `), `--dry-run`
показує точне оточення/аргументи без виконання, а `--api-key-env NAME` не дозволяє секретам потрапити
в історію вашої shell. → [Інтеграції CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 388 провайдерів AI — 153 позначені каталогом як безкоштовні
> **388 зареєстрований провайдер** у канонічних колекціях чатів, медіа, пошуку, локальних, хмарних агентів і систем, зокрема **153 провайдери з метаданими виявлення `hasFree: true`**. Реєстр чат-моделей охоплює **239 провайдерів / 3 059 унікальних пар провайдер-модель / 1 475 ідентифікаторів необроблених моделей**; окремий каталог безкоштовних бюджетів містить **471 рядок для окремих моделей**, **34 періодичні пули** та **52 провайдери з регулярним або без ключа безкоштовним доступом назавжди**. Це навмисно різні знаменники; визначення та розрахунки з дедуплікацією пулів наведено в [Довіднику провайдерів](docs/reference/PROVIDER_REFERENCE.md) і [Безкоштовних тарифах](docs/reference/FREE_TIERS.md).
### 🏢 Усі провідні лабораторії — через одну кінцеву точку
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…і ще понад 350 — кожна іконка в реальному часі завантажується з каталогу провайдерів інформаційної панелі. 📖 [Довідник провайдерів](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Безкоштовно назавжди — $0, без картки
OpenCode Zen DeepSeek V4, Nemotron 3 Без обмеження кількості токенів
Kilo Code Автомаршрутизація, Tencent Hy3 Назавжди безкоштовно
### 🧩 Нове: OmniRoute у рідному чаті Copilot коду VS
> Ні нової бічної панелі, ні нового чату UI — кожна модель, яку обслуговує OmniRoute відображається прямо в** засіб вибору моделі чату Copilot який ви вже використовуєте** . Починаючи з коду VS 1.122, моделі провайдерів працюють без входу в систему GitHub або підписки на Copilot — режим агента, виклик інструментів і візія безкоштовно.
Встановіть** [OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** розширення, наведіть його на свій сервер OmniRoute (за замовчуванням `localhost:20128`), а потім відкрийте Copilot Chat → вибір моделі →** Керувати моделями…** →**OmniRoute** .
Зсередини редактора: відкрийте** Розширення** перегляд, пошук** "OmniRoute"** , натисніть** встановити** — працює однаково в обох магазинах. Джерело, випуски та збірник публікацій доступні на [diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [VS Код Copilot Посібник із чату](docs/guides/VSCODE-COPILOT.md) — налаштування, що показує засіб вибору, інформаційна панель у вкладці, усунення несправностей
### 🎩 Нове: OmniRouteTray — ваш шлюз, розташований у рядку меню
> `omniroute serve` найщасливіший, коли він завжди ввімкнений.** [OmniRouteTray](https://github.com/zoispag/omniroute-tray)** перетворює це на програму панелі меню «встановити та забути» для macOS: він запускає сервер, підтримує його роботу під час перезавантаження, оновлює його на місці та розміщує ваш живий бюджет маркерів одним клацанням миші —** немає відкритого вікна терміналу, немає `npm install -g omniroute` для няні.**
Створений з [Tauri v2](https://v2.tauri.app/) (ядро Rust розміром з помилку округлення), він постачає власне підписане середовище виконання Node 24 і керує встановленням OmniRoute що належить додатку, тому ніколи не бореться з вашим глобальним `node`/`bun`. Це** ділиться наявною конфігурацією та базою даних `~/.omniroute/`** — отже, це той самий OmniRoute, який ви вже бігаєте, тільки в капелюсі. 🎩
Що він робить
Як
🟢 Контролює сервер
Створює omniroute serve , приймає вже запущений екземпляр замість його дублювання
📊 Короткий огляд використання в реальному часі
Смуги квот постачальника, Claude session/weekly обмеження зі зворотним відліком скидання, розподіл витрат за 30 днів
🔄 Автоматичні оновлення на місці
Поетапне встановлення, атомарна заміна, відкат у разі помилки — завжди на найновішій версії
🚀 Запуск під час входу
Додатковий запуск під час входу; лише трей, без значка док-станції
🩺 Доктор & журнали
Діагностика в один клік і доступ до журналу сервера
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Бажаєте завантажити? Завантажте останню версію .dmg із
Випускає . Джерело, проблеми та збірка
документи живуть на zoispag/omniroute-tray.
💛 Проект спільноти @zoispag — не офіційний випуск OmniRoute.
> Окрім сервера, OmniRoute — це **повноцінний центр керування з командного рядка** з **понад 80 командами**, а також відкритими агентними протоколами, завдяки яким ШІ-агент може керувати ним **самостійно**.
### ⌨️ Справжній CLI (а не лише `start`)
```bash
omniroute # запустити шлюз і панель керування (порт 20128)
omniroute chat # інтерактивний чат-клієнт TUI (команди: /model /combo /skill /memory)
omniroute setup # покроковий майстер першого запуску
omniroute doctor # діагностика провайдерів, портів і нативних залежностей
```
### 🛰️ Віддалений режим — запускайте CLI тут, а OmniRoute — на VPS
OmniRoute працює на сервері? Керуйте ним із ноутбука за допомогою **того самого CLI**. Один раз увійдіть
за допомогою токена доступу з визначеною областю дії — після цього кожна команда буде спрямована на віддалений сервер.
```bash
omniroute connect 192.168.0.15 # пароль → токен з областю дії, збережений як контекст
omniroute models # ← виконується на ВІДДАЛЕНОМУ сервері
omniroute configure codex # ← вибирає віддалену модель і записує локальний профіль Codex
omniroute tokens create --name ci --scope read # створює токени з вужчими правами для інших машин
omniroute contexts use default # ← повернення до локального сервера
```
Токени мають області дії `read` / `write` / `admin`; маршрути, що запускають процеси, залишаються доступними лише через loopback.
📖 [Віддалений режим](docs/guides/REMOTE-MODE.md)
### 🤝 Підключіть агента — і він сам керуватиме OmniRoute
Надайте доступ до OmniRoute через **MCP**, **A2A**, **REST API**, **вебхуки** або **віддалений CLI** — будь-який сумісний агент (або ваш власний код) отримає ключі до всього шлюзу: маршрутизації, провайдерів, комбінацій, кешу, стиснення та пам’яті — і керуватиме ними автономно. Наведені нижче HTTP-ендпойнти доступні за адресою `http://localhost:20128`.
Інтерфейс
Ендпойнт / команда
Для чого використовувати
🧰 MCP (stdio)
omniroute --mcp
Підключення до Claude Desktop, Cursor або будь-якого клієнта MCP
🌊 MCP (HTTP)
/api/mcp/stream
Віддалений MCP — 110 інструментів, 33 області дії (примусове застосування вмикається окремо), повний журнал аудиту
📡 MCP (SSE)
/api/mcp/sse
Потоковий транспорт MCP
🤝 A2A
/.well-known/agent.json
Взаємодія між агентами, JSON-RPC 2.0 + SSE, 6 навичок
🌐 REST API
/v1/*
Сумісний з OpenAI — чат, векторні представлення, зображення, аудіо, OCR
🔔 Вебхуки
/api/webhooks
Надсилання подій запитів / квот у Slack, Discord, Telegram або на будь-яку URL-адресу
🛰️ Віддалений CLI
omniroute connect
Керування віддаленим екземпляром за допомогою токенів доступу з визначеними областями дії
```bash
# Надайте Claude Code повний набір інструментів OmniRoute через MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Сервер MCP](docs/frameworks/MCP-SERVER.md) · [Сервер A2A](docs/frameworks/A2A-SERVER.md) · [Агентні протоколи](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Автоматично заощаджуйте 15–95% токенів
### 📖 Як це працює — конвеєр, архітектура та розрахунок заощаджень
Стандартний послідовний набір запускає `RTK → Caveman`. Коли обидва рушії діють на той самий інструментальний/контекстний пакет даних, заощадження сумуються:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Блоки коду, URL-адреси, JSON і структуровані дані **завжди захищені** рушієм збереження.
> **Навіщо використовувати багато токенів, якщо достатньо кількох?** Кожен запит **прозоро** проходить через конвеєр стиснення OmniRoute — без змін на стороні клієнта. Тепер це **набір із 12 комбінованих рушіїв**, які запускаються послідовно та довільно комбінуються для кожного маршруту — на основі ідей з [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ понад 90K), [LLMLingua-2](https://github.com/microsoft/LLMLingua) та [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 Набір із 12 рушіїв
Рушії запускаються в порядку конвеєра; кожен можна незалежно вмикати, вимикати та налаштовувати для кожної комбінації:
#
Рушій
Що він робить
1
Session-Dedup
Видаляє вміст, що повторюється між ходами (адресація за вмістом, між ходами)
2
CCR
Архівує великі блоки за маркерами отримання, які завантажуються на вимогу
3
Lite
Обрізання пробілів і URL-адрес зображень (базовий режим із низькою затримкою)
4
RTK
Інтелектуальна фільтрація результатів інструментів, усунення дублікатів і скорочення (з урахуванням команд)
5
Responses Tool Output
Стиснення JSON із пріоритетом безвтратності та обмежене діагностичне стиснення результатів 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 залишаються в режимі безпечної відмови до отримання підтверджень від провайдера. Чотири профілі стиснення (агресивний за замовчуванням, збалансований, безпечний для коду, наскрізний) (найагресивніший; вмикається окремо)
Блоки коду, URL-адреси та структуровані дані **завжди зберігаються побайтно**. **Підготовлені набори в один клік** комбінують рушії:
Режим
Заощадження
Найкраще підходить для
🪶 Lite
~15%
Безпечний режим за замовчуванням, який завжди активний
🪨 Standard (Caveman)
~30%
Щоденної роботи з кодом
⚡ Aggressive
~50%
Тривалих сесій із великою кількістю інструментів
🔥 Ultra
~75%
Максимального заощадження
🧰 RTK
60–90%
Виводу shell/test/build/git
🔗 Stacked (RTK → Caveman)
78–95%
Змішаних запитів і журналів інструментів
**Реальний приклад — режим Standard:**
> **До (69 токенів):** _"Ймовірно, причина повторного рендерингу вашого компонента React полягає в тому, що під час кожного циклу рендерингу створюється нове посилання на об’єкт. Коли ви передаєте вбудований об’єкт як prop, поверхневе порівняння React щоразу сприймає його як інший об’єкт, що запускає повторний рендеринг. Рекомендую використовувати useMemo, щоб мемоізувати об’єкт."_
>
> **Після (19 токенів):** _"Нове посилання на об’єкт під час кожного рендерингу. Вбудований об’єкт як prop = нове посилання = повторний рендеринг. Обгорніть у useMemo."_
>
> **Та сама відповідь. На 72% менше токенів. Жодної втрати точності.** ✅
**Приклад PT-BR — режим [Troglodita](https://github.com/leninejunior/troglodita):**
> **До (42 токени):** _"Проблема в тому, що компонент повторно рендериться, оскільки під час кожного циклу рендерингу створюється нове посилання на об’єкт. Я б рекомендував використовувати useMemo."_
>
> **Після (12 токенів):** _"Повторний рендер: нове посилання в кожному циклі (вбудований об’єкт створюється заново). Використовувати `useMemo`."_
>
> **Та сама відповідь. Приблизно на 70% менше токенів. Технічна точність збережена.** ✅
### 🎚️ Поза межами рушіїв — стилі виводу, адаптивний регулятор і керування для кожного запиту
12 наведених вище рушіїв скорочують те, що **надходить**. Ще три рівні визначають **як**, **коли** та що **виводиться**:
- **🪄 Стилі виводу** _(керування віссю виводу)_ — додають детерміновані інструкції для формування відповіді, безпечні для кешування; їх можна комбінувати, кожен має інтенсивність `lite` / `full` / `ultra`. Додавання стилю — це один рядок у реєстрі:
- **Лаконічна проза** — прибрати наповнювачі / артиклі / застереження; зберегти технічний зміст без змін.
- **Менше коду** — YAGNI у стилі «лінивого senior-розробника»: найменша робоча зміна, без незапитаного каркаса.
- **Кінський хвіст (лінивий senior-розробник)** — піднятися драбиною YAGNI, виправити першопричину, внести найменший робочий диф.
- **У мене ADHD (спочатку дія)** — спочатку наступна дія, кроки пронумеровані, один конкретний наступний крок, без вступу.
- **Лаконічний CJK (文言)** — надзвичайно лаконічний стиль класичної китайської мови (активується лише для локалі `zh`).
- **🎯 Адаптивний бюджет контексту** _(регулятор)_ — замість одного порогового значення токенів увімкнено/вимкнено, найдешевші рушії з найменшими втратами посилюються лише настільки, наскільки потрібно, щоб **вміститися у вікно контексту моделі**. Політика: `reserve-output` (типова, з урахуванням моделі) · `percentage` · `absolute`. Режим: `floor` (гарантувати вміщення) · `replace-autotrigger` (ваш явний вибір має перевагу) · `off` (застарілий поріг).
- **🎛️ Де визначається стиснення** _(пріоритет, від вищого до нижчого)_ — заголовок запиту `x-omniroute-compression` › перевизначення комбінації маршрутизації › активний іменований профіль › адаптивний режим / автоматичний тригер › типове значення панелі › вимкнено. Застосований план повертається в заголовку відповіді `X-OmniRoute-Compression: ; source=`.
Увімкніть автоматичний тригер за порогом токенів, перемикайте адаптивний регулятор, зафіксуйте іменований профіль, задайте одноразове значення для запиту або призначте конвеєр для кожної комбінації маршрутизації — залежно від того, що найкраще відповідає робочому навантаженню. Додатковий офлайн **eval harness** (`npm run eval:compression`) оцінює точність і заощадження на зафіксованому корпусі, перш ніж ви опублікуєте зміну.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Швидкий початок
**1) Установіть і запустіть**
```bash
npm install -g omniroute
omniroute
```
> 💡 Бачите `npm warn ERESOLVE` або попередження про peer-залежності? [Вони нешкідливі](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Використовуєте npm 11 або новішу версію?** npm може блокувати скрипти життєвого циклу пакунків, якщо їх не дозволено. `postinstall` OmniRoute (`node scripts/build/postinstall.mjs`) потрібен для підготовки власних файлів середовища виконання. Під час глобального встановлення дозвольте пакунки, названі в попередженні npm. Для набору пакунків, повідомленого OmniRoute 3.8.54:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Щоб повторно використовувати цей список дозволених пакунків під час майбутніх глобальних встановлень, налаштуйте його один раз, а потім установлюйте звичайним способом:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Список залежностей може змінюватися між випусками; якщо npm повідомить про інший список, використайте назви пакунків із цього попередження. Дозвіл для пакунка дає змогу виконувати його скрипти встановлення.
> **Використовуєте Gemini Web або іншого постачальника веб-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
# Використання 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 немає.
Стратегія покриття тестами для понад 60 000 статичних оголошень тестів у понад 8 400 відстежуваних файлах тестів
# ⭐ Найкращі учасники
> OmniRoute розвивається завдяки захопленій спільноті відкритого коду. Ці люди зробили винятковий внесок, який безпосередньо вплинув на якість, стабільність і охоплення проєкту. **Дякуємо.**
### Зовнішні учасники за кількістю об’єднаних запитів на злиття
Перепис учасників проведено 2026-11-03 03:01:19 UTC для актуального стану release/v3.8.53 — 05bc048d6c. Пагінований перепис GitHub GraphQL містить 9,947 об’єднаних PR: 4,130 від власника репозиторію, 240 від Dependabot, 6 від інших ботів/застосунків і 5,571 зовнішній PR від 883 різних учасників. «Змінені рядки» — це сума додавань і вилучень на GitHub; сюди входять згенеровані файли, lock-файли, каталоги, переклади та документація; це показник змін, а не авторські LOC. 53 PR містять у дифах GitHub понад 500 000 рядків (наприклад, #13399, де один доданий провайдер охоплює 2 347 змінених файлів), що збільшує кілька наведених вище підсумків. Однакові результати займають спільне місце.
### Коміти, атрибутовані GitHub
Повторно перевірено 2026-11-03 02:09:16 UTC: коміти, атрибутовані GitHub, про які повідомляє API учасників репозиторію для гілки за замовчуванням release/v3.8.53. API повернув 903 ідентичності (429 користувачів, 2 боти, 472 анонімні); у цій таблиці виключено мейнтейнера, ботів і анонімні ідентичності, а також збережено нічиї в рейтингу. Вона відрізняється як від наведеного вище рейтингу об’єднаних 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 залишатися безкоштовним і незалежним.
## 👥 Понад 1 000 учасників
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Перевірено 2026-11-02 на актуальній вершині release/v3.8.531c7135e0fb (7 972 коміти): 1 074 нормалізовані ідентичності людей у Git — 759 з них указані як автори комітів (включно з мейнтейнером), а 315 трапляються лише в явних трейлерах Co-authored-by. Під час підрахунку застосовується .mailmap, адреси електронної пошти порівнюються без урахування регістру, числові та звичайні GitHub-адреси noreply об’єднуються лише тоді, коли вони кодують той самий ідентифікатор, виключаються 29 ідентичностей ботів/агентів/служб/заповнювачів, а звичайні адреси електронної пошти не об’єднуються лише через збіг відображуваних імен. Аудит від 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. Відкрийте запит на злиття з **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 3 листопада 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.
Під час розробки було вивчено дизайн його HTTP/browser upstream для початкової реалізації Grok Web; його прямий HTTP-шлях походить від GrokProxy, тому окреме перенесення коду не заявляється.
Вірусний проєкт «навіщо використовувати багато токенів, якщо кілька токенів виконують завдання» — його філософія мовлення печерної людини лежить в основі нашого стандартного режиму стиснення та понад 30 правил видалення заповнювачів/конденсації.
Стиснення токенів PT-BR — забезпечує роботу нашого мовного пакета pt-BR: скорочення плеоназмів і видалення заповнювачів, налаштовані для граматики бразильської португальської.
Вірусна навичка YAGNI-кодування «лінивого досвідченого розробника» — надихнула наш стиль виводу less-code: керування найменшою працюючою зміною, що скорочує _згенерований_ код (аналог лаконічної прози Caveman на осі виводу).
Стиснення виводу з урахуванням вмісту для кожного типу файлів із відмовою у разі помилки — підтвердило нашу диспетчеризацію за типами та пропуск за мінімального виграшу.
Стовпцевий JSON на Rust + отримання за адресою вмісту + дедуплікація між повідомленнями — підтвердили дизайн наших рушіїв headroom/ccr/session-dedup та стабільний для кешу інваріант «стиснена форма не залежить від позиції».
Інструментарій API компілятора TypeScript — надихнув наше видалення коментарів на основі парсера зі збереженням рядкових, шаблонних і регулярних літералів.
Перехоплення й аналіз 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)** · Створено з ❤️ для спільноти ШІ з відкритим кодом.
Автор: Diego Souza · OmniRoute v3.8.54 · Node ≥22.22.2 · Ліцензія MIT · omniroute.online