diff --git a/docs/i18n/uk-UA/README.md b/docs/i18n/uk-UA/README.md
index 814954a791..b4e5b170e6 100644
--- a/docs/i18n/uk-UA/README.md
+++ b/docs/i18n/uk-UA/README.md
@@ -1,12 +1,8 @@
-# 🚀 OmniRoute — The Free AI Gateway (Українська)
+# 🚀 OmniRoute — Безкоштовний AI Gateway
-🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [hi](../hi/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md) · 🇨🇿 [cs](../cs/README.md) · 🇹🇷 [tr](../tr/README.md)
+### Ніколи не припиняйте кодувати. Розумна маршрутизація до **БЕЗКОШТОВНИХ та недорогих AI моделей** з автоматичним резервуванням.
----
-
-### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-
-_Your universal API proxy — one endpoint, 100+ providers, zero downtime. Now with **MCP Server (25 tools)**, **A2A Protocol**, **Memory/Skills Systems** & **Electron Desktop App**._
+_Ваш універсальний API проксі — одна кінцева точка, 100+ провайдерів, нульовий простій. Тепер з **MCP Server (25 інструментів)**, **A2A Protocol**, **Memory/Skills Systems** та **Electron Desktop App**._
**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
@@ -41,26 +37,26 @@ _Your universal API proxy — one endpoint, 100+ providers, zero downtime. Now w
[](https://omniroute.online)
[](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-[🌐 Website](https://omniroute.online) • [🚀 Quick Start](#-quick-start) • [💡 Features](#-key-features) • [📖 Docs](#-documentation) • [💰 Pricing](#-pricing-at-a-glance) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+[🌐 Веб-сайт](https://omniroute.online) • [🚀 Швидкий старт](#-швидкий-старт) • [💡 Функції](#-ключові-функції) • [📖 Документація](#-документація) • [💰 Ціни](#-ціни-загалом) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-🌐 **Available in:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+🌐 **Доступно мовами:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
---
-## 🖼️ Main Dashboard
+## 🖼️ Головна панель
-

+
---
-## 📸 Dashboard Preview
+## 📸 Попередній перегляд панелі
-Click to see dashboard screenshots
+Натисніть, щоб побачити скріншоти панелі
| Page | Screenshot |
| -------------- | ------------------------------------------------- |
@@ -78,43 +74,43 @@ _Your universal API proxy — one endpoint, 100+ providers, zero downtime. Now w
---
-### 🤖 Free AI Provider for your favorite coding agents
+### 🤖 Безкоштовний AI провайдер для ваших улюблених агентів кодування
-_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
+_Підключіть будь-яку IDE або CLI інструмент з підтримкою AI через OmniRoute — безкоштовний API gateway для необмеженого кодування._
-📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
+📡 Всі агенти підключаються через http://localhost:20128/v1 або http://cloud.omniroute.online/v1 — одна конфігурація, необмежені моделі та квота
---
-## 🤔 Why OmniRoute?
+## 🤔 Навіщо OmniRoute?
-**Stop wasting money and hitting limits:**
+**Припиніть витрачати гроші та натикатися на ліміти:**
--
Subscription quota expires unused every month
--
Rate limits stop you mid-coding
--
Expensive APIs ($20-50/month per provider)
--
Manual switching between providers
+-
Квота підписки закінчується невикористаною щомісяця
+-
Обмеження швидкості зупиняють вас під час кодування
+-
Дорогі API ($20-50/місяць на провайдера)
+-
Ручне перемикання між провайдерами
-**OmniRoute solves this:**
+**OmniRoute вирішує це:**
-- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
-- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
-- ✅ **Multi-account** - Round-robin between accounts per provider
-- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
+- ✅ **Максимізуйте підписки** - Відстежуйте квоту, використовуйте кожен біт до скидання
+- ✅ **Автоматичне резервування** - Підписка → API Key → Дешеві → Безкоштовні, нульовий простій
+- ✅ **Мультиакаунт** - Циклічне перемикання між акаунтами для кожного провайдера
+- ✅ **Універсальний** - Працює з Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, будь-яким CLI інструментом
---
-## 📧 Support
+## 📧 Підтримка
-> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
+> 💬 **Приєднуйтесь до нашої спільноти!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Отримайте допомогу, діліться порадами та будьте в курсі оновлень.
-- **Website**: [omniroute.online](https://omniroute.online)
+- **Веб-сайт**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
-- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+- **Внесок**: Див. [CONTRIBUTING.md](../../../CONTRIBUTING.md), відкрийте PR або виберіть `good first issue`
+- **Оригінальний проєкт**: [9router від decolua](https://github.com/decolua/9router)
-### 🐛 Reporting a Bug?
+### 🐛 Повідомляєте про помилку?
-When opening an issue, please run the system-info command and attach the generated file:
+Відкриваючи issue, будь ласка, запустіть команду system-info та прикріпіть згенерований файл:
```bash
npm run system-info
```
-This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (qoder, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
+Це генерує `system-info.txt` з вашою версією Node.js, версією OmniRoute, деталями ОС, встановленими CLI інструментами (qoder, gemini, claude, codex, antigravity, droid тощо), статусом Docker/PM2 та системними пакетами — все, що нам потрібно для швидкого відтворення вашої проблеми. Прикріпіть файл безпосередньо до вашого GitHub issue.
---
-## 🔄 How It Works
+## 🔄 Як це працює
```
┌─────────────┐
-│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
-│ Tool │
+│ Ваш CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
+│ інструмент │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────┐
-│ OmniRoute (Smart Router) │
-│ • Format translation (OpenAI ↔ Claude) │
-│ • Quota tracking + Embeddings + Images │
-│ • Auto token refresh │
+│ OmniRoute (Розумний роутер) │
+│ • Переклад форматів (OpenAI ↔ Claude) │
+│ • Відстеження квоти + Embeddings + │
+│ Images │
+│ • Автоматичне оновлення токенів │
└──────┬──────────────────────────────────┘
│
- ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
- │ ↓ quota exhausted
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
- │ ↓ budget limit
- ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
- │ ↓ budget limit
- └─→ [Tier 4: FREE] Qoder, Qwen, Kiro (unlimited)
+ ├─→ [Рівень 1: ПІДПИСКА] Claude Code, Codex, Gemini CLI
+ │ ↓ квота вичерпана
+ ├─→ [Рівень 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM тощо
+ │ ↓ ліміт бюджету
+ ├─→ [Рівень 3: ДЕШЕВІ] GLM ($0.6/1M), MiniMax ($0.2/1M)
+ │ ↓ ліміт бюджету
+ └─→ [Рівень 4: БЕЗКОШТОВНІ] Qoder, Qwen, Kiro (необмежено)
-Result: Never stop coding, minimal cost
+Результат: Ніколи не припиняйте кодувати, мінімальні витрати
```
---
-## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
+## 🎯 Що вирішує OmniRoute — 30 реальних проблем та випадків використання
-> **Every developer using AI tools faces these problems daily.** OmniRoute was built to solve them all — from cost overruns to regional blocks, from broken OAuth flows to protocol operations and enterprise observability.
+> **Кожен розробник, який використовує AI інструменти, стикається з цими проблемами щодня.** OmniRoute був створений для вирішення їх усіх — від перевитрат до регіональних блокувань, від зламаних OAuth потоків до протокольних операцій та корпоративної спостережуваності.
-💸 1. "I pay for an expensive subscription but still get interrupted by limits"
+💸 1. "Я плачу за дорогу підписку, але все одно отримую переривання через ліміти"
-Developers pay $20–200/month for Claude Pro, Codex Pro, or GitHub Copilot. Even paying, quota has a ceiling — 5h of usage, weekly limits, or per-minute rate limits. Mid-coding session, the provider stops responding and the developer loses flow and productivity.
+Розробники платять $20–200/місяць за Claude Pro, Codex Pro або GitHub Copilot. Навіть платячи, квота має стелю — 5 годин використання, тижневі ліміти або обмеження швидкості за хвилину. Посеред сесії кодування провайдер припиняє відповідати, і розробник втрачає потік та продуктивність.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
-- **Smart 4-Tier Fallback** — If subscription quota runs out, automatically redirects to API Key → Cheap → Free with zero manual intervention
-- **Provider Limits Tracking** — Cached quota snapshots refresh on a server-side schedule (default `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) with manual refresh available in the UI
-- **Multi-Account Support** — Multiple accounts per provider with auto round-robin — when one runs out, switches to the next
-- **Custom Combos** — Customizable fallback chains with 13 balancing strategies (priority, weighted, fill-first, round-robin, P2C, random, least-used, cost-optimized, strict-random, auto, lkgp, context-optimized, **context-relay**)
-- **Structured Combo Builder** — Build combos step-by-step with explicit provider + model + account selection, including repeated providers and fixed-account targets
-- **Quota-Aware P2C** — Power-of-two account selection now factors quota headroom, backoff, recent errors, and consecutive use
-- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
+- **Розумне 4-рівневе резервування** — Якщо квота підписки закінчується, автоматично перенаправляє на API Key → Дешеві → Безкоштовні без ручного втручання
+- **Відстеження лімітів провайдера** — Кешовані знімки квоти оновлюються за серверним розкладом (за замовчуванням `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) з можливістю ручного оновлення в UI
+- **Підтримка мультиакаунтів** — Кілька акаунтів на провайдера з автоматичним циклічним перемиканням — коли один закінчується, перемикається на наступний
+- **Користувацькі комбо** — Налаштовувані ланцюги резервування з 13 стратегіями балансування (пріоритет, зважений, заповнення-спочатку, циклічний, P2C, випадковий, найменш-використовуваний, оптимізований-за-вартістю, строго-випадковий, авто, lkgp, оптимізований-за-контекстом, **context-relay**)
+- **Структурований конструктор комбо** — Створюйте комбо крок за кроком з явним вибором провайдера + моделі + акаунта, включаючи повторювані провайдери та фіксовані цілі акаунтів
+- **P2C з урахуванням квоти** — Вибір акаунта за принципом степеня двійки тепер враховує запас квоти, відкат, нещодавні помилки та послідовне використання
+- **Бізнес-квоти Codex** — Моніторинг квоти робочого простору Business/Team безпосередньо в панелі
-🔌 2. "I need to use multiple providers but each has a different API"
+🔌 2. "Мені потрібно використовувати кілька провайдерів, але кожен має різний API"
-OpenAI uses one format, Claude (Anthropic) uses another, Gemini yet another. If a dev wants to test models from different providers or fallback between them, they need to reconfigure SDKs, change endpoints, deal with incompatible formats. Custom providers (FriendLI, NIM) have non-standard model endpoints.
+OpenAI використовує один формат, Claude (Anthropic) використовує інший, Gemini ще інший. Якщо розробник хоче тестувати моделі від різних провайдерів або перемикатися між ними, йому потрібно переконфігурувати SDK, змінювати кінцеві точки, мати справу з несумісними форматами. Користувацькі провайдери (FriendLI, NIM) мають нестандартні кінцеві точки моделей.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
-- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 100+ providers
-- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
-- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
-- **Think Tag Extraction** — Extracts `` blocks from models like DeepSeek R1 into standardized `reasoning_content`
-- **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatic conversion
-- **`stream` defaults to `false`** — Aligns with OpenAI spec, avoiding unexpected SSE in Python/Rust/Go SDKs
+- **Уніфікована кінцева точка** — Один `http://localhost:20128/v1` служить проксі для всіх 100+ провайдерів
+- **Переклад форматів** — Автоматичний та прозорий: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Санітизація відповідей** — Видаляє нестандартні поля (`x_groq`, `usage_breakdown`, `service_tier`), які ламають OpenAI SDK v1.83+
+- **Нормалізація ролей** — Конвертує `developer` → `system` для не-OpenAI провайдерів; `system` → `user` для GLM/ERNIE
+- **Вилучення тегів Think** — Витягує блоки `` з моделей типу DeepSeek R1 у стандартизований `reasoning_content`
+- **Структурований вивід для Gemini** — Автоматична конвертація `json_schema` → `responseMimeType`/`responseSchema`
+- **`stream` за замовчуванням `false`** — Відповідає специфікації OpenAI, уникаючи несподіваного SSE в Python/Rust/Go SDK
-🌐 3. "My AI provider blocks my region/country"
+🌐 3. "Мій AI провайдер блокує мій регіон/країну"
-Providers like OpenAI/Codex block access from certain geographic regions. Users get errors like `unsupported_country_region_territory` during OAuth and API connections. This is especially frustrating for developers from developing countries.
+Провайдери типу OpenAI/Codex блокують доступ з певних географічних регіонів. Користувачі отримують помилки типу `unsupported_country_region_territory` під час OAuth та API з'єднань. Це особливо фруструє розробників з країн, що розвиваються.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
-- **3-Level Proxy Config** — Configurable proxy at 3 levels: global (all traffic), per-provider (one provider only), and per-connection/key
-- **Color-Coded Proxy Badges** — Visual indicators: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, always showing the IP
-- **OAuth Token Exchange Through Proxy** — OAuth flow also goes through the proxy, solving `unsupported_country_region_territory`
-- **Connection Tests via Proxy** — Connection tests use the configured proxy (no more direct bypass)
-- **SOCKS5 Support** — Full SOCKS5 proxy support for outbound routing
-- **TLS Fingerprint Spoofing** — Browser-like TLS fingerprint via `wreq-js` to bypass bot detection
-- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
+- **3-рівнева конфігурація проксі** — Налаштовуваний проксі на 3 рівнях: глобальний (весь трафік), на провайдера (тільки один провайдер) та на з'єднання/ключ
+- **Кольорові значки проксі** — Візуальні індикатори: 🟢 глобальний проксі, 🟡 проксі провайдера, 🔵 проксі з'єднання, завжди показують IP
+- **Обмін OAuth токенами через проксі** — OAuth потік також проходить через проксі, вирішуючи `unsupported_country_region_territory`
+- **Тести з'єднання через проксі** — Тести з'єднання використовують налаштований проксі (більше немає прямого обходу)
+- **Підтримка SOCKS5** — Повна підтримка SOCKS5 проксі для вихідної маршрутизації
+- **Підробка TLS відбитка** — TLS відбиток, схожий на браузер, через `wreq-js` для обходу виявлення ботів
+- **🔏 Відповідність відбитку CLI** — Переупорядковує заголовки та поля тіла для відповідності нативним сигнатурам CLI бінарників, drastично зменшуючи ризик позначення акаунта. IP проксі зберігається — ви отримуєте і приховування **і** маскування IP одночасно
@@ -293,7 +290,7 @@ Providers like OpenAI/Codex block access from certain geographic regions. Users
Not everyone can pay $20–200/month for AI subscriptions. Students, devs from emerging countries, hobbyists, and freelancers need access to quality models at zero cost.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Free Tier Providers Built-in** — Native support for 100% free providers: Qoder (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
@@ -308,7 +305,7 @@ Not everyone can pay $20–200/month for AI subscriptions. Students, devs from e
When exposing an AI gateway to the network (LAN, VPS, Docker), anyone with the address can consume the developer's tokens/quota. Without protection, APIs are vulnerable to misuse, prompt injection, and abuse.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **API Key Management** — Generation, rotation, and scoping per provider with a dedicated `/dashboard/api-manager` page
- **Model-Level Permissions** — Restrict API keys to specific models (`openai/*`, wildcard patterns), with Allow All/Restrict toggle
@@ -326,7 +323,7 @@ When exposing an AI gateway to the network (LAN, VPS, Docker), anyone with the a
AI providers can become unstable, return 5xx errors, or hit temporary rate limits. If a dev depends on a single provider, they're interrupted. Without circuit breakers, repeated retries can crash the application.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Settings-Driven Lock Hierarchy** — Provider profiles control default account/model lockouts, global model quarantine, and provider circuit breakers from one control surface, while explicit upstream `Retry-After` windows still take priority
- **Exponential Backoff** — Progressive retry delays for both account/model lockouts and higher-level quarantine
@@ -342,7 +339,7 @@ AI providers can become unstable, return 5xx errors, or hit temporary rate limit
Developers use Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Each tool needs a different config (API endpoint, key, model). Reconfiguring when switching providers or models is a waste of time.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **CLI Tools Dashboard** — Dedicated page with one-click setup for Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
- **GitHub Copilot Config Generator** — Generates `chatLanguageModels.json` for VS Code with bulk model selection
@@ -356,7 +353,7 @@ Developers use Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code..
Claude Code, Codex, Gemini CLI, Copilot — all use OAuth 2.0 with expiring tokens. Developers need to re-authenticate constantly, deal with `client_secret is missing`, `redirect_uri_mismatch`, and failures on remote servers. OAuth on LAN/VPS is particularly problematic.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Auto Token Refresh** — OAuth tokens refresh in background before expiration
- **OAuth 2.0 (PKCE) Built-in** — Automatic flow for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder
@@ -372,7 +369,7 @@ Claude Code, Codex, Gemini CLI, Copilot — all use OAuth 2.0 with expiring toke
Developers use multiple paid providers but have no unified view of spending. Each provider has its own billing dashboard, but there's no consolidated view. Unexpected costs can pile up.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Cost Analytics Dashboard** — Per-token cost tracking and budget management per provider
- **Budget Limits per Tier** — Spending ceiling per tier that triggers automatic fallback
@@ -387,7 +384,7 @@ Developers use multiple paid providers but have no unified view of spending. Eac
When a call fails, the dev doesn't know if it was a rate limit, expired token, wrong format, or provider error. Fragmented logs across different terminals. Without observability, debugging is trial-and-error.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
@@ -404,7 +401,7 @@ When a call fails, the dev doesn't know if it was a rate limit, expired token, w
Installing, configuring, and maintaining an AI proxy across different environments (local, VPS, Docker, cloud) is labor-intensive. Problems like hardcoded paths, `EACCES` on directories, port conflicts, and cross-platform builds add friction.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **npm global install** — `npm install -g omniroute && omniroute` — done
- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
@@ -421,7 +418,7 @@ Installing, configuring, and maintaining an AI proxy across different environmen
Teams in non-English-speaking countries, especially in Latin America, Asia, and Europe, struggle with English-only interfaces. Language barriers reduce adoption and increase configuration errors.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
- **RTL Support** — Right-to-left support for Arabic and Hebrew
@@ -435,7 +432,7 @@ Teams in non-English-speaking countries, especially in Latin America, Asia, and
AI isn't just chat completion. Devs need to generate images, transcribe audio, create embeddings for RAG, rerank documents, and moderate content. Each API has a different endpoint and format.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
@@ -454,7 +451,7 @@ AI isn't just chat completion. Devs need to generate images, transcribe audio, c
Developers want to know which model is best for their use case — code, translation, reasoning — but comparing manually is slow. No integrated eval tools exist.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **LLM Evaluations** — Golden set testing with 10 pre-loaded cases covering greetings, math, geography, code generation, JSON compliance, translation, markdown, safety refusal
- **4 Match Strategies** — `exact`, `contains`, `regex`, `custom` (JS function)
@@ -469,7 +466,7 @@ Developers want to know which model is best for their use case — code, transla
As request volume grows, without caching the same questions generate duplicate costs. Without idempotency, duplicate requests waste processing. Per-provider rate limits must be respected.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
- **Request Idempotency** — 5s deduplication window for identical requests
@@ -485,7 +482,7 @@ As request volume grows, without caching the same questions generate duplicate c
Developers who want all responses in a specific language, with a specific tone, or want to limit reasoning tokens. Configuring this in every tool/request is impractical.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **System Prompt Injection** — Global prompt applied to all requests
- **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
@@ -503,7 +500,7 @@ Developers who want all responses in a specific language, with a specific tone,
Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- MCP appears in the dashboard navigation and endpoint protocol tab
- Dedicated MCP management page with process, tools, scopes, and audit
@@ -516,7 +513,7 @@ Many AI gateways expose MCP only as a hidden implementation detail. Teams need a
Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
- SSE streaming with terminal state propagation
@@ -529,7 +526,7 @@ Agent workflows need both direct replies and long-running streamed execution wit
Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
- MCP status API combining heartbeat + recent activity
@@ -542,7 +539,7 @@ Operational teams need to know if MCP is actually alive, not just whether an API
When tools mutate config or trigger ops actions, teams need forensic traceability.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- SQLite-backed audit logging for MCP tool calls
- Filters by tool, success/failure, API key, and pagination
@@ -555,7 +552,7 @@ When tools mutate config or trigger ops actions, teams need forensic traceabilit
Different clients should have least-privilege access to tool categories.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- 10 granular MCP scopes for controlled tool access
- Scope enforcement and visibility in MCP management UI
@@ -568,7 +565,7 @@ Different clients should have least-privilege access to tool categories.
Teams need quick runtime changes during incidents or cost events.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Switch combo activation directly from MCP dashboard
- Apply resilience profiles from pre-defined policy packs
@@ -581,7 +578,7 @@ Teams need quick runtime changes during incidents or cost events.
Without lifecycle visibility, task incidents become hard to triage.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Task listing/filtering by state/skill with pagination
- Drill-down on task metadata, events, and artifacts
@@ -594,7 +591,7 @@ Without lifecycle visibility, task incidents become hard to triage.
Streaming workflows require operational insight into concurrency and live connections.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Active stream counters integrated into A2A status
- Last task timestamp and per-state counts
@@ -607,7 +604,7 @@ Streaming workflows require operational insight into concurrency and live connec
External clients and orchestrators need machine-readable metadata for onboarding.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Agent Card exposed at `/.well-known/agent.json`
- Capabilities and skills shown in management UI
@@ -620,7 +617,7 @@ External clients and orchestrators need machine-readable metadata for onboarding
If users cannot discover protocol surfaces, adoption and support quality drop.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
- Inline service status toggles (Online/Offline) for MCP and A2A
@@ -633,7 +630,7 @@ If users cannot discover protocol surfaces, adoption and support quality drop.
Mock tests are not enough to validate protocol compatibility before release.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- E2E suite that boots app and uses real MCP SDK client transport
- A2A client tests for discovery, send, stream, get, and cancel flows
@@ -646,7 +643,7 @@ Mock tests are not enough to validate protocol compatibility before release.
Splitting observability by protocol creates blind spots and longer MTTR.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Unified dashboards/logs/analytics in one product
- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
@@ -659,7 +656,7 @@ Splitting observability by protocol creates blind spots and longer MTTR.
Running many separate services increases operational cost and failure modes.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- OpenAI-compatible proxy, MCP server, and A2A server in one stack
- Shared auth, resilience, data store, and observability
@@ -672,7 +669,7 @@ Running many separate services increases operational cost and failure modes.
Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- Unified endpoint strategy for clients and agents
- Built-in protocol management UIs and smoke validation paths
@@ -685,7 +682,7 @@ Teams lose velocity when stitching multiple ad-hoc services and scripts.
During deep debugging, long histories with tool results quickly exceed provider token windows, causing failed requests and orphaned context.
-**How OmniRoute solves it:**
+**Як OmniRoute це вирішує:**
- **Proactive Context Compression** — Evaluates token budgets before the request hits upstream and proactively prunes old conversation history with a smart binary-search mechanism.
- **Structural Integrity Guards** — Automatically tracks explicit `tool_use` definitions and ensures that if a tool input is truncated, its corresponding `tool_result` is also safely removed, preventing API validation errors.
@@ -743,25 +740,25 @@ Outcome: deep fallback depth for deadline-critical workloads
---
-## 🆓 Start Free — Zero Configuration Cost
+## 🆓 Почніть безкоштовно — нульова вартість конфігурації
-> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+> Налаштуйте AI кодування за хвилини за **$0/місяць**. Підключіть ці безкоштовні акаунти та використовуйте вбудоване комбо **Free Stack**.
-| Step | Action | Providers Unlocked |
+| Крок | Дія | Розблоковані провайдери |
| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
-| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
-| 2 | Connect **Qoder** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
-| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
-| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
-| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+| 1 | Підключіть **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **необмежено** |
+| 2 | Підключіть **Qoder** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **необмежено** |
+| 3 | Підключіть **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **необмежено** |
+| 4 | Підключіть **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/міс безкоштовно** |
+| 5 | `/dashboard/combos` → шаблон **Free Stack ($0)** | Циклічне перемикання всіх безкоштовних провайдерів автоматично |
-**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+**Налаштуйте будь-яку IDE/CLI на:** `http://localhost:20128/v1` · API Key: `any-string` · Готово.
-> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+> **Додаткове покриття (також безкоштовно):** Groq API key (30 RPM безкоштовно), NVIDIA NIM (40 RPM безкоштовно, 70+ моделей), Cerebras (1M токенів/день), LongCat API key (50M токенів/день!), Cloudflare Workers AI (10K Neurons/день, 50+ моделей).
-## Швидкий старт
+## ⚡ Швидкий старт
-### 1) Install and run
+### 1) Встановлення та запуск
```bash
npm install -g omniroute
@@ -776,43 +773,43 @@ omniroute
> omniroute
> ```
-Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
+Панель відкривається за адресою `http://localhost:20128`, а базовий URL API — `http://localhost:20128/v1`.
-| Command | Description |
+| Команда | Опис |
| ----------------------- | ----------------------------------------------------------- |
-| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
-| `omniroute --port 3000` | Set canonical/API port to 3000 |
-| `omniroute --mcp` | Start MCP server (stdio transport) |
-| `omniroute --no-open` | Don't auto-open browser |
-| `omniroute --help` | Show help |
+| `omniroute` | Запустити сервер (`PORT=20128`, API та панель на одному порту) |
+| `omniroute --port 3000` | Встановити канонічний/API порт на 3000 |
+| `omniroute --mcp` | Запустити MCP сервер (stdio транспорт) |
+| `omniroute --no-open` | Не відкривати браузер автоматично |
+| `omniroute --help` | Показати довідку |
-Optional split-port mode:
+Опціональний режим роздільних портів:
```bash
PORT=20128 DASHBOARD_PORT=20129 omniroute
# API: http://localhost:20128/v1
-# Dashboard: http://localhost:20129
+# Панель: http://localhost:20129
```
-### 2) Uninstalling
+### 2) Видалення
-When you no longer need OmniRoute, we provide two quick scripts for a clean removal:
+Коли вам більше не потрібен OmniRoute, ми надаємо два швидкі скрипти для чистого видалення:
-| Command | Action |
+| Команда | Дія |
| ------------------------ | ----------------------------------------------------------------------------------- |
-| `npm run uninstall` | Removes the system app but **keeps your DB and configurations** in `~/.omniroute`. |
-| `npm run uninstall:full` | Removes the app AND permanently **erases all configurations, keys, and databases**. |
+| `npm run uninstall` | Видаляє системний застосунок, але **зберігає вашу БД та конфігурації** в `~/.omniroute`. |
+| `npm run uninstall:full` | Видаляє застосунок І назавжди **стирає всі конфігурації, ключі та бази даних**. |
-> Note: To run these commands, navigate to the OmniRoute project folder (if you cloned it) and run them. Alternatively, if globally installed, you can simply run `npm uninstall -g omniroute`.
+> Примітка: Щоб виконати ці команди, перейдіть до папки проєкту OmniRoute (якщо ви його клонували) та запустіть їх. Альтернативно, якщо встановлено глобально, ви можете просто запустити `npm uninstall -g omniroute`.
-### Long-Running Streaming Timeouts
+### Тайм-аути довготривалого стрімінгу
-For most deployments, you only need:
+Для більшості розгортань вам потрібно лише:
-| Variable | Default | Purpose |
+| Змінна | За замовчуванням | Призначення |
| ------------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
-| `REQUEST_TIMEOUT_MS` | `600000` | Shared baseline for upstream response-start timeout, hidden Undici timeouts, TLS fingerprint requests, and API bridge request/proxy timeouts |
-| `STREAM_IDLE_TIMEOUT_MS` | inherits `REQUEST_TIMEOUT_MS` | Maximum gap between streaming chunks before OmniRoute aborts the SSE stream |
+| `REQUEST_TIMEOUT_MS` | `600000` | Спільна базова лінія для тайм-ауту початку відповіді upstream, прихованих тайм-аутів Undici, запитів TLS відбитка та тайм-аутів запиту/проксі API bridge |
+| `STREAM_IDLE_TIMEOUT_MS` | успадковує `REQUEST_TIMEOUT_MS` | Максимальний проміжок між частинами стрімінгу, перш ніж OmniRoute перериває SSE потік |
Backward compatibility is preserved: existing `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS`, and other per-layer timeout vars still work and override the shared baseline.
@@ -1012,9 +1009,9 @@ post_install() {
## 🐳 Docker
-OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute доступний як публічний Docker образ на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Quick run:**
+**Швидкий запуск:**
```bash
docker run -d \
@@ -1026,10 +1023,10 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**With environment file:**
+**З файлом середовища:**
```bash
-# Copy and edit .env first
+# Спочатку скопіюйте та відредагуйте .env
cp .env.example .env
docker run -d \
@@ -1042,26 +1039,26 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Using Docker Compose:**
+**Використання Docker Compose:**
```bash
-# Base profile (no CLI tools)
+# Базовий профіль (без CLI інструментів)
docker compose --profile base up -d
-# CLI profile (Claude Code, Codex, OpenClaw built-in)
+# CLI профіль (Claude Code, Codex, OpenClaw вбудовані)
docker compose --profile cli up -d
```
-Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+Підтримка панелі для Docker розгортань тепер включає **Cloudflare Quick Tunnel** в один клік на `Dashboard → Endpoints`. Перше увімкнення завантажує `cloudflared` тільки коли потрібно, запускає тимчасовий тунель до вашої поточної кінцевої точки `/v1` та показує згенерований URL `https://*.trycloudflare.com/v1` безпосередньо під вашим звичайним публічним URL.
-Notes:
+Примітки:
-- Quick Tunnel URLs are temporary and change after every restart.
-- Quick Tunnels are not auto-restored after an OmniRoute or container restart. Re-enable them from the dashboard when needed.
-- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- URL Quick Tunnel тимчасові та змінюються після кожного перезапуску.
+- Quick Tunnels не відновлюються автоматично після перезапуску OmniRoute або контейнера. Увімкніть їх знову з панелі, коли потрібно.
+- Керована установка наразі підтримує Linux, macOS та Windows на `x64` / `arm64`.
- Managed Quick Tunnels default to HTTP/2 transport to avoid noisy QUIC UDP buffer warnings in constrained container environments. Set `CLOUDFLARED_PROTOCOL=quic` or `auto` if you want a different transport.
- Docker images bundle system CA roots and pass them to managed `cloudflared`, which avoids TLS trust failures when the tunnel bootstraps inside the container.
-- SQLite runs in WAL mode. `docker stop` should be allowed to finish so OmniRoute can checkpoint the latest changes back into `storage.sqlite`.
+- SQLite працює в режимі WAL. `docker stop` слід дозволити завершитися, щоб OmniRoute міг зберегти останні зміни назад у `storage.sqlite`.
- The bundled Compose files already set a 40s stop grace period. If you run the image directly, keep `--stop-timeout 40` (or similar) so manual stops do not cut off shutdown cleanup.
- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
@@ -1094,75 +1091,75 @@ volumes:
omniroute-data:
```
-| Image | Tag | Size | Description |
+| Образ | Тег | Розмір | Опис |
| ------------------------ | -------- | ------ | --------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
-| `diegosouzapw/omniroute` | `3.6.2` | ~250MB | Current version |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Останній стабільний реліз |
+| `diegosouzapw/omniroute` | `3.6.2` | ~250MB | Поточна версія |
---
-## 🖥️ Desktop App — Offline & Always-On
+## 🖥️ Десктопний застосунок — Офлайн та завжди увімкнений
-> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+> 🆕 **НОВИНКА!** OmniRoute тепер доступний як **нативний десктопний застосунок** для Windows, macOS та Linux.
-Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+Запускайте OmniRoute як окремий десктопний застосунок — без терміналу, без браузера, без інтернету для локальних моделей. Застосунок на базі Electron включає:
-- 🖥️ **Native Window** — Dedicated app window with system tray integration
-- 🔄 **Auto-Start** — Launch OmniRoute on system login
-- 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
-- ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
-- 🌐 **Offline Mode** — Works fully offline with bundled server
+- 🖥️ **Нативне вікно** — Виділене вікно застосунку з інтеграцією в системний трей
+- 🔄 **Автозапуск** — Запуск OmniRoute при вході в систему
+- 🔔 **Нативні сповіщення** — Отримуйте сповіщення про вичерпання квоти або проблеми з провайдером
+- ⚡ **Установка в один клік** — NSIS (Windows), DMG (macOS), AppImage (Linux)
+- 🌐 **Офлайн режим** — Працює повністю офлайн з вбудованим сервером
### Швидкий старт
```bash
-# Development mode
+# Режим розробки
npm run electron:dev
-# Build for your platform
-npm run electron:build # Current platform
+# Збірка для вашої платформи
+npm run electron:build # Поточна платформа
npm run electron:build:win # Windows (.exe)
npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-### System Tray
+### Системний трей
-When minimized, OmniRoute lives in your system tray with quick actions:
+При згортанні OmniRoute знаходиться в системному треї з швидкими діями:
-- Open dashboard
-- Change server port
-- Quit application
+- Відкрити панель
+- Змінити порт сервера
+- Вийти з застосунку
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Pricing at a Glance
+## 💰 Ціни загалом
-| Tier | Provider | Cost | Quota Reset | Best For |
+| Рівень | Провайдер | Вартість | Скидання квоти | Найкраще для |
| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
-| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
-| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
-| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
-| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
-| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
-| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
-| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
-| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| **💳 ПІДПИСКА** | Claude Code (Pro) | $20/міс | 5год + тижнева | Вже підписані |
+| | Codex (Plus/Pro) | $20-200/міс | 5год + тижнева | Користувачі OpenAI |
+| | Gemini CLI | **БЕЗКОШТОВНО** | 180K/міс + 1K/день | Всім! |
+| | GitHub Copilot | $10-19/міс | Щомісяця | Користувачі GitHub |
+| **🔑 API KEY** | NVIDIA NIM | **БЕЗКОШТОВНО** (назавжди)| ~40 RPM | 70+ відкритих моделей |
+| | Cerebras | **БЕЗКОШТОВНО** (1M токенів/день) | 60K TPM / 30 RPM | Найшвидший у світі |
+| | Groq | **БЕЗКОШТОВНО** (30 RPM) | 14.4K RPD | Ультрашвидкий Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 за 1M | Немає | Найкраще співвідношення ціна/якість |
| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
-| | Mistral | Free trial + paid | Rate limited | European AI |
-| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| | Mistral | Безкоштовна пробна + платна | Обмежена швидкість | Європейський AI |
+| | OpenRouter | Оплата за використання | Немає | 100+ моделей агрегація |
| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
-| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | MiniMax M2.1 | $0.2/1M | 5-годинний | Найдешевший варіант |
| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
-| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
-| **🆓 FREE** | Qoder | **$0** | Unlimited | 5 models unlimited |
-| | Qwen | **$0** | Unlimited | 4 models unlimited |
-| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | Kimi K2 | $9/міс фіксовано | 10M токенів/міс | Передбачувана вартість |
+| **🆓 БЕЗКОШТОВНІ** | Qoder | **$0** | Необмежено | 5 моделей необмежено |
+| | Qwen | **$0** | Необмежено | 4 моделі необмежено |
+| | Kiro | **$0** | Необмежено | Claude Sonnet/Haiku (AWS Builder) |
| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
@@ -1193,46 +1190,46 @@ Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
---
-## 🆓 Free Models — What You Actually Get
+## 🆓 Безкоштовні моделі — що ви насправді отримуєте
-> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
+> Всі моделі нижче **100% безкоштовні без потреби кредитної картки**. OmniRoute автоматично перемикається між ними, коли одна квота закінчується — об'єднайте їх усі для незламного комбо за $0.
-### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
+### 🔵 МОДЕЛІ CLAUDE (через Kiro — AWS Builder ID)
-| Model | Prefix | Limit | Rate Limit |
+| Модель | Префікс | Ліміт | Обмеження швидкості |
| ------------------- | ------ | ------------- | --------------------- |
-| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
-| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
-| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
+| `claude-sonnet-4.5` | `kr/` | **Необмежено** | Немає повідомлень про денний ліміт |
+| `claude-haiku-4.5` | `kr/` | **Необмежено** | Немає повідомлень про денний ліміт |
+| `claude-opus-4.6` | `kr/` | **Необмежено** | Останній Opus через Kiro |
-### 🟢 QODER MODELS (Free PAT via qodercli)
+### 🟢 МОДЕЛІ QODER (Безкоштовний PAT через qodercli)
| Model | Prefix | Limit | Rate Limit |
| ------------------ | ------ | ------------- | --------------- |
-| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
-| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
-| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2-thinking` | `if/` | **Необмежено** | Немає повідомлень про ліміт |
+| `qwen3-coder-plus` | `if/` | **Необмежено** | Немає повідомлень про ліміт |
+| `deepseek-r1` | `if/` | **Необмежено** | Немає повідомлень про ліміт |
| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-> Recommended connection method: **Personal Access Token + `qodercli`**. Browser OAuth is
-> experimental and disabled by default unless `QODER_OAUTH_*` environment variables are configured.
+> Рекомендований метод підключення: **Personal Access Token + `qodercli`**. OAuth через браузер є
+> експериментальним та вимкнений за замовчуванням, якщо не налаштовані змінні середовища `QODER_OAUTH_*`.
-### 🟡 QWEN MODELS (Device Code Auth)
+### 🟡 МОДЕЛІ QWEN (Авторизація через Device Code)
| Model | Prefix | Limit | Rate Limit |
| ------------------- | ------ | ------------- | ------------------- |
-| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
-| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `qw/` | **Необмежено** | Немає повідомлень про ліміт |
+| `qwen3-coder-flash` | `qw/` | **Необмежено** | Немає повідомлень про ліміт |
| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
-| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
+| `vision-model` | `qw/` | **Необмежено** | Мультимодальна (зображення) |
### 🟣 GEMINI CLI (Google OAuth)
| Model | Prefix | Limit | Rate Limit |
| ------------------------ | ------ | --------------------------- | ------------- |
-| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
-| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+| `gemini-3-flash-preview` | `gc/` | **180K токенів/міс** + 1K/день | Щомісячне скидання |
+| `gemini-2.5-pro` | `gc/` | 180K/міс (спільний пул) | Висока якість |
### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
@@ -1342,16 +1339,16 @@ Nodes:
Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
-## 💡 Key Features
+## 💡 Ключові функції
-OmniRoute v3.6 is built as an operational platform, not just a relay proxy.
+OmniRoute v3.6 побудований як операційна платформа, а не просто проксі-ретранслятор.
-### 🆕 New — v3.6.x Highlights (Apr 2026)
+### 🆕 Новинки — основні моменти v3.6.x (квітень 2026)
-| Feature | What It Does |
+| Функція | Що вона робить |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🌐 **V1 WebSocket Bridge** | OpenAI-compatible WebSocket traffic upgraded and proxied via `/v1/ws` — full streaming over WS with session auth (API key or session cookie) |
-| 🔑 **Sync Tokens & Config Bundle** | Issue/revoke sync tokens for config sync endpoints. Config bundles versioned with ETag for bandwidth-efficient polling |
+| 🌐 **V1 WebSocket Bridge** | OpenAI-сумісний WebSocket трафік оновлений та проксійований через `/v1/ws` — повний стрімінг через WS з сесійною авторизацією (API ключ або сесійна кука) |
+| 🔑 **Sync Tokens & Config Bundle** | Видача/відкликання sync токенів для кінцевих точок синхронізації конфігурації. Пакети конфігурації версіоновані з ETag для ефективного опитування |
| 🧠 **GLM Thinking (glmt) Preset** | GLM Thinking registered first-class: 65 536 max tokens, 24 576 thinking budget, 900s timeout, usage sync & pricing — Claude-compatible API |
| 🔢 **Hybrid Token Counting** | Uses provider-side `/messages/count_tokens` when available; falls back to estimation — accurate usage tracking without guessing |
| 🌱 **Model Alias Auto-Seed** | 30+ cross-proxy dialect aliases normalised at startup — no more routing mismatches |
@@ -1567,27 +1564,27 @@ The pre-loaded "OmniRoute Golden Set" contains test cases for:
---
-## 📖 Setup Guide
+## 📖 Посібник з налаштування
-### Protocol Setup (MCP + A2A)
+### Налаштування протоколів (MCP + A2A)
-🧩 MCP Setup (Model Context Protocol)
+🧩 Налаштування MCP (Model Context Protocol)
-Start MCP transport in stdio mode:
+Запустіть MCP транспорт в режимі stdio:
```bash
omniroute --mcp
```
-Recommended validation flow:
+Рекомендований потік валідації:
-1. Connect your MCP client over stdio.
-2. Run `omniroute_get_health`.
-3. Run `omniroute_list_combos`.
-4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
+1. Підключіть ваш MCP клієнт через stdio.
+2. Запустіть `omniroute_get_health`.
+3. Запустіть `omniroute_list_combos`.
+4. Відкрийте `/dashboard/mcp` для підтвердження heartbeat, активності та аудиту.
-Useful APIs for automation:
+Корисні API для автоматизації:
- `GET /api/mcp/status`
- `GET /api/mcp/tools`
@@ -1597,15 +1594,15 @@ Useful APIs for automation:
-🤝 A2A Setup (Agent2Agent)
+🤝 Налаштування A2A (Agent2Agent)
-Discover the agent:
+Виявіть агента:
```bash
curl http://localhost:20128/.well-known/agent.json
```
-Send a task:
+Надішліть завдання:
```bash
curl -X POST http://localhost:20128/a2a \
@@ -1613,105 +1610,105 @@ curl -X POST http://localhost:20128/a2a \
-d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
```
-Manage lifecycle:
+Керуйте життєвим циклом:
- `GET /api/a2a/status`
- `GET /api/a2a/tasks`
- `GET /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/cancel`
-Operational UI:
+Операційний UI:
-- `/dashboard/a2a` for task/state/stream observability and smoke actions
+- `/dashboard/a2a` для спостережуваності завдань/стану/потоку та smoke дій
-🧪 End-to-end protocol validation
+🧪 Наскрізна валідація протоколів
-Validate both protocols with real clients:
+Валідуйте обидва протоколи з реальними клієнтами:
```bash
npm run test:protocols:e2e
```
-This verifies:
+Це перевіряє:
-- MCP SDK client connect/list/call
+- MCP SDK клієнт connect/list/call
- A2A discovery/send/stream/get/cancel
-- Cross-check data in MCP audit and A2A task management APIs
+- Перехресну перевірку даних в MCP аудиті та API керування завданнями A2A
-💳 Subscription Providers
+💳 Провайдери підписок
### Claude Code (Pro/Max)
```bash
-Dashboard → Providers → Connect Claude Code
-→ OAuth login → Auto token refresh
-→ 5-hour + weekly quota tracking
+Панель → Провайдери → Підключити Claude Code
+→ OAuth вхід → Автоматичне оновлення токена
+→ Відстеження 5-годинної + тижневої квоти
-Models:
+Моделі:
cc/claude-opus-4-7
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
-**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
+**Порада:** Використовуйте Opus для складних завдань, Sonnet для швидкості. OmniRoute відстежує квоту для кожної моделі!
### OpenAI Codex (Plus/Pro)
```bash
-Dashboard → Providers → Connect Codex
-→ OAuth login (port 1455)
-→ 5-hour + weekly reset
+Панель → Провайдери → Підключити Codex
+→ OAuth вхід (порт 1455)
+→ 5-годинне + тижневе скидання
-Models:
+Моделі:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
```
-#### Codex Account Limit Management (5h + Weekly)
+#### Керування лімітами акаунта Codex (5год + Тижнева)
-Each Codex account now has policy toggles in `Dashboard -> Providers`:
+Кожен акаунт Codex тепер має перемикачі політики в `Панель -> Провайдери`:
-- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
-- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
-- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
-- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
-- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+- `5h` (ВКЛ/ВИКЛ): застосовувати політику порогу 5-годинного вікна.
+- `Weekly` (ВКЛ/ВИКЛ): застосовувати політику порогу тижневого вікна.
+- Поведінка порогу: коли увімкнене вікно досягає >=90% використання, цей акаунт пропускається.
+- Поведінка ротації: OmniRoute автоматично маршрутизує до наступного придатного акаунта Codex.
+- Поведінка скидання: коли час `resetAt` провайдера минає, акаунт знову стає придатним автоматично.
-Scenarios:
+Сценарії:
-- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
-- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
-- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
-- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+- `5h ВКЛ` + `Weekly ВКЛ`: акаунт пропускається, коли будь-яке вікно досягає порогу.
+- `5h ВИКЛ` + `Weekly ВКЛ`: тільки тижневе використання може заблокувати акаунт.
+- `5h ВКЛ` + `Weekly ВИКЛ`: тільки 5-годинне використання може заблокувати акаунт.
+- `resetAt` минув: акаунт повертається в ротацію автоматично (без ручного повторного увімкнення).
-### Gemini CLI (FREE 180K/month!)
+### Gemini CLI (БЕЗКОШТОВНО 180K/місяць!)
```bash
-Dashboard → Providers → Connect Gemini CLI
+Панель → Провайдери → Підключити Gemini CLI
→ Google OAuth
-→ 180K completions/month + 1K/day
+→ 180K завершень/місяць + 1K/день
-Models:
+Моделі:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**Best Value:** Huge free tier! Use this before paid tiers.
+**Найкраща цінність:** Величезний безкоштовний рівень! Використовуйте це перед платними рівнями.
### GitHub Copilot
```bash
-Dashboard → Providers → Connect GitHub
-→ OAuth via GitHub
-→ Monthly reset (1st of month)
+Панель → Провайдери → Підключити GitHub
+→ OAuth через GitHub
+→ Щомісячне скидання (1-го числа місяця)
-Models:
+Моделі:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3.1-pro-preview
@@ -1720,97 +1717,97 @@ Models:
-🔑 API Key Providers
+🔑 Провайдери API ключів
-### NVIDIA NIM (FREE developer access — 70+ models)
+### NVIDIA NIM (БЕЗКОШТОВНИЙ доступ для розробників — 70+ моделей)
-1. Sign up: [build.nvidia.com](https://build.nvidia.com)
-2. Get free API key (1000 inference credits included)
-3. Dashboard → Add Provider → NVIDIA NIM:
- - API Key: `nvapi-your-key`
+1. Зареєструйтесь: [build.nvidia.com](https://build.nvidia.com)
+2. Отримайте безкоштовний API ключ (включено 1000 кредитів інференсу)
+3. Панель → Додати провайдера → NVIDIA NIM:
+ - API Key: `nvapi-ваш-ключ`
-**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
+**Моделі:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
+**Порада:** OpenAI-сумісний API — працює безперешкодно з перекладом форматів OmniRoute!
### DeepSeek
-1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
-2. Get API key
-3. Dashboard → Add Provider → DeepSeek
+1. Зареєструйтесь: [platform.deepseek.com](https://platform.deepseek.com)
+2. Отримайте API ключ
+3. Панель → Додати провайдера → DeepSeek
-**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Моделі:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Free Tier Available!)
+### Groq (Доступний безкоштовний рівень!)
-1. Sign up: [console.groq.com](https://console.groq.com)
-2. Get API key (free tier included)
-3. Dashboard → Add Provider → Groq
+1. Зареєструйтесь: [console.groq.com](https://console.groq.com)
+2. Отримайте API ключ (free tier included)
+3. Панель → Додати провайдера → Groq
-**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Моделі:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Pro Tip:** Ultra-fast inference — best for real-time coding!
+**Порада:** Ультрашвидкий інференс — найкраще для кодування в реальному часі!
-### OpenRouter (100+ Models)
+### OpenRouter (100+ моделей)
-1. Sign up: [openrouter.ai](https://openrouter.ai)
-2. Get API key
-3. Dashboard → Add Provider → OpenRouter
+1. Зареєструйтесь: [openrouter.ai](https://openrouter.ai)
+2. Отримайте API ключ
+3. Панель → Додати провайдера → OpenRouter
-**Models:** Access 100+ models from all major providers through a single API key.
+**Моделі:** Access 100+ models from all major providers through a single API key.
-**Dashboard behavior:** OpenRouter models are managed from **Available Models**. Manual add, import, and auto-sync all update the same list.
+**Поведінка панелі:** Моделі OpenRouter керуються з **Доступних моделей**. Ручне додавання, імпорт та автосинхронізація оновлюють той самий список.
-💰 Cheap Providers (Backup)
+💰 Дешеві провайдери (Резервні)
-### GLM-4.7 (Daily reset, $0.6/1M)
+### GLM-4.7 (Щоденне скидання, $0.6/1M)
-1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
-2. Get API key from Coding Plan
-3. Dashboard → Add API Key:
- - Provider: `glm`
- - API Key: `your-key`
+1. Зареєструйтесь: [Zhipu AI](https://open.bigmodel.cn/)
+2. Отримайте API ключ from Coding Plan
+3. Панель → Додати API ключ:
+ - Провайдер: `glm`
+ - API Key: `ваш-ключ`
-**Use:** `glm/glm-4.7`
+**Використання:** `glm/glm-4.7`
-**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
+**Порада:** Coding Plan пропонує 3× квоту за 1/7 вартості! Скидання щодня о 10:00.
-### MiniMax M2.1 (5h reset, $0.20/1M)
+### MiniMax M2.1 (5год скидання, $0.20/1M)
-1. Sign up: [MiniMax](https://www.minimax.io/)
-2. Get API key
-3. Dashboard → Add API Key
+1. Зареєструйтесь: [MiniMax](https://www.minimax.io/)
+2. Отримайте API ключ
+3. Панель → Додати API ключ
-**Use:** `minimax/MiniMax-M2.1`
+**Використання:** `minimax/MiniMax-M2.1`
-**Pro Tip:** Cheapest option for long context (1M tokens)!
+**Порада:** Найдешевший варіант для довгого контексту (1M токенів)!
-### Kimi K2 ($9/month flat)
+### Kimi K2 ($9/місяць фіксовано)
-1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
-2. Get API key
-3. Dashboard → Add API Key
+1. Підпишіться: [Moonshot AI](https://platform.moonshot.ai/)
+2. Отримайте API ключ
+3. Панель → Додати API ключ
-**Use:** `kimi/kimi-latest`
+**Використання:** `kimi/kimi-latest`
-**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
+**Порада:** Фіксовано $9/місяць за 10M токенів = $0.90/1M ефективна вартість!
-🆓 FREE Providers (Emergency Backup)
+🆓 БЕЗКОШТОВНІ провайдери (Аварійне резервування)
-### Qoder (5 FREE models via OAuth)
+### Qoder (5 БЕЗКОШТОВНИХ моделей через OAuth)
```bash
-Dashboard → Connect Qoder
-→ Qoder OAuth login
-→ Unlimited usage
+Панель → Підключити Qoder
+→ Qoder OAuth вхід
+→ Необмежене використання
-Models:
+Моделі:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
@@ -1818,26 +1815,26 @@ Models:
if/deepseek-r1
```
-### Qwen (4 FREE models via Device Code)
+### Qwen (4 БЕЗКОШТОВНІ моделі через Device Code)
```bash
-Dashboard → Connect Qwen
-→ Device code authorization
-→ Unlimited usage
+Панель → Підключити Qwen
+→ Авторизація через device code
+→ Необмежене використання
-Models:
+Моделі:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
```
-### Kiro (Claude FREE)
+### Kiro (Claude БЕЗКОШТОВНО)
```bash
-Dashboard → Connect Kiro
-→ AWS Builder ID or Google/GitHub
-→ Unlimited usage
+Панель → Підключити Kiro
+→ AWS Builder ID або Google/GitHub
+→ Необмежене використання
-Models:
+Моделі:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
@@ -1845,51 +1842,51 @@ Models:
-🎨 Create Combos
+🎨 Створення комбо
-### Example 1: Maximize Subscription → Cheap Backup
+### Приклад 1: Максимізація підписки → Дешеве резервування
```
-Dashboard → Combos → Create New
+Панель → Комбо → Створити нове
-Name: premium-coding
-Models:
- 1. cc/claude-opus-4-7 (Subscription primary)
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
+Назва: premium-coding
+Моделі:
+ 1. cc/claude-opus-4-7 (Основна підписка)
+ 2. glm/glm-4.7 (Дешеве резервування, $0.6/1M)
+ 3. minimax/MiniMax-M2.1 (Найдешевше резервування, $0.20/1M)
-Use in CLI: premium-coding
+Використання в CLI: premium-coding
```
-### Example 2: Free-Only (Zero Cost)
+### Приклад 2: Тільки безкоштовні (Нульова вартість)
```
-Name: free-combo
-Models:
- 1. gc/gemini-3-flash-preview (180K free/month)
- 2. if/kimi-k2-thinking (unlimited)
- 3. qw/qwen3-coder-plus (unlimited)
+Назва: free-combo
+Моделі:
+ 1. gc/gemini-3-flash-preview (180K безкоштовно/місяць)
+ 2. if/kimi-k2-thinking (необмежено)
+ 3. qw/qwen3-coder-plus (необмежено)
-Cost: $0 forever!
+Вартість: $0 назавжди!
```
-🔧 CLI Integration
+🔧 Інтеграція CLI
### Cursor IDE
```
-Settings → Models → Advanced:
+Налаштування → Моделі → Розширені:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [from OmniRoute dashboard]
- Model: cc/claude-opus-4-7
+ OpenAI API Key: [з панелі OmniRoute]
+ Модель: cc/claude-opus-4-7
```
### Claude Code
-Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
+Використовуйте сторінку **CLI Tools** в панелі для конфігурації в один клік або відредагуйте `~/.claude/settings.json` вручну.
### Codex CLI
@@ -1902,13 +1899,13 @@ codex "your prompt"
### OpenClaw
-**Option 1 — Dashboard (recommended):**
+**Варіант 1 — Панель (рекомендовано):**
```
-Dashboard → CLI Tools → OpenClaw → Select Model → Apply
+Панель → CLI Tools → OpenClaw → Вибрати модель → Застосувати
```
-**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
+**Варіант 2 — Вручну:** Відредагуйте `~/.openclaw/openclaw.json`:
```json
{
@@ -1924,16 +1921,16 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
+> **Примітка:** OpenClaw працює тільки з локальним OmniRoute. Використовуйте `127.0.0.1` замість `localhost`, щоб уникнути проблем з розв'язанням IPv6.
### Cline / Continue / RooCode
```
-Settings → API Configuration:
- Provider: OpenAI Compatible
+Налаштування → Конфігурація API:
+ Провайдер: OpenAI Compatible
Base URL: http://localhost:20128/v1
- API Key: [from OmniRoute dashboard]
- Model: if/kimi-k2-thinking
+ API Key: [з панелі OmniRoute]
+ Модель: if/kimi-k2-thinking
```
### OpenCode
@@ -1981,25 +1978,25 @@ opencode
---
-## Усунення несправностей
+## 🐛 Усунення несправностей
-Click to expand troubleshooting guide
+Натисніть, щоб розгорнути посібник з усунення несправностей
-**"Language model did not provide messages"**
+**"Мовна модель не надала повідомлень"**
-- Provider quota exhausted → Check dashboard quota tracker
-- Solution: Use combo fallback or switch to cheaper tier
+- Квота провайдера вичерпана → Перевірте трекер квоти на панелі
+- Рішення: Використовуйте резервування комбо або перейдіть на дешевший рівень
-**Rate limiting**
+**Обмеження швидкості**
-- Subscription quota out → Fallback to GLM/MiniMax
-- Add combo: `cc/claude-opus-4-7 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Квота підписки закінчилась → Резервування на GLM/MiniMax
+- Додайте комбо: `cc/claude-opus-4-7 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth token expired**
+**OAuth токен закінчився**
-- Auto-refreshed by OmniRoute
-- If issues persist: Dashboard → Provider → Reconnect
+- Автоматично оновлюється OmniRoute
+- Якщо проблеми залишаються: Панель → Провайдер → Перепідключити
**High costs**
@@ -2243,7 +2240,7 @@ Se não quiser criar credenciais próprias agora, ainda é possível usar o flux
- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
-- **Website**: [omniroute.online](https://omniroute.online)
+- **Веб-сайт**: [omniroute.online](https://omniroute.online)
- **Package**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
@@ -2252,7 +2249,7 @@ Se não quiser criar credenciais próprias agora, ainda é possível usar o flux
---
-## Документація
+## 📖 Documentation
| Document | Description |
| -------------------------------------------------------- | --------------------------------------------------- |
@@ -2352,7 +2349,7 @@ Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)*
---
-## Ліцензія
+## 📄 License
MIT License - see [LICENSE](LICENSE) for details.
diff --git a/docs/i18n/uk-UA/SECURITY.md b/docs/i18n/uk-UA/SECURITY.md
index 2356470935..578192b931 100644
--- a/docs/i18n/uk-UA/SECURITY.md
+++ b/docs/i18n/uk-UA/SECURITY.md
@@ -1,159 +1,159 @@
-# Security Policy (Українська)
+# Політика безпеки
🌐 **Languages:** 🇺🇸 [English](../../../SECURITY.md) · 🇪🇸 [es](../es/SECURITY.md) · 🇫🇷 [fr](../fr/SECURITY.md) · 🇩🇪 [de](../de/SECURITY.md) · 🇮🇹 [it](../it/SECURITY.md) · 🇷🇺 [ru](../ru/SECURITY.md) · 🇨🇳 [zh-CN](../zh-CN/SECURITY.md) · 🇯🇵 [ja](../ja/SECURITY.md) · 🇰🇷 [ko](../ko/SECURITY.md) · 🇸🇦 [ar](../ar/SECURITY.md) · 🇮🇳 [hi](../hi/SECURITY.md) · 🇮🇳 [in](../in/SECURITY.md) · 🇹🇭 [th](../th/SECURITY.md) · 🇻🇳 [vi](../vi/SECURITY.md) · 🇮🇩 [id](../id/SECURITY.md) · 🇲🇾 [ms](../ms/SECURITY.md) · 🇳🇱 [nl](../nl/SECURITY.md) · 🇵🇱 [pl](../pl/SECURITY.md) · 🇸🇪 [sv](../sv/SECURITY.md) · 🇳🇴 [no](../no/SECURITY.md) · 🇩🇰 [da](../da/SECURITY.md) · 🇫🇮 [fi](../fi/SECURITY.md) · 🇵🇹 [pt](../pt/SECURITY.md) · 🇷🇴 [ro](../ro/SECURITY.md) · 🇭🇺 [hu](../hu/SECURITY.md) · 🇧🇬 [bg](../bg/SECURITY.md) · 🇸🇰 [sk](../sk/SECURITY.md) · 🇺🇦 [uk-UA](../uk-UA/SECURITY.md) · 🇮🇱 [he](../he/SECURITY.md) · 🇵🇭 [phi](../phi/SECURITY.md) · 🇧🇷 [pt-BR](../pt-BR/SECURITY.md) · 🇨🇿 [cs](../cs/SECURITY.md) · 🇹🇷 [tr](../tr/SECURITY.md)
---
-## Reporting Vulnerabilities
+## Повідомлення про вразливості
-If you discover a security vulnerability in OmniRoute, please report it responsibly:
+Якщо ви виявили вразливість безпеки в OmniRoute, будь ласка, повідомте про це відповідально:
-1. **DO NOT** open a public GitHub issue
-2. Use [GitHub Security Advisories](https://github.com/diegosouzapw/OmniRoute/security/advisories/new)
-3. Include: description, reproduction steps, and potential impact
+1. **НЕ** створюйте публічний GitHub issue
+2. Використовуйте [GitHub Security Advisories](https://github.com/diegosouzapw/OmniRoute/security/advisories/new)
+3. Включіть: опис, кроки відтворення та потенційний вплив
-## Response Timeline
+## Часові рамки відповіді
-| Stage | Target |
-| ------------------- | --------------------------- |
-| Acknowledgment | 48 hours |
-| Triage & Assessment | 5 business days |
-| Patch Release | 14 business days (critical) |
+| Етап | Цільовий термін |
+| --------------------- | ----------------------- |
+| Підтвердження | 48 годин |
+| Сортування та оцінка | 5 робочих днів |
+| Випуск патчу | 14 робочих днів (критичні) |
-## Supported Versions
+## Підтримувані версії
-| Version | Support Status |
-| ------- | -------------- |
-| 3.6.x | ✅ Active |
-| 3.5.x | ✅ Security |
-| < 3.5.0 | ❌ Unsupported |
+| Версія | Статус підтримки |
+| ------- | ---------------- |
+| 3.6.x | ✅ Активна |
+| 3.5.x | ✅ Безпека |
+| < 3.5.0 | ❌ Не підтримується |
---
-## Security Architecture
+## Архітектура безпеки
-OmniRoute implements a multi-layered security model:
+OmniRoute реалізує багаторівневу модель безпеки:
```
-Request → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Provider
+Запит → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Провайдер
```
-### 🔐 Authentication & Authorization
+### 🔐 Автентифікація та авторизація
-| Feature | Implementation |
+| Функція | Реалізація |
| -------------------- | ---------------------------------------------------------- |
-| **Dashboard Login** | Password-based auth with JWT tokens (HttpOnly cookies) |
-| **API Key Auth** | HMAC-signed keys with CRC validation |
-| **OAuth 2.0 + PKCE** | Secure provider auth (Claude, Codex, Gemini, Cursor, etc.) |
-| **Token Refresh** | Automatic OAuth token refresh before expiry |
-| **Secure Cookies** | `AUTH_COOKIE_SECURE=true` for HTTPS environments |
-| **MCP Scopes** | 10 granular scopes for MCP tool access control |
+| **Вхід у панель** | Автентифікація на основі пароля з JWT токенами (HttpOnly cookies) |
+| **API Key Auth** | HMAC-підписані ключі з CRC валідацією |
+| **OAuth 2.0 + PKCE** | Безпечна автентифікація провайдерів (Claude, Codex, Gemini, Cursor тощо) |
+| **Оновлення токенів** | Автоматичне оновлення OAuth токенів перед закінченням терміну дії |
+| **Безпечні cookies** | `AUTH_COOKIE_SECURE=true` для HTTPS середовищ |
+| **MCP Scopes** | 10 детальних областей для контролю доступу до інструментів MCP |
-### 🛡️ Encryption at Rest
+### 🛡️ Шифрування в стані спокою
-All sensitive data stored in SQLite is encrypted using **AES-256-GCM** with scrypt key derivation:
+Всі чутливі дані, що зберігаються в SQLite, шифруються за допомогою **AES-256-GCM** з похідною ключа scrypt:
-- API keys, access tokens, refresh tokens, and ID tokens
-- Versioned format: `enc:v1:::`
-- Passthrough mode (plaintext) when `STORAGE_ENCRYPTION_KEY` is not set
+- API ключі, токени доступу, токени оновлення та ID токени
+- Версійний формат: `enc:v1:::`
+- Режим прямого проходження (plaintext), коли `STORAGE_ENCRYPTION_KEY` не встановлено
```bash
-# Generate encryption key:
+# Генерація ключа шифрування:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
```
-### 🧠 Prompt Injection Guard
+### 🧠 Захист від Prompt Injection
-Middleware that detects and blocks prompt injection attacks in LLM requests:
+Middleware, який виявляє та блокує атаки prompt injection у запитах до LLM:
-| Pattern Type | Severity | Example |
-| ------------------- | -------- | ---------------------------------------------- |
-| System Override | High | "ignore all previous instructions" |
-| Role Hijack | High | "you are now DAN, you can do anything" |
-| Delimiter Injection | Medium | Encoded separators to break context boundaries |
-| DAN/Jailbreak | High | Known jailbreak prompt patterns |
-| Instruction Leak | Medium | "show me your system prompt" |
+| Тип шаблону | Серйозність | Приклад |
+| ------------------- | ----------- | ---------------------------------------------- |
+| Перевизначення системи | Висока | "ignore all previous instructions" |
+| Захоплення ролі | Висока | "you are now DAN, you can do anything" |
+| Ін'єкція роздільників | Середня | Закодовані роздільники для порушення меж контексту |
+| DAN/Jailbreak | Висока | Відомі шаблони jailbreak промптів |
+| Витік інструкцій | Середня | "show me your system prompt" |
-Configure via dashboard (Settings → Security) or `.env`:
+Налаштування через панель (Налаштування → Безпека) або `.env`:
```env
INPUT_SANITIZER_ENABLED=true
INPUT_SANITIZER_MODE=block # warn | block | redact
```
-### 🔒 PII Redaction
+### 🔒 Редагування PII
-Automatic detection and optional redaction of personally identifiable information:
+Автоматичне виявлення та опціональне редагування персональної інформації:
-| PII Type | Pattern | Replacement |
+| Тип PII | Шаблон | Заміна |
| ------------- | --------------------- | ------------------ |
| Email | `user@domain.com` | `[EMAIL_REDACTED]` |
-| CPF (Brazil) | `123.456.789-00` | `[CPF_REDACTED]` |
-| CNPJ (Brazil) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
-| Credit Card | `4111-1111-1111-1111` | `[CC_REDACTED]` |
-| Phone | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
-| SSN (US) | `123-45-6789` | `[SSN_REDACTED]` |
+| CPF (Бразилія) | `123.456.789-00` | `[CPF_REDACTED]` |
+| CNPJ (Бразилія) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
+| Кредитна картка | `4111-1111-1111-1111` | `[CC_REDACTED]` |
+| Телефон | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
+| SSN (США) | `123-45-6789` | `[SSN_REDACTED]` |
```env
PII_REDACTION_ENABLED=true
```
-### 🌐 Network Security
+### 🌐 Мережева безпека
-| Feature | Description |
-| ------------------------ | ---------------------------------------------------------------- |
-| **CORS** | Configurable origin control (`CORS_ORIGIN` env var, default `*`) |
-| **IP Filtering** | Allowlist/blocklist IP ranges in dashboard |
-| **Rate Limiting** | Per-provider rate limits with automatic backoff |
-| **Anti-Thundering Herd** | Mutex + per-connection locking prevents cascading 502s |
-| **TLS Fingerprint** | Browser-like TLS fingerprint spoofing to reduce bot detection |
-| **CLI Fingerprint** | Per-provider header/body ordering to match native CLI signatures |
+| Функція | Опис |
+| ------------------------ | ------------------------------------------------------------ |
+| **CORS** | Налаштовуваний контроль походження (`CORS_ORIGIN` env var, за замовчуванням `*`) |
+| **Фільтрація IP** | Білий/чорний список діапазонів IP у панелі |
+| **Обмеження швидкості** | Обмеження швидкості для кожного провайдера з автоматичним відкатом |
+| **Anti-Thundering Herd** | Mutex + блокування на з'єднання запобігає каскадним 502 |
+| **TLS Fingerprint** | Підробка TLS відбитка браузера для зменшення виявлення ботів |
+| **CLI Fingerprint** | Упорядкування заголовків/тіла для кожного провайдера для відповідності нативним CLI підписам |
-### 🔌 Resilience & Availability
+### 🔌 Стійкість та доступність
-| Feature | Description |
-| ----------------------- | ------------------------------------------------------------------ |
-| **Circuit Breaker** | 3-state (Closed → Open → Half-Open) per provider, SQLite-persisted |
-| **Request Idempotency** | 5-second dedup window for duplicate requests |
-| **Exponential Backoff** | Automatic retry with increasing delays |
-| **Health Dashboard** | Real-time provider health monitoring |
+| Функція | Опис |
+| ----------------------- | -------------------------------------------------------------- |
+| **Circuit Breaker** | 3-стани (Closed → Open → Half-Open) для кожного провайдера, збережено в SQLite |
+| **Ідемпотентність запитів** | 5-секундне вікно дедуплікації для дублікатів запитів |
+| **Експоненційний відкат** | Автоматичний повтор зі збільшенням затримок |
+| **Панель здоров'я** | Моніторинг здоров'я провайдерів у реальному часі |
-### 📋 Compliance
+### 📋 Відповідність
-| Feature | Description |
+| Функція | Опис |
| ------------------ | ----------------------------------------------------------- |
-| **Log Retention** | Automatic cleanup after `CALL_LOG_RETENTION_DAYS` |
-| **No-Log Opt-out** | Per API key `noLog` flag disables request logging |
-| **Audit Log** | Administrative actions tracked in `audit_log` table |
-| **MCP Audit** | SQLite-backed audit logging for all MCP tool calls |
-| **Zod Validation** | All API inputs validated with Zod v4 schemas at module load |
+| **Зберігання логів** | Автоматичне очищення після `CALL_LOG_RETENTION_DAYS` |
+| **Відмова від логування** | Прапорець `noLog` для API ключа вимикає логування запитів |
+| **Журнал аудиту** | Адміністративні дії відстежуються в таблиці `audit_log` |
+| **MCP Audit** | Журнал аудиту на основі SQLite для всіх викликів інструментів MCP |
+| **Zod Validation** | Всі API входи валідуються схемами Zod v4 при завантаженні модуля |
---
-## Required Environment Variables
+## Обов'язкові змінні середовища
-All secrets must be set before starting the server. The server will **fail fast** if they are missing or weak.
+Всі секрети повинні бути встановлені перед запуском сервера. Сервер **швидко завершиться з помилкою**, якщо вони відсутні або слабкі.
```bash
-# REQUIRED — server will not start without these:
-JWT_SECRET=$(openssl rand -base64 48) # min 32 chars
-API_KEY_SECRET=$(openssl rand -hex 32) # min 16 chars
+# ОБОВ'ЯЗКОВО — сервер не запуститься без них:
+JWT_SECRET=$(openssl rand -base64 48) # мін 32 символи
+API_KEY_SECRET=$(openssl rand -hex 32) # мін 16 символів
-# RECOMMENDED — enables encryption at rest:
+# РЕКОМЕНДОВАНО — вмикає шифрування в стані спокою:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
```
-The server actively rejects known-weak values like `changeme`, `secret`, or `password`.
+Сервер активно відхиляє відомі слабкі значення, такі як `changeme`, `secret` або `password`.
---
-## Docker Security
+## Безпека Docker
-- Use non-root user in production
-- Mount secrets as read-only volumes
-- Never copy `.env` files into Docker images
-- Use `.dockerignore` to exclude sensitive files
-- Set `AUTH_COOKIE_SECURE=true` when behind HTTPS
+- Використовуйте не-root користувача у продакшені
+- Монтуйте секрети як томи тільки для читання
+- Ніколи не копіюйте файли `.env` у Docker образи
+- Використовуйте `.dockerignore` для виключення чутливих файлів
+- Встановіть `AUTH_COOKIE_SECURE=true` при роботі за HTTPS
```bash
docker run -d \
@@ -170,10 +170,10 @@ docker run -d \
---
-## Dependencies
+## Залежності
-- Run `npm audit` regularly
-- Keep dependencies updated
-- The project uses `husky` + `lint-staged` for pre-commit checks
-- CI pipeline runs ESLint security rules on every push
-- Provider constants validated at module load via Zod (`src/shared/validation/providerSchema.ts`)
+- Регулярно запускайте `npm audit`
+- Тримайте залежності оновленими
+- Проєкт використовує `husky` + `lint-staged` для перевірок перед комітом
+- CI pipeline запускає правила безпеки ESLint при кожному push
+- Константи провайдерів валідуються при завантаженні модуля через Zod (`src/shared/validation/providerSchema.ts`)
diff --git a/docs/i18n/uk-UA/docs/A2A-SERVER.md b/docs/i18n/uk-UA/docs/A2A-SERVER.md
index 87fab27f52..c62075ba6c 100644
--- a/docs/i18n/uk-UA/docs/A2A-SERVER.md
+++ b/docs/i18n/uk-UA/docs/A2A-SERVER.md
@@ -1,38 +1,38 @@
-# OmniRoute A2A Server Documentation (Українська)
+# Документація A2A сервера OmniRoute
🌐 **Languages:** 🇺🇸 [English](../../../../docs/A2A-SERVER.md) · 🇪🇸 [es](../../es/docs/A2A-SERVER.md) · 🇫🇷 [fr](../../fr/docs/A2A-SERVER.md) · 🇩🇪 [de](../../de/docs/A2A-SERVER.md) · 🇮🇹 [it](../../it/docs/A2A-SERVER.md) · 🇷🇺 [ru](../../ru/docs/A2A-SERVER.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/A2A-SERVER.md) · 🇯🇵 [ja](../../ja/docs/A2A-SERVER.md) · 🇰🇷 [ko](../../ko/docs/A2A-SERVER.md) · 🇸🇦 [ar](../../ar/docs/A2A-SERVER.md) · 🇮🇳 [hi](../../hi/docs/A2A-SERVER.md) · 🇮🇳 [in](../../in/docs/A2A-SERVER.md) · 🇹🇭 [th](../../th/docs/A2A-SERVER.md) · 🇻🇳 [vi](../../vi/docs/A2A-SERVER.md) · 🇮🇩 [id](../../id/docs/A2A-SERVER.md) · 🇲🇾 [ms](../../ms/docs/A2A-SERVER.md) · 🇳🇱 [nl](../../nl/docs/A2A-SERVER.md) · 🇵🇱 [pl](../../pl/docs/A2A-SERVER.md) · 🇸🇪 [sv](../../sv/docs/A2A-SERVER.md) · 🇳🇴 [no](../../no/docs/A2A-SERVER.md) · 🇩🇰 [da](../../da/docs/A2A-SERVER.md) · 🇫🇮 [fi](../../fi/docs/A2A-SERVER.md) · 🇵🇹 [pt](../../pt/docs/A2A-SERVER.md) · 🇷🇴 [ro](../../ro/docs/A2A-SERVER.md) · 🇭🇺 [hu](../../hu/docs/A2A-SERVER.md) · 🇧🇬 [bg](../../bg/docs/A2A-SERVER.md) · 🇸🇰 [sk](../../sk/docs/A2A-SERVER.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/A2A-SERVER.md) · 🇮🇱 [he](../../he/docs/A2A-SERVER.md) · 🇵🇭 [phi](../../phi/docs/A2A-SERVER.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/A2A-SERVER.md) · 🇨🇿 [cs](../../cs/docs/A2A-SERVER.md) · 🇹🇷 [tr](../../tr/docs/A2A-SERVER.md)
---
-> Agent-to-Agent Protocol v0.3 — OmniRoute as an intelligent routing agent
+> Agent-to-Agent Protocol v0.3 — OmniRoute як інтелектуальний агент маршрутизації
-## Agent Discovery
+## Виявлення агента
```bash
curl http://localhost:20128/.well-known/agent.json
```
-Returns the Agent Card describing OmniRoute's capabilities, skills, and authentication requirements.
+Повертає Agent Card, що описує можливості OmniRoute, навички та вимоги до автентифікації.
---
-## Authentication
+## Автентифікація
-All `/a2a` requests require an API key via the `Authorization` header:
+Всі запити до `/a2a` вимагають API ключ через заголовок `Authorization`:
```
Authorization: Bearer YOUR_OMNIROUTE_API_KEY
```
-If no API key is configured on the server, authentication is bypassed.
+Якщо на сервері не налаштовано API ключ, автентифікація пропускається.
---
-## JSON-RPC 2.0 Methods
+## Методи JSON-RPC 2.0
-### `message/send` — Synchronous Execution
+### `message/send` — Синхронне виконання
-Sends a message to a skill and waits for the complete response.
+Надсилає повідомлення до навички та чекає на повну відповідь.
```bash
curl -X POST http://localhost:20128/a2a \
@@ -50,7 +50,7 @@ curl -X POST http://localhost:20128/a2a \
}'
```
-**Response:**
+**Відповідь:**
```json
{
@@ -71,9 +71,9 @@ curl -X POST http://localhost:20128/a2a \
}
```
-### `message/stream` — SSE Streaming
+### `message/stream` — SSE потокова передача
-Same as `message/send` but returns Server-Sent Events for real-time streaming.
+Те саме, що й `message/send`, але повертає Server-Sent Events для потокової передачі в реальному часі.
```bash
curl -N -X POST http://localhost:20128/a2a \
@@ -90,7 +90,7 @@ curl -N -X POST http://localhost:20128/a2a \
}'
```
-**SSE Events:**
+**SSE події:**
```
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"working"},"chunk":{"type":"text","content":"..."}}}
@@ -100,7 +100,7 @@ data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","s
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"completed"},"metadata":{...}}}
```
-### `tasks/get` — Query Task Status
+### `tasks/get` — Запит статусу завдання
```bash
curl -X POST http://localhost:20128/a2a \
@@ -109,7 +109,7 @@ curl -X POST http://localhost:20128/a2a \
-d '{"jsonrpc":"2.0","id":"2","method":"tasks/get","params":{"taskId":"TASK_UUID"}}'
```
-### `tasks/cancel` — Cancel a Task
+### `tasks/cancel` — Скасування завдання
```bash
curl -X POST http://localhost:20128/a2a \
@@ -120,16 +120,16 @@ curl -X POST http://localhost:20128/a2a \
---
-## Available Skills
+## Доступні навички
-| Skill | Description |
+| Навичка | Опис |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------ |
-| `smart-routing` | Routes prompts through OmniRoute's intelligent pipeline. Returns response with routing explanation, cost, and resilience trace. |
-| `quota-management` | Answers natural-language queries about provider quotas, suggests free combos, and provides quota rankings. |
+| `smart-routing` | Маршрутизує промпти через інтелектуальний конвеєр OmniRoute. Повертає відповідь з поясненням маршрутизації, вартістю та трасуванням стійкості. |
+| `quota-management` | Відповідає на запити природною мовою про квоти провайдерів, пропонує безкоштовні комбо та надає рейтинги квот. |
---
-## Task Lifecycle
+## Життєвий цикл завдання
```
submitted → working → completed
@@ -137,25 +137,25 @@ submitted → working → completed
→ cancelled
```
-- Tasks expire after 5 minutes (configurable)
-- Terminal states: `completed`, `failed`, `cancelled`
-- Event log tracks every state transition
+- Завдання закінчуються через 5 хвилин (налаштовується)
+- Термінальні стани: `completed`, `failed`, `cancelled`
+- Журнал подій відстежує кожен перехід стану
---
-## Error Codes
+## Коди помилок
-| Code | Meaning |
+| Код | Значення |
| :----- | :----------------------------- |
-| -32700 | Parse error (invalid JSON) |
-| -32600 | Invalid request / Unauthorized |
-| -32601 | Method or skill not found |
-| -32602 | Invalid params |
-| -32603 | Internal error |
+| -32700 | Помилка парсингу (невалідний JSON) |
+| -32600 | Невалідний запит / Неавторизовано |
+| -32601 | Метод або навичка не знайдені |
+| -32602 | Невалідні параметри |
+| -32603 | Внутрішня помилка |
---
-## Integration Examples
+## Приклади інтеграції
### Python (requests)
diff --git a/docs/i18n/uk-UA/docs/API_REFERENCE.md b/docs/i18n/uk-UA/docs/API_REFERENCE.md
index bfcade7fc2..dbbcdfd3be 100644
--- a/docs/i18n/uk-UA/docs/API_REFERENCE.md
+++ b/docs/i18n/uk-UA/docs/API_REFERENCE.md
@@ -1,24 +1,22 @@
-# API Reference (Українська)
+# Довідник API
🌐 **Languages:** 🇺🇸 [English](../../../../docs/API_REFERENCE.md) · 🇪🇸 [es](../../es/docs/API_REFERENCE.md) · 🇫🇷 [fr](../../fr/docs/API_REFERENCE.md) · 🇩🇪 [de](../../de/docs/API_REFERENCE.md) · 🇮🇹 [it](../../it/docs/API_REFERENCE.md) · 🇷🇺 [ru](../../ru/docs/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/API_REFERENCE.md) · 🇯🇵 [ja](../../ja/docs/API_REFERENCE.md) · 🇰🇷 [ko](../../ko/docs/API_REFERENCE.md) · 🇸🇦 [ar](../../ar/docs/API_REFERENCE.md) · 🇮🇳 [hi](../../hi/docs/API_REFERENCE.md) · 🇮🇳 [in](../../in/docs/API_REFERENCE.md) · 🇹🇭 [th](../../th/docs/API_REFERENCE.md) · 🇻🇳 [vi](../../vi/docs/API_REFERENCE.md) · 🇮🇩 [id](../../id/docs/API_REFERENCE.md) · 🇲🇾 [ms](../../ms/docs/API_REFERENCE.md) · 🇳🇱 [nl](../../nl/docs/API_REFERENCE.md) · 🇵🇱 [pl](../../pl/docs/API_REFERENCE.md) · 🇸🇪 [sv](../../sv/docs/API_REFERENCE.md) · 🇳🇴 [no](../../no/docs/API_REFERENCE.md) · 🇩🇰 [da](../../da/docs/API_REFERENCE.md) · 🇫🇮 [fi](../../fi/docs/API_REFERENCE.md) · 🇵🇹 [pt](../../pt/docs/API_REFERENCE.md) · 🇷🇴 [ro](../../ro/docs/API_REFERENCE.md) · 🇭🇺 [hu](../../hu/docs/API_REFERENCE.md) · 🇧🇬 [bg](../../bg/docs/API_REFERENCE.md) · 🇸🇰 [sk](../../sk/docs/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/API_REFERENCE.md) · 🇮🇱 [he](../../he/docs/API_REFERENCE.md) · 🇵🇭 [phi](../../phi/docs/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/API_REFERENCE.md) · 🇨🇿 [cs](../../cs/docs/API_REFERENCE.md) · 🇹🇷 [tr](../../tr/docs/API_REFERENCE.md)
----
-
-Complete reference for all OmniRoute API endpoints.
+Повний довідник для всіх API endpoints OmniRoute.
---
-## Table of Contents
+## Зміст
- [Chat Completions](#chat-completions)
- [Embeddings](#embeddings)
-- [Image Generation](#image-generation)
-- [List Models](#list-models)
-- [Compatibility Endpoints](#compatibility-endpoints)
-- [Semantic Cache](#semantic-cache)
-- [Dashboard & Management](#dashboard--management)
-- [Request Processing](#request-processing)
-- [Authentication](#authentication)
+- [Генерація зображень](#генерація-зображень)
+- [Список моделей](#список-моделей)
+- [Endpoints сумісності](#endpoints-сумісності)
+- [Семантичний кеш](#семантичний-кеш)
+- [Панель керування та управління](#панель-керування-та-управління)
+- [Обробка запитів](#обробка-запитів)
+- [Автентифікація](#автентифікація)
---
@@ -38,22 +36,22 @@ Content-Type: application/json
}
```
-### Custom Headers
+### Користувацькі заголовки
-| Header | Direction | Description |
+| Заголовок | Напрямок | Опис |
| ------------------------ | --------- | ------------------------------------------------ |
-| `X-OmniRoute-No-Cache` | Request | Set to `true` to bypass cache |
-| `X-OmniRoute-Progress` | Request | Set to `true` for progress events |
-| `X-Session-Id` | Request | Sticky session key for external session affinity |
-| `x_session_id` | Request | Underscore variant also accepted (direct HTTP) |
-| `Idempotency-Key` | Request | Dedup key (5s window) |
-| `X-Request-Id` | Request | Alternative dedup key |
-| `X-OmniRoute-Cache` | Response | `HIT` or `MISS` (non-streaming) |
-| `X-OmniRoute-Idempotent` | Response | `true` if deduplicated |
-| `X-OmniRoute-Progress` | Response | `enabled` if progress tracking on |
-| `X-OmniRoute-Session-Id` | Response | Effective session ID used by OmniRoute |
+| `X-OmniRoute-No-Cache` | Запит | Встановіть `true` для обходу кешу |
+| `X-OmniRoute-Progress` | Запит | Встановіть `true` для подій прогресу |
+| `X-Session-Id` | Запит | Ключ липкої сесії для зовнішньої прив'язки сесії |
+| `x_session_id` | Запит | Варіант з підкресленням також приймається (прямий HTTP) |
+| `Idempotency-Key` | Запит | Ключ дедуплікації (вікно 5с) |
+| `X-Request-Id` | Запит | Альтернативний ключ дедуплікації |
+| `X-OmniRoute-Cache` | Відповідь | `HIT` або `MISS` (без потокової передачі) |
+| `X-OmniRoute-Idempotent` | Відповідь | `true` якщо дедупліковано |
+| `X-OmniRoute-Progress` | Відповідь | `enabled` якщо відстеження прогресу увімкнено |
+| `X-OmniRoute-Session-Id` | Відповідь | Ефективний ID сесії, використаний OmniRoute |
-> Nginx note: if you rely on underscore headers (for example `x_session_id`), enable `underscores_in_headers on;`.
+> Примітка Nginx: якщо ви покладаєтесь на заголовки з підкресленням (наприклад `x_session_id`), увімкніть `underscores_in_headers on;`.
---
@@ -70,16 +68,16 @@ Content-Type: application/json
}
```
-Available providers: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, **GitHub Models**.
+Доступні провайдери: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, **GitHub Models**.
```bash
-# List all embedding models
+# Список всіх моделей embeddings
GET /v1/embeddings
```
---
-## Image Generation
+## Генерація зображень
```bash
POST /v1/images/generations
@@ -93,42 +91,42 @@ Content-Type: application/json
}
```
-Available providers: OpenAI (DALL-E, GPT Image 1), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, SD WebUI (local), ComfyUI (local).
+Доступні провайдери: OpenAI (DALL-E, GPT Image 1), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, SD WebUI (локальний), ComfyUI (локальний).
```bash
-# List all image models
+# Список всіх моделей зображень
GET /v1/images/generations
```
---
-## List Models
+## Список моделей
```bash
GET /v1/models
Authorization: Bearer your-api-key
-→ Returns all chat, embedding, and image models + combos in OpenAI format
+→ Повертає всі моделі чату, embeddings та зображень + комбо у форматі OpenAI
```
---
-## Compatibility Endpoints
+## Endpoints сумісності
-| Method | Path | Format |
-| ------ | --------------------------- | ---------------------- |
-| POST | `/v1/chat/completions` | OpenAI |
-| POST | `/v1/messages` | Anthropic |
-| POST | `/v1/responses` | OpenAI Responses |
-| POST | `/v1/embeddings` | OpenAI |
-| POST | `/v1/images/generations` | OpenAI |
-| GET | `/v1/models` | OpenAI |
-| POST | `/v1/messages/count_tokens` | Anthropic |
-| GET | `/v1beta/models` | Gemini |
-| POST | `/v1beta/models/{...path}` | Gemini generateContent |
-| POST | `/v1/api/chat` | Ollama |
+| Метод | Шлях | Формат |
+| ----- | --------------------------- | ---------------------- |
+| POST | `/v1/chat/completions` | OpenAI |
+| POST | `/v1/messages` | Anthropic |
+| POST | `/v1/responses` | OpenAI Responses |
+| POST | `/v1/embeddings` | OpenAI |
+| POST | `/v1/images/generations` | OpenAI |
+| GET | `/v1/models` | OpenAI |
+| POST | `/v1/messages/count_tokens` | Anthropic |
+| GET | `/v1beta/models` | Gemini |
+| POST | `/v1beta/models/{...path}` | Gemini generateContent |
+| POST | `/v1/api/chat` | Ollama |
-### Dedicated Provider Routes
+### Виділені маршрути провайдерів
```bash
POST /v1/providers/{provider}/chat/completions
@@ -136,21 +134,21 @@ POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
```
-The provider prefix is auto-added if missing. Mismatched models return `400`.
+Префікс провайдера додається автоматично, якщо відсутній. Невідповідні моделі повертають `400`.
---
-## Semantic Cache
+## Семантичний кеш
```bash
-# Get cache stats
+# Отримати статистику кешу
GET /api/cache/stats
-# Clear all caches
+# Очистити всі кеші
DELETE /api/cache/stats
```
-Response example:
+Приклад відповіді:
```json
{
@@ -169,171 +167,171 @@ Response example:
---
-## Dashboard & Management
+## Панель керування та управління
-### Authentication
+### Автентифікація
-| Endpoint | Method | Description |
-| ----------------------------- | ------- | --------------------- |
-| `/api/auth/login` | POST | Login |
-| `/api/auth/logout` | POST | Logout |
-| `/api/settings/require-login` | GET/PUT | Toggle login required |
+| Endpoint | Метод | Опис |
+| ----------------------------- | ------- | ------------------------- |
+| `/api/auth/login` | POST | Вхід |
+| `/api/auth/logout` | POST | Вихід |
+| `/api/settings/require-login` | GET/PUT | Перемикач обов'язкового входу |
-### Provider Management
+### Управління провайдерами
-| Endpoint | Method | Description |
+| Endpoint | Метод | Опис |
| ---------------------------- | --------------------- | ---------------------------------------------- |
-| `/api/providers` | GET/POST | List / create providers |
-| `/api/providers/[id]` | GET/PUT/DELETE | Manage a provider |
-| `/api/providers/[id]/test` | POST | Test provider connection |
-| `/api/providers/[id]/models` | GET | List provider models |
-| `/api/providers/validate` | POST | Validate provider config |
-| `/api/provider-nodes*` | Various | Provider node management |
-| `/api/provider-models` | GET/POST/PATCH/DELETE | Custom models (add, update, hide/show, delete) |
+| `/api/providers` | GET/POST | Список / створення провайдерів |
+| `/api/providers/[id]` | GET/PUT/DELETE | Управління провайдером |
+| `/api/providers/[id]/test` | POST | Тест з'єднання провайдера |
+| `/api/providers/[id]/models` | GET | Список моделей провайдера |
+| `/api/providers/validate` | POST | Валідація конфігурації провайдера |
+| `/api/provider-nodes*` | Різні | Управління вузлами провайдера |
+| `/api/provider-models` | GET/POST/PATCH/DELETE | Користувацькі моделі (додати, оновити, приховати/показати, видалити) |
-### OAuth Flows
+### OAuth потоки
-| Endpoint | Method | Description |
-| -------------------------------- | ------- | ----------------------- |
-| `/api/oauth/[provider]/[action]` | Various | Provider-specific OAuth |
+| Endpoint | Метод | Опис |
+| -------------------------------- | ------ | --------------------------- |
+| `/api/oauth/[provider]/[action]` | Різні | OAuth специфічний для провайдера |
-### Routing & Config
+### Маршрутизація та конфігурація
-| Endpoint | Method | Description |
-| --------------------- | -------- | ----------------------------- |
-| `/api/models/alias` | GET/POST | Model aliases |
-| `/api/models/catalog` | GET | All models by provider + type |
-| `/api/combos*` | Various | Combo management |
-| `/api/keys*` | Various | API key management |
-| `/api/pricing` | GET | Model pricing |
+| Endpoint | Метод | Опис |
+| --------------------- | ------ | ----------------------------- |
+| `/api/models/alias` | GET/POST | Псевдоніми моделей |
+| `/api/models/catalog` | GET | Всі моделі за провайдером + тип |
+| `/api/combos*` | Різні | Управління комбо |
+| `/api/keys*` | Різні | Управління API ключами |
+| `/api/pricing` | GET | Ціни моделей |
-### Usage & Analytics
+### Використання та аналітика
-| Endpoint | Method | Description |
-| --------------------------- | ------ | -------------------- |
-| `/api/usage/history` | GET | Usage history |
-| `/api/usage/logs` | GET | Usage logs |
-| `/api/usage/request-logs` | GET | Request-level logs |
-| `/api/usage/[connectionId]` | GET | Per-connection usage |
+| Endpoint | Метод | Опис |
+| --------------------------- | ----- | ---------------------------- |
+| `/api/usage/history` | GET | Історія використання |
+| `/api/usage/logs` | GET | Логи використання |
+| `/api/usage/request-logs` | GET | Логи на рівні запитів |
+| `/api/usage/[connectionId]` | GET | Використання на з'єднання |
-### Settings
+### Налаштування
-| Endpoint | Method | Description |
-| ------------------------------- | ------------- | ---------------------- |
-| `/api/settings` | GET/PUT/PATCH | General settings |
-| `/api/settings/proxy` | GET/PUT | Network proxy config |
-| `/api/settings/proxy/test` | POST | Test proxy connection |
-| `/api/settings/ip-filter` | GET/PUT | IP allowlist/blocklist |
-| `/api/settings/thinking-budget` | GET/PUT | Reasoning token budget |
-| `/api/settings/system-prompt` | GET/PUT | Global system prompt |
+| Endpoint | Метод | Опис |
+| ------------------------------- | ------------- | -------------------------- |
+| `/api/settings` | GET/PUT/PATCH | Загальні налаштування |
+| `/api/settings/proxy` | GET/PUT | Конфігурація мережевого проксі |
+| `/api/settings/proxy/test` | POST | Тест з'єднання проксі |
+| `/api/settings/ip-filter` | GET/PUT | Білий/чорний список IP |
+| `/api/settings/thinking-budget` | GET/PUT | Бюджет токенів міркування |
+| `/api/settings/system-prompt` | GET/PUT | Глобальний системний промпт |
-### Monitoring
+### Моніторинг
-| Endpoint | Method | Description |
+| Endpoint | Метод | Опис |
| ------------------------ | ---------- | ---------------------------------------------------------------------------------------------------- |
-| `/api/sessions` | GET | Active session tracking |
-| `/api/rate-limits` | GET | Per-account rate limits |
-| `/api/monitoring/health` | GET | Health check + provider summary (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`) |
-| `/api/cache/stats` | GET/DELETE | Cache stats / clear |
+| `/api/sessions` | GET | Відстеження активних сесій |
+| `/api/rate-limits` | GET | Обмеження швидкості на акаунт |
+| `/api/monitoring/health` | GET | Перевірка здоров'я + зведення провайдерів (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`) |
+| `/api/cache/stats` | GET/DELETE | Статистика кешу / очищення |
-### Backup & Export/Import
+### Резервне копіювання та експорт/імпорт
-| Endpoint | Method | Description |
-| --------------------------- | ------ | --------------------------------------- |
-| `/api/db-backups` | GET | List available backups |
-| `/api/db-backups` | PUT | Create a manual backup |
-| `/api/db-backups` | POST | Restore from a specific backup |
-| `/api/db-backups/export` | GET | Download database as .sqlite file |
-| `/api/db-backups/import` | POST | Upload .sqlite file to replace database |
-| `/api/db-backups/exportAll` | GET | Download full backup as .tar.gz archive |
+| Endpoint | Метод | Опис |
+| --------------------------- | ----- | --------------------------------------- |
+| `/api/db-backups` | GET | Список доступних резервних копій |
+| `/api/db-backups` | PUT | Створити ручну резервну копію |
+| `/api/db-backups` | POST | Відновити з конкретної резервної копії |
+| `/api/db-backups/export` | GET | Завантажити базу даних як .sqlite файл |
+| `/api/db-backups/import` | POST | Завантажити .sqlite файл для заміни бази даних |
+| `/api/db-backups/exportAll` | GET | Завантажити повну резервну копію як .tar.gz архів |
-### Cloud Sync
+### Хмарна синхронізація
-| Endpoint | Method | Description |
-| ---------------------- | ------- | --------------------- |
-| `/api/sync/cloud` | Various | Cloud sync operations |
-| `/api/sync/initialize` | POST | Initialize sync |
-| `/api/cloud/*` | Various | Cloud management |
+| Endpoint | Метод | Опис |
+| ---------------------- | ------ | ------------------------- |
+| `/api/sync/cloud` | Різні | Операції хмарної синхронізації |
+| `/api/sync/initialize` | POST | Ініціалізація синхронізації |
+| `/api/cloud/*` | Різні | Управління хмарою |
-### Tunnels
+### Тунелі
-| Endpoint | Method | Description |
-| -------------------------- | ------ | ----------------------------------------------------------------------- |
-| `/api/tunnels/cloudflared` | GET | Read Cloudflare Quick Tunnel install/runtime status for the dashboard |
-| `/api/tunnels/cloudflared` | POST | Enable or disable the Cloudflare Quick Tunnel (`action=enable/disable`) |
+| Endpoint | Метод | Опис |
+| -------------------------- | ----- | ----------------------------------------------------------------------- |
+| `/api/tunnels/cloudflared` | GET | Читання статусу встановлення/виконання Cloudflare Quick Tunnel для панелі |
+| `/api/tunnels/cloudflared` | POST | Увімкнути або вимкнути Cloudflare Quick Tunnel (`action=enable/disable`) |
-### CLI Tools
+### CLI інструменти
-| Endpoint | Method | Description |
-| ---------------------------------- | ------ | ------------------- |
-| `/api/cli-tools/claude-settings` | GET | Claude CLI status |
-| `/api/cli-tools/codex-settings` | GET | Codex CLI status |
-| `/api/cli-tools/droid-settings` | GET | Droid CLI status |
-| `/api/cli-tools/openclaw-settings` | GET | OpenClaw CLI status |
-| `/api/cli-tools/runtime/[toolId]` | GET | Generic CLI runtime |
+| Endpoint | Метод | Опис |
+| ---------------------------------- | ----- | ------------------- |
+| `/api/cli-tools/claude-settings` | GET | Статус Claude CLI |
+| `/api/cli-tools/codex-settings` | GET | Статус Codex CLI |
+| `/api/cli-tools/droid-settings` | GET | Статус Droid CLI |
+| `/api/cli-tools/openclaw-settings` | GET | Статус OpenClaw CLI |
+| `/api/cli-tools/runtime/[toolId]` | GET | Загальний CLI runtime |
-CLI responses include: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
+Відповіді CLI включають: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
-### ACP Agents
+### ACP агенти
-| Endpoint | Method | Description |
+| Endpoint | Метод | Опис |
| ----------------- | ------ | -------------------------------------------------------- |
-| `/api/acp/agents` | GET | List all detected agents (built-in + custom) with status |
-| `/api/acp/agents` | POST | Add custom agent or refresh detection cache |
-| `/api/acp/agents` | DELETE | Remove a custom agent by `id` query param |
+| `/api/acp/agents` | GET | Список всіх виявлених агентів (вбудовані + користувацькі) зі статусом |
+| `/api/acp/agents` | POST | Додати користувацького агента або оновити кеш виявлення |
+| `/api/acp/agents` | DELETE | Видалити користувацького агента за параметром запиту `id` |
-GET response includes `agents[]` (id, name, binary, version, installed, protocol, isCustom) and `summary` (total, installed, notFound, builtIn, custom).
+Відповідь GET включає `agents[]` (id, name, binary, version, installed, protocol, isCustom) та `summary` (total, installed, notFound, builtIn, custom).
-### Resilience & Rate Limits
+### Стійкість та обмеження швидкості
-| Endpoint | Method | Description |
+| Endpoint | Метод | Опис |
| ----------------------- | --------- | ------------------------------- |
-| `/api/resilience` | GET/PATCH | Get/update resilience profiles |
-| `/api/resilience/reset` | POST | Reset circuit breakers |
-| `/api/rate-limits` | GET | Per-account rate limit status |
-| `/api/rate-limit` | GET | Global rate limit configuration |
+| `/api/resilience` | GET/PATCH | Отримати/оновити профілі стійкості |
+| `/api/resilience/reset` | POST | Скинути circuit breakers |
+| `/api/rate-limits` | GET | Статус обмеження швидкості на акаунт |
+| `/api/rate-limit` | GET | Глобальна конфігурація обмеження швидкості |
-### Evals
+### Оцінки
-| Endpoint | Method | Description |
+| Endpoint | Метод | Опис |
| ------------ | -------- | --------------------------------- |
-| `/api/evals` | GET/POST | List eval suites / run evaluation |
+| `/api/evals` | GET/POST | Список наборів оцінок / запуск оцінки |
-### Policies
+### Політики
-| Endpoint | Method | Description |
-| --------------- | --------------- | ----------------------- |
-| `/api/policies` | GET/POST/DELETE | Manage routing policies |
+| Endpoint | Метод | Опис |
+| --------------- | --------------- | --------------------------- |
+| `/api/policies` | GET/POST/DELETE | Управління політиками маршрутизації |
-### Compliance
+### Відповідність
-| Endpoint | Method | Description |
-| --------------------------- | ------ | ----------------------------- |
-| `/api/compliance/audit-log` | GET | Compliance audit log (last N) |
+| Endpoint | Метод | Опис |
+| --------------------------- | ----- | ----------------------------- |
+| `/api/compliance/audit-log` | GET | Журнал аудиту відповідності (останні N) |
-### v1beta (Gemini-Compatible)
+### v1beta (сумісний з Gemini)
-| Endpoint | Method | Description |
-| -------------------------- | ------ | --------------------------------- |
-| `/v1beta/models` | GET | List models in Gemini format |
-| `/v1beta/models/{...path}` | POST | Gemini `generateContent` endpoint |
+| Endpoint | Метод | Опис |
+| -------------------------- | ----- | ----------------------------- |
+| `/v1beta/models` | GET | Список моделей у форматі Gemini |
+| `/v1beta/models/{...path}` | POST | Endpoint Gemini `generateContent` |
-These endpoints mirror Gemini's API format for clients that expect native Gemini SDK compatibility.
+Ці endpoints відображають формат API Gemini для клієнтів, які очікують нативної сумісності з Gemini SDK.
-### Internal / System APIs
+### Внутрішні / системні API
-| Endpoint | Method | Description |
-| ------------------------ | ------ | ---------------------------------------------------- |
-| `/api/init` | GET | Application initialization check (used on first run) |
-| `/api/tags` | GET | Ollama-compatible model tags (for Ollama clients) |
-| `/api/restart` | POST | Trigger graceful server restart |
-| `/api/shutdown` | POST | Trigger graceful server shutdown |
-| `/api/system/env/repair` | POST | Repair OAuth provider environment variables |
-| `/api/system-info` | GET | Generate system diagnostics report |
+| Endpoint | Метод | Опис |
+| ------------------------ | ----- | ------------------------------------------------ |
+| `/api/init` | GET | Перевірка ініціалізації додатка (використовується при першому запуску) |
+| `/api/tags` | GET | Теги моделей сумісні з Ollama (для клієнтів Ollama) |
+| `/api/restart` | POST | Запустити плавний перезапуск сервера |
+| `/api/shutdown` | POST | Запустити плавне вимкнення сервера |
+| `/api/system/env/repair` | POST | Відновити змінні середовища OAuth провайдера |
+| `/api/system-info` | GET | Згенерувати звіт системної діагностики |
-> **Note:** These endpoints are used internally by the system or for Ollama client compatibility. They are not typically called by end users.
+> **Примітка:** Ці endpoints використовуються внутрішньо системою або для сумісності з клієнтами Ollama. Вони зазвичай не викликаються кінцевими користувачами.
-### OAuth Environment Repair _(v3.6.1+)_
+### Відновлення середовища OAuth _(v3.6.1+)_
```bash
POST /api/system/env/repair
@@ -344,7 +342,7 @@ Content-Type: application/json
}
```
-Repairs missing or corrupted OAuth environment variables for a specific provider. Returns:
+Відновлює відсутні або пошкоджені змінні середовища OAuth для конкретного провайдера. Повертає:
```json
{
@@ -356,7 +354,7 @@ Repairs missing or corrupted OAuth environment variables for a specific provider
---
-## Audio Transcription
+## Транскрипція аудіо
```bash
POST /v1/audio/transcriptions
@@ -364,9 +362,9 @@ Authorization: Bearer your-api-key
Content-Type: multipart/form-data
```
-Transcribe audio files using Deepgram or AssemblyAI.
+Транскрибуйте аудіофайли за допомогою Deepgram або AssemblyAI.
-**Request:**
+**Запит:**
```bash
curl -X POST http://localhost:20128/v1/audio/transcriptions \
@@ -375,7 +373,7 @@ curl -X POST http://localhost:20128/v1/audio/transcriptions \
-F "model=deepgram/nova-3"
```
-**Response:**
+**Відповідь:**
```json
{
@@ -386,36 +384,36 @@ curl -X POST http://localhost:20128/v1/audio/transcriptions \
}
```
-**Supported providers:** `deepgram/nova-3`, `assemblyai/best`.
+**Підтримувані провайдери:** `deepgram/nova-3`, `assemblyai/best`.
-**Supported formats:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
+**Підтримувані формати:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
---
-## Ollama Compatibility
+## Сумісність з Ollama
-For clients that use Ollama's API format:
+Для клієнтів, які використовують формат API Ollama:
```bash
-# Chat endpoint (Ollama format)
+# Endpoint чату (формат Ollama)
POST /v1/api/chat
-# Model listing (Ollama format)
+# Список моделей (формат Ollama)
GET /api/tags
```
-Requests are automatically translated between Ollama and internal formats.
+Запити автоматично перекладаються між форматами Ollama та внутрішніми форматами.
---
-## Telemetry
+## Телеметрія
```bash
-# Get latency telemetry summary (p50/p95/p99 per provider)
+# Отримати зведення телеметрії затримки (p50/p95/p99 на провайдера)
GET /api/telemetry/summary
```
-**Response:**
+**Відповідь:**
```json
{
@@ -428,13 +426,13 @@ GET /api/telemetry/summary
---
-## Budget
+## Бюджет
```bash
-# Get budget status for all API keys
+# Отримати статус бюджету для всіх API ключів
GET /api/usage/budget
-# Set or update a budget
+# Встановити або оновити бюджет
POST /api/usage/budget
Content-Type: application/json
@@ -447,13 +445,13 @@ Content-Type: application/json
---
-## Model Availability
+## Доступність моделей
```bash
-# Get real-time model availability across all providers
+# Отримати доступність моделей у реальному часі для всіх провайдерів
GET /api/models/availability
-# Check availability for a specific model
+# Перевірити доступність для конкретної моделі
POST /api/models/availability
Content-Type: application/json
@@ -464,25 +462,25 @@ Content-Type: application/json
---
-## Request Processing
+## Обробка запитів
-1. Client sends request to `/v1/*`
-2. Route handler calls `handleChat`, `handleEmbedding`, `handleAudioTranscription`, or `handleImageGeneration`
-3. Model is resolved (direct provider/model or alias/combo)
-4. Credentials selected from local DB with account availability filtering
-5. For chat: `handleChatCore` — format detection, translation, cache check, idempotency check
-6. Provider executor sends upstream request
-7. Response translated back to client format (chat) or returned as-is (embeddings/images/audio)
-8. Usage/logging recorded
-9. Fallback applies on errors according to combo rules
+1. Клієнт надсилає запит до `/v1/*`
+2. Обробник маршруту викликає `handleChat`, `handleEmbedding`, `handleAudioTranscription` або `handleImageGeneration`
+3. Модель розв'язується (прямий провайдер/модель або псевдонім/комбо)
+4. Облікові дані вибираються з локальної БД з фільтрацією доступності акаунта
+5. Для чату: `handleChatCore` — виявлення формату, переклад, перевірка кешу, перевірка ідемпотентності
+6. Виконавець провайдера надсилає запит вище за течією
+7. Відповідь перекладається назад у формат клієнта (чат) або повертається як є (embeddings/зображення/аудіо)
+8. Використання/логування записується
+9. Резервний варіант застосовується при помилках відповідно до правил комбо
-Full architecture reference: [`ARCHITECTURE.md`](ARCHITECTURE.md)
+Повний довідник архітектури: [`ARCHITECTURE.md`](../../../../docs/ARCHITECTURE.md)
---
-## Authentication
+## Автентифікація
-- Dashboard routes (`/dashboard/*`) use `auth_token` cookie
-- Login uses saved password hash; fallback to `INITIAL_PASSWORD`
-- `requireLogin` toggleable via `/api/settings/require-login`
-- `/v1/*` routes optionally require Bearer API key when `REQUIRE_API_KEY=true`
+- Маршрути панелі (`/dashboard/*`) використовують cookie `auth_token`
+- Вхід використовує збережений хеш пароля; резервний варіант до `INITIAL_PASSWORD`
+- `requireLogin` перемикається через `/api/settings/require-login`
+- Маршрути `/v1/*` опціонально вимагають Bearer API ключ, коли `REQUIRE_API_KEY=true`
diff --git a/docs/i18n/uk-UA/docs/AUTO-COMBO.md b/docs/i18n/uk-UA/docs/AUTO-COMBO.md
index f913375fff..f99a602e05 100644
--- a/docs/i18n/uk-UA/docs/AUTO-COMBO.md
+++ b/docs/i18n/uk-UA/docs/AUTO-COMBO.md
@@ -1,67 +1,67 @@
-# OmniRoute Auto-Combo Engine (Українська)
+# Двигун Auto-Combo OmniRoute
🌐 **Languages:** 🇺🇸 [English](../../../../docs/AUTO-COMBO.md) · 🇪🇸 [es](../../es/docs/AUTO-COMBO.md) · 🇫🇷 [fr](../../fr/docs/AUTO-COMBO.md) · 🇩🇪 [de](../../de/docs/AUTO-COMBO.md) · 🇮🇹 [it](../../it/docs/AUTO-COMBO.md) · 🇷🇺 [ru](../../ru/docs/AUTO-COMBO.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/AUTO-COMBO.md) · 🇯🇵 [ja](../../ja/docs/AUTO-COMBO.md) · 🇰🇷 [ko](../../ko/docs/AUTO-COMBO.md) · 🇸🇦 [ar](../../ar/docs/AUTO-COMBO.md) · 🇮🇳 [hi](../../hi/docs/AUTO-COMBO.md) · 🇮🇳 [in](../../in/docs/AUTO-COMBO.md) · 🇹🇭 [th](../../th/docs/AUTO-COMBO.md) · 🇻🇳 [vi](../../vi/docs/AUTO-COMBO.md) · 🇮🇩 [id](../../id/docs/AUTO-COMBO.md) · 🇲🇾 [ms](../../ms/docs/AUTO-COMBO.md) · 🇳🇱 [nl](../../nl/docs/AUTO-COMBO.md) · 🇵🇱 [pl](../../pl/docs/AUTO-COMBO.md) · 🇸🇪 [sv](../../sv/docs/AUTO-COMBO.md) · 🇳🇴 [no](../../no/docs/AUTO-COMBO.md) · 🇩🇰 [da](../../da/docs/AUTO-COMBO.md) · 🇫🇮 [fi](../../fi/docs/AUTO-COMBO.md) · 🇵🇹 [pt](../../pt/docs/AUTO-COMBO.md) · 🇷🇴 [ro](../../ro/docs/AUTO-COMBO.md) · 🇭🇺 [hu](../../hu/docs/AUTO-COMBO.md) · 🇧🇬 [bg](../../bg/docs/AUTO-COMBO.md) · 🇸🇰 [sk](../../sk/docs/AUTO-COMBO.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/AUTO-COMBO.md) · 🇮🇱 [he](../../he/docs/AUTO-COMBO.md) · 🇵🇭 [phi](../../phi/docs/AUTO-COMBO.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/AUTO-COMBO.md) · 🇨🇿 [cs](../../cs/docs/AUTO-COMBO.md) · 🇹🇷 [tr](../../tr/docs/AUTO-COMBO.md)
---
-> Self-managing model chains with adaptive scoring
+> Самокеровані ланцюги моделей з адаптивним оцінюванням
-## How It Works
+## Як це працює
-The Auto-Combo Engine dynamically selects the best provider/model for each request using a **6-factor scoring function**:
+Двигун Auto-Combo динамічно вибирає найкращого провайдера/модель для кожного запиту, використовуючи **6-факторну функцію оцінювання**:
-| Factor | Weight | Description |
-| :--------- | :----- | :---------------------------------------------- |
-| Quota | 0.20 | Remaining capacity [0..1] |
-| Health | 0.25 | Circuit breaker: CLOSED=1.0, HALF=0.5, OPEN=0.0 |
-| CostInv | 0.20 | Inverse cost (cheaper = higher score) |
-| LatencyInv | 0.15 | Inverse p95 latency (faster = higher) |
-| TaskFit | 0.10 | Model × task type fitness score |
-| Stability | 0.10 | Low variance in latency/errors |
+| Фактор | Вага | Опис |
+| :--------- | :--- | :---------------------------------------------- |
+| Quota | 0.20 | Залишкова ємність [0..1] |
+| Health | 0.25 | Circuit breaker: CLOSED=1.0, HALF=0.5, OPEN=0.0 |
+| CostInv | 0.20 | Обернена вартість (дешевше = вищий бал) |
+| LatencyInv | 0.15 | Обернена p95 затримка (швидше = вище) |
+| TaskFit | 0.10 | Оцінка відповідності модель × тип завдання |
+| Stability | 0.10 | Низька варіація затримки/помилок |
-## Mode Packs
+## Пакети режимів
-| Pack | Focus | Key Weight |
+| Пакет | Фокус | Ключова вага |
| :---------------------- | :----------- | :--------------- |
-| 🚀 **Ship Fast** | Speed | latencyInv: 0.35 |
-| 💰 **Cost Saver** | Economy | costInv: 0.40 |
-| 🎯 **Quality First** | Best model | taskFit: 0.40 |
-| 📡 **Offline Friendly** | Availability | quota: 0.40 |
+| 🚀 **Ship Fast** | Швидкість | latencyInv: 0.35 |
+| 💰 **Cost Saver** | Економія | costInv: 0.40 |
+| 🎯 **Quality First** | Краща модель | taskFit: 0.40 |
+| 📡 **Offline Friendly** | Доступність | quota: 0.40 |
-## Self-Healing
+## Самовідновлення
-- **Temporary exclusion**: Score < 0.2 → excluded for 5 min (progressive backoff, max 30 min)
-- **Circuit breaker awareness**: OPEN → auto-excluded; HALF_OPEN → probe requests
-- **Incident mode**: >50% OPEN → disable exploration, maximize stability
-- **Cooldown recovery**: After exclusion, first request is a "probe" with reduced timeout
+- **Тимчасове виключення**: Оцінка < 0.2 → виключено на 5 хв (прогресивний відкат, макс 30 хв)
+- **Усвідомлення circuit breaker**: OPEN → авто-виключено; HALF_OPEN → пробні запити
+- **Режим інциденту**: >50% OPEN → вимкнути дослідження, максимізувати стабільність
+- **Відновлення після охолодження**: Після виключення перший запит є "пробним" зі зменшеним таймаутом
-## Bandit Exploration
+## Bandit дослідження
-5% of requests (configurable) are routed to random providers for exploration. Disabled in incident mode.
+5% запитів (налаштовується) маршрутизуються до випадкових провайдерів для дослідження. Вимкнено в режимі інциденту.
## API
```bash
-# Create auto-combo
+# Створити auto-combo
curl -X POST http://localhost:20128/api/combos/auto \
-H "Content-Type: application/json" \
-d '{"id":"my-auto","name":"Auto Coder","candidatePool":["anthropic","google","openai"],"modePack":"ship-fast"}'
-# List auto-combos
+# Список auto-combos
curl http://localhost:20128/api/combos/auto
```
-## Task Fitness
+## Відповідність завданню
-30+ models scored across 6 task types (`coding`, `review`, `planning`, `analysis`, `debugging`, `documentation`). Supports wildcard patterns (e.g., `*-coder` → high coding score).
+30+ моделей оцінено за 6 типами завдань (`coding`, `review`, `planning`, `analysis`, `debugging`, `documentation`). Підтримує шаблони з підстановкою (наприклад, `*-coder` → високий бал кодування).
-## Files
+## Файли
-| File | Purpose |
+| Файл | Призначення |
| :------------------------------------------- | :------------------------------------ |
-| `open-sse/services/autoCombo/scoring.ts` | Scoring function & pool normalization |
-| `open-sse/services/autoCombo/taskFitness.ts` | Model × task fitness lookup |
-| `open-sse/services/autoCombo/engine.ts` | Selection logic, bandit, budget cap |
-| `open-sse/services/autoCombo/selfHealing.ts` | Exclusion, probes, incident mode |
-| `open-sse/services/autoCombo/modePacks.ts` | 4 weight profiles |
+| `open-sse/services/autoCombo/scoring.ts` | Функція оцінювання та нормалізація пулу |
+| `open-sse/services/autoCombo/taskFitness.ts` | Пошук відповідності модель × завдання |
+| `open-sse/services/autoCombo/engine.ts` | Логіка вибору, bandit, обмеження бюджету |
+| `open-sse/services/autoCombo/selfHealing.ts` | Виключення, проби, режим інциденту |
+| `open-sse/services/autoCombo/modePacks.ts` | 4 профілі ваг |
| `src/app/api/combos/auto/route.ts` | REST API |
diff --git a/docs/i18n/uk-UA/docs/USER_GUIDE.md b/docs/i18n/uk-UA/docs/USER_GUIDE.md
index 87cddbb77a..9aefcf0cf4 100644
--- a/docs/i18n/uk-UA/docs/USER_GUIDE.md
+++ b/docs/i18n/uk-UA/docs/USER_GUIDE.md
@@ -1,277 +1,277 @@
-# User Guide (Українська)
+# Посібник користувача
-🌐 **Languages:** 🇺🇸 [English](../../../../docs/USER_GUIDE.md) · 🇪🇸 [es](../../es/docs/USER_GUIDE.md) · 🇫🇷 [fr](../../fr/docs/USER_GUIDE.md) · 🇩🇪 [de](../../de/docs/USER_GUIDE.md) · 🇮🇹 [it](../../it/docs/USER_GUIDE.md) · 🇷🇺 [ru](../../ru/docs/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/USER_GUIDE.md) · 🇯🇵 [ja](../../ja/docs/USER_GUIDE.md) · 🇰🇷 [ko](../../ko/docs/USER_GUIDE.md) · 🇸🇦 [ar](../../ar/docs/USER_GUIDE.md) · 🇮🇳 [hi](../../hi/docs/USER_GUIDE.md) · 🇮🇳 [in](../../in/docs/USER_GUIDE.md) · 🇹🇭 [th](../../th/docs/USER_GUIDE.md) · 🇻🇳 [vi](../../vi/docs/USER_GUIDE.md) · 🇮🇩 [id](../../id/docs/USER_GUIDE.md) · 🇲🇾 [ms](../../ms/docs/USER_GUIDE.md) · 🇳🇱 [nl](../../nl/docs/USER_GUIDE.md) · 🇵🇱 [pl](../../pl/docs/USER_GUIDE.md) · 🇸🇪 [sv](../../sv/docs/USER_GUIDE.md) · 🇳🇴 [no](../../no/docs/USER_GUIDE.md) · 🇩🇰 [da](../../da/docs/USER_GUIDE.md) · 🇫🇮 [fi](../../fi/docs/USER_GUIDE.md) · 🇵🇹 [pt](../../pt/docs/USER_GUIDE.md) · 🇷🇴 [ro](../../ro/docs/USER_GUIDE.md) · 🇭🇺 [hu](../../hu/docs/USER_GUIDE.md) · 🇧🇬 [bg](../../bg/docs/USER_GUIDE.md) · 🇸🇰 [sk](../../sk/docs/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/USER_GUIDE.md) · 🇮🇱 [he](../../he/docs/USER_GUIDE.md) · 🇵🇭 [phi](../../phi/docs/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/USER_GUIDE.md) · 🇨🇿 [cs](../../cs/docs/USER_GUIDE.md) · 🇹🇷 [tr](../../tr/docs/USER_GUIDE.md)
+🌐 **Мови:** 🇺🇸 [English](../../../../docs/USER_GUIDE.md) · 🇪🇸 [es](../../es/docs/USER_GUIDE.md) · 🇫🇷 [fr](../../fr/docs/USER_GUIDE.md) · 🇩🇪 [de](../../de/docs/USER_GUIDE.md) · 🇮🇹 [it](../../it/docs/USER_GUIDE.md) · 🇷🇺 [ru](../../ru/docs/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/USER_GUIDE.md) · 🇯🇵 [ja](../../ja/docs/USER_GUIDE.md) · 🇰🇷 [ko](../../ko/docs/USER_GUIDE.md) · 🇸🇦 [ar](../../ar/docs/USER_GUIDE.md) · 🇮🇳 [hi](../../hi/docs/USER_GUIDE.md) · 🇮🇳 [in](../../in/docs/USER_GUIDE.md) · 🇹🇭 [th](../../th/docs/USER_GUIDE.md) · 🇻🇳 [vi](../../vi/docs/USER_GUIDE.md) · 🇮🇩 [id](../../id/docs/USER_GUIDE.md) · 🇲🇾 [ms](../../ms/docs/USER_GUIDE.md) · 🇳🇱 [nl](../../nl/docs/USER_GUIDE.md) · 🇵🇱 [pl](../../pl/docs/USER_GUIDE.md) · 🇸🇪 [sv](../../sv/docs/USER_GUIDE.md) · 🇳🇴 [no](../../no/docs/USER_GUIDE.md) · 🇩🇰 [da](../../da/docs/USER_GUIDE.md) · 🇫🇮 [fi](../../fi/docs/USER_GUIDE.md) · 🇵🇹 [pt](../../pt/docs/USER_GUIDE.md) · 🇷🇴 [ro](../../ro/docs/USER_GUIDE.md) · 🇭🇺 [hu](../../hu/docs/USER_GUIDE.md) · 🇧🇬 [bg](../../bg/docs/USER_GUIDE.md) · 🇸🇰 [sk](../../sk/docs/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/USER_GUIDE.md) · 🇮🇱 [he](../../he/docs/USER_GUIDE.md) · 🇵🇭 [phi](../../phi/docs/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/USER_GUIDE.md) · 🇨🇿 [cs](../../cs/docs/USER_GUIDE.md) · 🇹🇷 [tr](../../tr/docs/USER_GUIDE.md)
---
-Complete guide for configuring providers, creating combos, integrating CLI tools, and deploying OmniRoute.
+Повний посібник з налаштування провайдерів, створення комбо, інтеграції CLI-інструментів та розгортання OmniRoute.
---
-## Table of Contents
+## Зміст
-- [Pricing at a Glance](#-pricing-at-a-glance)
-- [Use Cases](#-use-cases)
-- [Provider Setup](#-provider-setup)
-- [CLI Integration](#-cli-integration)
-- [Deployment](#-deployment)
-- [Available Models](#-available-models)
-- [Advanced Features](#-advanced-features)
+- [Огляд цін](#-огляд-цін)
+- [Варіанти використання](#-варіанти-використання)
+- [Налаштування провайдерів](#-налаштування-провайдерів)
+- [Інтеграція CLI](#-інтеграція-cli)
+- [Розгортання](#-розгортання)
+- [Доступні моделі](#-доступні-моделі)
+- [Розширені функції](#-розширені-функції)
---
-## 💰 Pricing at a Glance
+## 💰 Огляд цін
-| Tier | Provider | Cost | Quota Reset | Best For |
+| Рівень | Провайдер | Вартість | Скидання квоти | Найкраще для |
| ------------------- | ----------------- | ----------- | ---------------- | -------------------- |
-| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
-| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
-| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
-| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
-| **🔑 API KEY** | DeepSeek | Pay per use | None | Cheap reasoning |
-| | Groq | Pay per use | None | Ultra-fast inference |
-| | xAI (Grok) | Pay per use | None | Grok 4 reasoning |
-| | Mistral | Pay per use | None | EU-hosted models |
-| | Perplexity | Pay per use | None | Search-augmented |
-| | Together AI | Pay per use | None | Open-source models |
-| | Fireworks AI | Pay per use | None | Fast FLUX images |
-| | Cerebras | Pay per use | None | Wafer-scale speed |
-| | Cohere | Pay per use | None | Command R+ RAG |
-| | NVIDIA NIM | Pay per use | None | Enterprise models |
-| **💰 CHEAP** | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
-| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
-| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
-| **🆓 FREE** | Qoder | $0 | Unlimited | 8 models free |
-| | Qwen | $0 | Unlimited | 3 models free |
-| | Kiro | $0 | Unlimited | Claude free |
+| **💳 ПІДПИСКА** | Claude Code (Pro) | $20/міс | 5год + щотижня | Вже підписані |
+| | Codex (Plus/Pro) | $20-200/міс | 5год + щотижня | Користувачі OpenAI |
+| | Gemini CLI | **БЕЗКОШТ** | 180K/міс + 1K/день | Для всіх! |
+| | GitHub Copilot | $10-19/міс | Щомісяця | Користувачі GitHub |
+| **🔑 API КЛЮЧ** | DeepSeek | За викор. | Немає | Дешеві міркування |
+| | Groq | За викор. | Немає | Надшвидкий висновок |
+| | xAI (Grok) | За викор. | Немає | Міркування Grok 4 |
+| | Mistral | За викор. | Немає | Моделі в ЄС |
+| | Perplexity | За викор. | Немає | З пошуком |
+| | Together AI | За викор. | Немає | Відкриті моделі |
+| | Fireworks AI | За викор. | Немає | Швидкі FLUX зображення |
+| | Cerebras | За викор. | Немає | Швидкість на вафлях |
+| | Cohere | За викор. | Немає | Command R+ RAG |
+| | NVIDIA NIM | За викор. | Немає | Корпоративні моделі |
+| **💰 ДЕШЕВО** | GLM-4.7 | $0.6/1M | Щодня о 10:00 | Бюджетний резерв |
+| | MiniMax M2.1 | $0.2/1M | Кожні 5 годин | Найдешевший варіант |
+| | Kimi K2 | $9/міс фікс | 10M токенів/міс | Передбачувана ціна |
+| **🆓 БЕЗКОШТОВНО** | Qoder | $0 | Необмежено | 8 моделей безкошт |
+| | Qwen | $0 | Необмежено | 3 моделі безкошт |
+| | Kiro | $0 | Необмежено | Claude безкоштовно |
-**💡 Pro Tip:** Start with Gemini CLI (180K free/month) + Qoder (unlimited free) combo = $0 cost!
+**💡 Порада:** Почніть з Gemini CLI (180K безкошт/міс) + Qoder (необмежено) = $0 вартість!
---
-## 🎯 Use Cases
+## 🎯 Варіанти використання
-### Case 1: "I have Claude Pro subscription"
+### Випадок 1: "У мене є підписка Claude Pro"
-**Problem:** Quota expires unused, rate limits during heavy coding
+**Проблема:** Квота закінчується невикористаною, обмеження швидкості під час інтенсивного кодування
```
-Combo: "maximize-claude"
- 1. cc/claude-opus-4-7 (use subscription fully)
- 2. glm/glm-4.7 (cheap backup when quota out)
- 3. if/kimi-k2-thinking (free emergency fallback)
+Комбо: "maximize-claude"
+ 1. cc/claude-opus-4-7 (повне використання підписки)
+ 2. glm/glm-4.7 (дешевий резерв при вичерпанні квоти)
+ 3. if/kimi-k2-thinking (безкоштовний аварійний резерв)
-Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
-vs. $20 + hitting limits = frustration
+Щомісячна вартість: $20 (підписка) + ~$5 (резерв) = $25 загалом
+проти $20 + досягнення лімітів = розчарування
```
-### Case 2: "I want zero cost"
+### Випадок 2: "Я хочу нульову вартість"
-**Problem:** Can't afford subscriptions, need reliable AI coding
+**Проблема:** Не можу дозволити собі підписки, потрібне надійне AI-кодування
```
-Combo: "free-forever"
- 1. gc/gemini-3-flash (180K free/month)
- 2. if/kimi-k2-thinking (unlimited free)
- 3. qw/qwen3-coder-plus (unlimited free)
+Комбо: "free-forever"
+ 1. gc/gemini-3-flash (180K безкошт/міс)
+ 2. if/kimi-k2-thinking (необмежено безкошт)
+ 3. qw/qwen3-coder-plus (необмежено безкошт)
-Monthly cost: $0
-Quality: Production-ready models
+Щомісячна вартість: $0
+Якість: Готові до продакшену моделі
```
-### Case 3: "I need 24/7 coding, no interruptions"
+### Випадок 3: "Мені потрібне кодування 24/7, без перерв"
-**Problem:** Deadlines, can't afford downtime
+**Проблема:** Дедлайни, не можу дозволити собі простою
```
-Combo: "always-on"
- 1. cc/claude-opus-4-7 (best quality)
- 2. cx/gpt-5.2-codex (second subscription)
- 3. glm/glm-4.7 (cheap, resets daily)
- 4. minimax/MiniMax-M2.1 (cheapest, 5h reset)
- 5. if/kimi-k2-thinking (free unlimited)
+Комбо: "always-on"
+ 1. cc/claude-opus-4-7 (найкраща якість)
+ 2. cx/gpt-5.2-codex (друга підписка)
+ 3. glm/glm-4.7 (дешево, скидається щодня)
+ 4. minimax/MiniMax-M2.1 (найдешевше, скидання кожні 5год)
+ 5. if/kimi-k2-thinking (безкошт необмежено)
-Result: 5 layers of fallback = zero downtime
-Monthly cost: $20-200 (subscriptions) + $10-20 (backup)
+Результат: 5 рівнів резервування = нульовий простій
+Щомісячна вартість: $20-200 (підписки) + $10-20 (резерв)
```
-### Case 4: "I want FREE AI in OpenClaw"
+### Випадок 4: "Я хочу БЕЗКОШТОВНИЙ AI в OpenClaw"
-**Problem:** Need AI assistant in messaging apps, completely free
+**Проблема:** Потрібен AI-асистент у месенджерах, повністю безкоштовно
```
-Combo: "openclaw-free"
- 1. if/glm-4.7 (unlimited free)
- 2. if/minimax-m2.1 (unlimited free)
- 3. if/kimi-k2-thinking (unlimited free)
+Комбо: "openclaw-free"
+ 1. if/glm-4.7 (необмежено безкошт)
+ 2. if/minimax-m2.1 (необмежено безкошт)
+ 3. if/kimi-k2-thinking (необмежено безкошт)
-Monthly cost: $0
-Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
+Щомісячна вартість: $0
+Доступ через: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
```
---
-## 📖 Provider Setup
+## 📖 Налаштування провайдерів
-### 🔐 Subscription Providers
+### 🔐 Провайдери з підпискою
#### Claude Code (Pro/Max)
```bash
-Dashboard → Providers → Connect Claude Code
-→ OAuth login → Auto token refresh
-→ 5-hour + weekly quota tracking
+Панель → Провайдери → Підключити Claude Code
+→ OAuth вхід → Автооновлення токена
+→ Відстеження квоти 5год + щотижня
-Models:
+Моделі:
cc/claude-opus-4-7
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
-**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
+**Порада:** Використовуйте Opus для складних завдань, Sonnet для швидкості. OmniRoute відстежує квоту для кожної моделі!
#### OpenAI Codex (Plus/Pro)
```bash
-Dashboard → Providers → Connect Codex
-→ OAuth login (port 1455)
-→ 5-hour + weekly reset
+Панель → Провайдери → Підключити Codex
+→ OAuth вхід (порт 1455)
+→ Скидання 5год + щотижня
-Models:
+Моделі:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
```
-#### Gemini CLI (FREE 180K/month!)
+#### Gemini CLI (БЕЗКОШТОВНО 180K/міс!)
```bash
-Dashboard → Providers → Connect Gemini CLI
+Панель → Провайдери → Підключити Gemini CLI
→ Google OAuth
-→ 180K completions/month + 1K/day
+→ 180K завершень/міс + 1K/день
-Models:
+Моделі:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**Best Value:** Huge free tier! Use this before paid tiers.
+**Найкраща цінність:** Величезний безкоштовний рівень! Використовуйте це перед платними рівнями.
#### GitHub Copilot
```bash
-Dashboard → Providers → Connect GitHub
-→ OAuth via GitHub
-→ Monthly reset (1st of month)
+Панель → Провайдери → Підключити GitHub
+→ OAuth через GitHub
+→ Щомісячне скидання (1-го числа)
-Models:
+Моделі:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3.1-pro-preview
```
-### 💰 Cheap Providers
+### 💰 Дешеві провайдери
-#### GLM-4.7 (Daily reset, $0.6/1M)
+#### GLM-4.7 (Щоденне скидання, $0.6/1M)
-1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
-2. Get API key from Coding Plan
-3. Dashboard → Add API Key: Provider: `glm`, API Key: `your-key`
+1. Зареєструйтесь: [Zhipu AI](https://open.bigmodel.cn/)
+2. Отримайте API ключ з Coding Plan
+3. Панель → Додати API ключ: Провайдер: `glm`, API ключ: `ваш-ключ`
-**Use:** `glm/glm-4.7` — **Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
+**Використання:** `glm/glm-4.7` — **Порада:** Coding Plan пропонує 3× квоту за 1/7 вартості! Скидання щодня о 10:00.
-#### MiniMax M2.1 (5h reset, $0.20/1M)
+#### MiniMax M2.1 (Скидання кожні 5год, $0.20/1M)
-1. Sign up: [MiniMax](https://www.minimax.io/)
-2. Get API key → Dashboard → Add API Key
+1. Зареєструйтесь: [MiniMax](https://www.minimax.io/)
+2. Отримайте API ключ → Панель → Додати API ключ
-**Use:** `minimax/MiniMax-M2.1` — **Pro Tip:** Cheapest option for long context (1M tokens)!
+**Використання:** `minimax/MiniMax-M2.1` — **Порада:** Найдешевший варіант для довгого контексту (1M токенів)!
-#### Kimi K2 ($9/month flat)
+#### Kimi K2 ($9/міс фіксовано)
-1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
-2. Get API key → Dashboard → Add API Key
+1. Підпишіться: [Moonshot AI](https://platform.moonshot.ai/)
+2. Отримайте API ключ → Панель → Додати API ключ
-**Use:** `kimi/kimi-latest` — **Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
+**Використання:** `kimi/kimi-latest` — **Порада:** Фіксовані $9/міс за 10M токенів = $0.90/1M ефективна вартість!
-### 🆓 FREE Providers
+### 🆓 БЕЗКОШТОВНІ провайдери
-#### Qoder (8 FREE models)
+#### Qoder (8 БЕЗКОШТОВНИХ моделей)
```bash
-Dashboard → Connect Qoder → OAuth login → Unlimited usage
+Панель → Підключити Qoder → OAuth вхід → Необмежене використання
-Models: if/kimi-k2-thinking, if/qwen3-coder-plus, if/glm-4.7, if/minimax-m2, if/deepseek-r1
+Моделі: if/kimi-k2-thinking, if/qwen3-coder-plus, if/glm-4.7, if/minimax-m2, if/deepseek-r1
```
-#### Qwen (3 FREE models)
+#### Qwen (3 БЕЗКОШТОВНІ моделі)
```bash
-Dashboard → Connect Qwen → Device code auth → Unlimited usage
+Панель → Підключити Qwen → Авторизація коду пристрою → Необмежене використання
-Models: qw/qwen3-coder-plus, qw/qwen3-coder-flash
+Моделі: qw/qwen3-coder-plus, qw/qwen3-coder-flash
```
-#### Kiro (Claude FREE)
+#### Kiro (Claude БЕЗКОШТОВНО)
```bash
-Dashboard → Connect Kiro → AWS Builder ID or Google/GitHub → Unlimited
+Панель → Підключити Kiro → AWS Builder ID або Google/GitHub → Необмежено
-Models: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
+Моделі: kr/claude-sonnet-4.5, kr/claude-haiku-4.5
```
---
-## 🎨 Combos
+## 🎨 Комбо
-You can reorder combo cards directly in **Dashboard → Combos** by dragging the handle on each card. The order is stored in SQLite and restored on reload.
+Ви можете змінювати порядок карток комбо безпосередньо в **Панель → Комбо**, перетягуючи ручку на кожній картці. Порядок зберігається в SQLite і відновлюється при перезавантаженні.
-### Example 1: Maximize Subscription → Cheap Backup
+### Приклад 1: Максимізація підписки → Дешевий резерв
```
-Dashboard → Combos → Create New
+Панель → Комбо → Створити нове
-Name: premium-coding
-Models:
- 1. cc/claude-opus-4-7 (Subscription primary)
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
+Назва: premium-coding
+Моделі:
+ 1. cc/claude-opus-4-7 (Основна підписка)
+ 2. glm/glm-4.7 (Дешевий резерв, $0.6/1M)
+ 3. minimax/MiniMax-M2.1 (Найдешевший резерв, $0.20/1M)
-Use in CLI: premium-coding
+Використання в CLI: premium-coding
```
-### Example 2: Free-Only (Zero Cost)
+### Приклад 2: Тільки безкоштовне (Нульова вартість)
```
-Name: free-combo
-Models:
- 1. gc/gemini-3-flash-preview (180K free/month)
- 2. if/kimi-k2-thinking (unlimited)
- 3. qw/qwen3-coder-plus (unlimited)
+Назва: free-combo
+Моделі:
+ 1. gc/gemini-3-flash-preview (180K безкошт/міс)
+ 2. if/kimi-k2-thinking (необмежено)
+ 3. qw/qwen3-coder-plus (необмежено)
-Cost: $0 forever!
+Вартість: $0 назавжди!
```
---
-## 🔧 CLI Integration
+## 🔧 Інтеграція CLI
### Cursor IDE
```
-Settings → Models → Advanced:
+Налаштування → Моделі → Розширені:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [from omniroute dashboard]
+ OpenAI API Key: [з панелі omniroute]
Model: cc/claude-opus-4-7
```
### Claude Code
-Edit `~/.claude/config.json`:
+Редагуйте `~/.claude/config.json`:
```json
{
"anthropic_api_base": "http://localhost:20128/v1",
- "anthropic_api_key": "your-omniroute-api-key"
+ "anthropic_api_key": "ваш-omniroute-api-ключ"
}
```
@@ -279,13 +279,13 @@ Edit `~/.claude/config.json`:
```bash
export OPENAI_BASE_URL="http://localhost:20128"
-export OPENAI_API_KEY="your-omniroute-api-key"
-codex "your prompt"
+export OPENAI_API_KEY="ваш-omniroute-api-ключ"
+codex "ваш запит"
```
### OpenClaw
-Edit `~/.openclaw/openclaw.json`:
+Редагуйте `~/.openclaw/openclaw.json`:
```json
{
@@ -298,7 +298,7 @@ Edit `~/.openclaw/openclaw.json`:
"providers": {
"omniroute": {
"baseUrl": "http://localhost:20128/v1",
- "apiKey": "your-omniroute-api-key",
+ "apiKey": "ваш-omniroute-api-ключ",
"api": "openai-completions",
"models": [{ "id": "if/glm-4.7", "name": "glm-4.7" }]
}
@@ -307,14 +307,14 @@ Edit `~/.openclaw/openclaw.json`:
}
```
-**Or use Dashboard:** CLI Tools → OpenClaw → Auto-config
+**Або використовуйте Панель:** CLI Tools → OpenClaw → Автоналаштування
### Cline / Continue / RooCode
```
-Provider: OpenAI Compatible
+Провайдер: OpenAI Compatible
Base URL: http://localhost:20128/v1
-API Key: [from dashboard]
+API Key: [з панелі]
Model: cc/claude-opus-4-7
```
@@ -322,44 +322,44 @@ Model: cc/claude-opus-4-7
## Розгортання
-### Global npm install (Recommended)
+### Глобальне встановлення npm (Рекомендовано)
```bash
npm install -g omniroute
-# Create config directory
+# Створити каталог конфігурації
mkdir -p ~/.omniroute
-# Create .env file (see .env.example)
+# Створити файл .env (див. .env.example)
cp .env.example ~/.omniroute/.env
-# Start server
+# Запустити сервер
omniroute
-# Or with custom port:
+# Або з власним портом:
omniroute --port 3000
```
-The CLI automatically loads `.env` from `~/.omniroute/.env` or `./.env`.
+CLI автоматично завантажує `.env` з `~/.omniroute/.env` або `./.env`.
-### Uninstalling
+### Видалення
-When you no longer need OmniRoute, we provide two quick scripts for a clean removal:
+Коли вам більше не потрібен OmniRoute, ми надаємо два швидкі скрипти для чистого видалення:
-| Command | Action |
-| ------------------------ | ----------------------------------------------------------------------------------- |
-| `npm run uninstall` | Removes the system app but **keeps your DB and configurations** in `~/.omniroute`. |
-| `npm run uninstall:full` | Removes the app AND permanently **erases all configurations, keys, and databases**. |
+| Команда | Дія |
+| ------------------------ | --------------------------------------------------------------------------------------- |
+| `npm run uninstall` | Видаляє системний застосунок, але **зберігає вашу БД та конфігурації** в `~/.omniroute`. |
+| `npm run uninstall:full` | Видаляє застосунок І назавжди **стирає всі конфігурації, ключі та бази даних**. |
-> Note: To run these commands, navigate to the OmniRoute project folder (if you cloned it) and run them. Alternatively, if globally installed, you can simply run `npm uninstall -g omniroute`.
+> Примітка: Щоб виконати ці команди, перейдіть до папки проєкту OmniRoute (якщо ви його клонували) і запустіть їх. Альтернативно, якщо встановлено глобально, ви можете просто виконати `npm uninstall -g omniroute`.
-### VPS Deployment
+### Розгортання на VPS
```bash
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute && npm install && npm run build
-export JWT_SECRET="your-secure-secret-change-this"
-export INITIAL_PASSWORD="your-password"
+export JWT_SECRET="ваш-безпечний-секрет-змініть-це"
+export INITIAL_PASSWORD="ваш-пароль"
export DATA_DIR="/var/lib/omniroute"
export PORT="20128"
export HOSTNAME="0.0.0.0"
@@ -368,25 +368,25 @@ export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
npm run start
-# Or: pm2 start npm --name omniroute -- start
+# Або: pm2 start npm --name omniroute -- start
```
-### PM2 Deployment (Low Memory)
+### Розгортання PM2 (Низька пам'ять)
-For servers with limited RAM, use the memory limit option:
+Для серверів з обмеженою RAM використовуйте опцію обмеження пам'яті:
```bash
-# With 512MB limit (default)
+# З лімітом 512MB (за замовчуванням)
pm2 start npm --name omniroute -- start
-# Or with custom memory limit
+# Або з власним лімітом пам'яті
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start
-# Or using ecosystem.config.js
+# Або використовуючи ecosystem.config.js
pm2 start ecosystem.config.js
```
-Create `ecosystem.config.js`:
+Створіть `ecosystem.config.js`:
```javascript
module.exports = {
@@ -398,8 +398,8 @@ module.exports = {
env: {
NODE_ENV: "production",
OMNIROUTE_MEMORY_MB: "512",
- JWT_SECRET: "your-secret",
- INITIAL_PASSWORD: "your-password",
+ JWT_SECRET: "ваш-секрет",
+ INITIAL_PASSWORD: "ваш-пароль",
},
node_args: "--max-old-space-size=512",
max_memory_restart: "300M",
@@ -411,30 +411,30 @@ module.exports = {
### Docker
```bash
-# Build image (default = runner-cli with codex/claude/droid preinstalled)
+# Збірка образу (за замовчуванням = runner-cli з попередньо встановленими codex/claude/droid)
docker build -t omniroute:cli .
-# Portable mode (recommended)
+# Портативний режим (рекомендовано)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli
```
-For host-integrated mode with CLI binaries, see the Docker section in the main docs.
+Для режиму інтеграції з хостом з CLI бінарниками див. розділ Docker в основній документації.
### Void Linux (xbps-src)
-Void Linux users can package and install OmniRoute natively using the `xbps-src` cross-compilation framework. This automates the Node.js standalone build along with the required `better-sqlite3` native bindings.
+Користувачі Void Linux можуть упакувати та встановити OmniRoute нативно, використовуючи фреймворк крос-компіляції `xbps-src`. Це автоматизує автономну збірку Node.js разом з необхідними нативними прив'язками `better-sqlite3`.
-View xbps-src template
+Переглянути шаблон xbps-src
```bash
-# Template file for 'omniroute'
+# Файл шаблону для 'omniroute'
pkgname=omniroute
version=3.2.4
revision=1
hostmakedepends="nodejs python3 make"
depends="openssl"
-short_desc="Universal AI gateway with smart routing for multiple LLM providers"
+short_desc="Універсальний AI-шлюз з розумною маршрутизацією для кількох LLM провайдерів"
maintainer="zenobit "
license="MIT"
homepage="https://github.com/diegosouzapw/OmniRoute"
@@ -449,7 +449,7 @@ export npm_config_fund=false
export npm_config_audit=false
do_build() {
- # Determine target CPU arch for node-gyp
+ # Визначити цільову архітектуру CPU для node-gyp
local _gyp_arch
case "$XBPS_TARGET_MACHINE" in
aarch64*) _gyp_arch=arm64 ;;
@@ -458,29 +458,29 @@ do_build() {
*) _gyp_arch=x64 ;;
esac
- # 1) Install all deps – skip scripts
+ # 1) Встановити всі залежності – пропустити скрипти
NODE_ENV=development npm ci --ignore-scripts
- # 2) Build the Next.js standalone bundle
+ # 2) Зібрати автономний пакет Next.js
npm run build
- # 3) Copy static assets into standalone
+ # 3) Скопіювати статичні ресурси в автономний
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
- # 4) Compile better-sqlite3 native binding
+ # 4) Скомпілювати нативну прив'язку better-sqlite3
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")
- # 5) Place the compiled binding into the standalone bundle
+ # 5) Помістити скомпільовану прив'язку в автономний пакет
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"
- # 6) Remove arch-specific sharp bundles
+ # 6) Видалити архітектурно-специфічні пакети sharp
rm -rf .next/standalone/node_modules/@img
- # 7) Copy pino runtime deps omitted by Next.js static analysis:
+ # 7) Скопіювати залежності pino, пропущені статичним аналізом Next.js:
for _mod in pino-abstract-transport split2 process-warning; do
cp -r "node_modules/$_mod" .next/standalone/node_modules/
done
@@ -494,7 +494,7 @@ do_install() {
vmkdir usr/lib/omniroute/.next
vcopy .next/standalone/. usr/lib/omniroute/.next/standalone
- # Prevent removal of empty Next.js app router dirs by the post-install hook
+ # Запобігти видаленню порожніх каталогів маршрутизатора Next.js хуком після встановлення
for _d in \
.next/standalone/.next/server/app/dashboard \
.next/standalone/.next/server/app/dashboard/settings \
@@ -520,45 +520,45 @@ post_install() {
-### Environment Variables
+### Змінні середовища
-| Variable | Default | Description |
+| Змінна | За замовчуванням | Опис |
| --------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------- |
-| `JWT_SECRET` | `omniroute-default-secret-change-me` | JWT signing secret (**change in production**) |
-| `INITIAL_PASSWORD` | `123456` | First login password |
-| `DATA_DIR` | `~/.omniroute` | Data directory (db, usage, logs) |
-| `PORT` | framework default | Service port (`20128` in examples) |
-| `HOSTNAME` | framework default | Bind host (Docker defaults to `0.0.0.0`) |
-| `NODE_ENV` | runtime default | Set `production` for deploy |
-| `BASE_URL` | `http://localhost:20128` | Server-side internal base URL |
-| `CLOUD_URL` | `https://omniroute.dev` | Cloud sync endpoint base URL |
-| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | HMAC secret for generated API keys |
-| `REQUIRE_API_KEY` | `false` | Enforce Bearer API key on `/v1/*` |
-| `ALLOW_API_KEY_REVEAL` | `false` | Allow Api Manager to copy full API keys on demand |
-| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | Server-side refresh cadence for cached Provider Limits data; UI refresh buttons still trigger manual sync |
-| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | Disable automatic SQLite snapshots before writes/import/restore; manual backups still work |
-| `APP_LOG_TO_FILE` | `true` | Enables application and audit log output to disk |
-| `AUTH_COOKIE_SECURE` | `false` | Force `Secure` auth cookie (behind HTTPS reverse proxy) |
-| `CLOUDFLARED_BIN` | unset | Use an existing `cloudflared` binary instead of managed download |
-| `CLOUDFLARED_PROTOCOL` | `http2` | Transport for managed Quick Tunnels (`http2`, `quic`, or `auto`) |
-| `OMNIROUTE_MEMORY_MB` | `512` | Node.js heap limit in MB |
-| `PROMPT_CACHE_MAX_SIZE` | `50` | Max prompt cache entries |
-| `SEMANTIC_CACHE_MAX_SIZE` | `100` | Max semantic cache entries |
+| `JWT_SECRET` | `omniroute-default-secret-change-me` | Секрет підпису JWT (**змініть у продакшені**) |
+| `INITIAL_PASSWORD` | `123456` | Пароль першого входу |
+| `DATA_DIR` | `~/.omniroute` | Каталог даних (БД, використання, логи) |
+| `PORT` | за замовчуванням фреймворку | Порт сервісу (`20128` у прикладах) |
+| `HOSTNAME` | за замовчуванням фреймворку | Хост прив'язки (Docker за замовчуванням `0.0.0.0`) |
+| `NODE_ENV` | за замовчуванням середовища | Встановіть `production` для розгортання |
+| `BASE_URL` | `http://localhost:20128` | Внутрішній базовий URL на стороні сервера |
+| `CLOUD_URL` | `https://omniroute.dev` | Базовий URL кінцевої точки хмарної синхронізації |
+| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | HMAC секрет для згенерованих API ключів |
+| `REQUIRE_API_KEY` | `false` | Примусовий Bearer API ключ на `/v1/*` |
+| `ALLOW_API_KEY_REVEAL` | `false` | Дозволити Api Manager копіювати повні API ключі на вимогу |
+| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | Інтервал оновлення кешованих даних лімітів провайдера; кнопки оновлення UI все ще запускають ручну синхр |
+| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | Вимкнути автоматичні знімки SQLite перед записами/імпортом/відновленням; ручні резервні копії працюють |
+| `APP_LOG_TO_FILE` | `true` | Увімкнути вивід логів додатка та аудиту на диск |
+| `AUTH_COOKIE_SECURE` | `false` | Примусовий `Secure` cookie авторизації (за HTTPS зворотним проксі) |
+| `CLOUDFLARED_BIN` | не встановлено | Використовувати існуючий бінарник `cloudflared` замість керованого завантаження |
+| `CLOUDFLARED_PROTOCOL` | `http2` | Транспорт для керованих Quick Tunnels (`http2`, `quic` або `auto`) |
+| `OMNIROUTE_MEMORY_MB` | `512` | Ліміт купи Node.js у МБ |
+| `PROMPT_CACHE_MAX_SIZE` | `50` | Макс. записів кешу промптів |
+| `SEMANTIC_CACHE_MAX_SIZE` | `100` | Макс. записів семантичного кешу |
-For the full environment variable reference, see the [README](../README.md).
+Для повного довідника змінних середовища див. [README](../README.md).
---
-## 📊 Available Models
+## 📊 Доступні моделі
-View all available models
+Переглянути всі доступні моделі
**Claude Code (`cc/`)** — Pro/Max: `cc/claude-opus-4-7`, `cc/claude-sonnet-4-5-20250929`, `cc/claude-haiku-4-5-20251001`
**Codex (`cx/`)** — Plus/Pro: `cx/gpt-5.2-codex`, `cx/gpt-5.1-codex-max`
-**Gemini CLI (`gc/`)** — FREE: `gc/gemini-3-flash-preview`, `gc/gemini-2.5-pro`
+**Gemini CLI (`gc/`)** — БЕЗКОШТ: `gc/gemini-3-flash-preview`, `gc/gemini-2.5-pro`
**GitHub Copilot (`gh/`)**: `gh/gpt-5`, `gh/claude-4.5-sonnet`
@@ -566,11 +566,11 @@ For the full environment variable reference, see the [README](../README.md).
**MiniMax (`minimax/`)** — $0.2/1M: `minimax/MiniMax-M2.1`
-**Qoder (`if/`)** — FREE: `if/kimi-k2-thinking`, `if/qwen3-coder-plus`, `if/deepseek-r1`
+**Qoder (`if/`)** — БЕЗКОШТ: `if/kimi-k2-thinking`, `if/qwen3-coder-plus`, `if/deepseek-r1`
-**Qwen (`qw/`)** — FREE: `qw/qwen3-coder-plus`, `qw/qwen3-coder-flash`
+**Qwen (`qw/`)** — БЕЗКОШТ: `qw/qwen3-coder-plus`, `qw/qwen3-coder-flash`
-**Kiro (`kr/`)** — FREE: `kr/claude-sonnet-4.5`, `kr/claude-haiku-4.5`
+**Kiro (`kr/`)** — БЕЗКОШТ: `kr/claude-sonnet-4.5`, `kr/claude-haiku-4.5`
**DeepSeek (`ds/`)**: `ds/deepseek-chat`, `ds/deepseek-reasoner`
@@ -596,32 +596,32 @@ For the full environment variable reference, see the [README](../README.md).
---
-## 🧩 Advanced Features
+## 🧩 Розширені функції
-### Custom Models
+### Власні моделі
-Add any model ID to any provider without waiting for an app update:
+Додайте будь-який ID моделі до будь-якого провайдера без очікування оновлення додатка:
```bash
-# Via API
+# Через API
curl -X POST http://localhost:20128/api/provider-models \
-H "Content-Type: application/json" \
-d '{"provider": "openai", "modelId": "gpt-4.5-preview", "modelName": "GPT-4.5 Preview"}'
-# List: curl http://localhost:20128/api/provider-models?provider=openai
-# Remove: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-4.5-preview"
+# Список: curl http://localhost:20128/api/provider-models?provider=openai
+# Видалити: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-4.5-preview"
```
-Or use Dashboard: **Providers → [Provider] → Custom Models**.
+Або використовуйте Панель: **Провайдери → [Провайдер] → Власні моделі**.
-Notes:
+Примітки:
-- OpenRouter and OpenAI/Anthropic-compatible providers are managed from **Available Models** only. Manual add, import, and auto-sync all land in the same available-model list, so there is no separate Custom Models section for those providers.
-- The **Custom Models** section is intended for providers that do not expose managed available-model imports.
+- OpenRouter та OpenAI/Anthropic-сумісні провайдери керуються тільки з **Доступних моделей**. Ручне додавання, імпорт та автосинхронізація потрапляють в той самий список доступних моделей, тому немає окремого розділу Власних моделей для цих провайдерів.
+- Розділ **Власні моделі** призначений для провайдерів, які не надають керований імпорт доступних моделей.
-### Dedicated Provider Routes
+### Виділені маршрути провайдерів
-Route requests directly to a specific provider with model validation:
+Направляйте запити безпосередньо до конкретного провайдера з валідацією моделі:
```bash
POST http://localhost:20128/v1/providers/openai/chat/completions
@@ -629,124 +629,124 @@ POST http://localhost:20128/v1/providers/openai/embeddings
POST http://localhost:20128/v1/providers/fireworks/images/generations
```
-The provider prefix is auto-added if missing. Mismatched models return `400`.
+Префікс провайдера додається автоматично, якщо відсутній. Невідповідні моделі повертають `400`.
-### Network Proxy Configuration
+### Конфігурація мережевого проксі
```bash
-# Set global proxy
+# Встановити глобальний проксі
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'
-# Per-provider proxy
+# Проксі для окремого провайдера
curl -X PUT http://localhost:20128/api/settings/proxy \
-d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'
-# Test proxy
+# Тестувати проксі
curl -X POST http://localhost:20128/api/settings/proxy/test \
-d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'
```
-**Precedence:** Key-specific → Combo-specific → Provider-specific → Global → Environment.
+**Пріоритет:** Специфічний для ключа → Специфічний для комбо → Специфічний для провайдера → Глобальний → Середовище.
-### Model Catalog API
+### API каталогу моделей
```bash
curl http://localhost:20128/api/models/catalog
```
-Returns models grouped by provider with types (`chat`, `embedding`, `image`).
+Повертає моделі, згруповані за провайдером з типами (`chat`, `embedding`, `image`).
-### Cloud Sync
+### Хмарна синхронізація
-- Sync providers, combos, and settings across devices
-- Automatic background sync with timeout + fail-fast
-- Prefer server-side `BASE_URL`/`CLOUD_URL` in production
+- Синхронізація провайдерів, комбо та налаштувань між пристроями
+- Автоматична фонова синхронізація з тайм-аутом + швидким відмовленням
+- Віддавайте перевагу серверним `BASE_URL`/`CLOUD_URL` у продакшені
### Cloudflare Quick Tunnel
-- Available in **Dashboard → Endpoints** for Docker and other self-hosted deployments
-- Creates a temporary `https://*.trycloudflare.com` URL that forwards to your current OpenAI-compatible `/v1` endpoint
-- First enable installs `cloudflared` only when needed; later restarts reuse the same managed binary
-- Quick Tunnels are not auto-restored after an OmniRoute or container restart; re-enable them from the dashboard when needed
-- Tunnel URLs are ephemeral and change every time you stop/start the tunnel
-- Managed Quick Tunnels default to HTTP/2 transport to avoid noisy QUIC UDP buffer warnings in constrained containers
-- Set `CLOUDFLARED_PROTOCOL=quic` or `auto` if you want to override the managed transport choice
-- Set `CLOUDFLARED_BIN` if you prefer using a preinstalled `cloudflared` binary instead of the managed download
+- Доступний в **Панель → Кінцеві точки** для Docker та інших самостійних розгортань
+- Створює тимчасовий URL `https://*.trycloudflare.com`, який перенаправляє на вашу поточну OpenAI-сумісну кінцеву точку `/v1`
+- Перше увімкнення встановлює `cloudflared` тільки при необхідності; пізніші перезапуски повторно використовують той самий керований бінарник
+- Quick Tunnels не відновлюються автоматично після перезапуску OmniRoute або контейнера; повторно увімкніть їх з панелі при необхідності
+- URL тунелів є ефемерними і змінюються кожного разу, коли ви зупиняєте/запускаєте тунель
+- Керовані Quick Tunnels за замовчуванням використовують транспорт HTTP/2, щоб уникнути шумних попереджень про UDP буфер QUIC в обмежених контейнерах
+- Встановіть `CLOUDFLARED_PROTOCOL=quic` або `auto`, якщо хочете перевизначити вибір керованого транспорту
+- Встановіть `CLOUDFLARED_BIN`, якщо віддаєте перевагу використанню попередньо встановленого бінарника `cloudflared` замість керованого завантаження
-### LLM Gateway Intelligence (Phase 9)
+### Інтелект LLM-шлюзу (Фаза 9)
-- **Semantic Cache** — Auto-caches non-streaming, temperature=0 responses (bypass with `X-OmniRoute-No-Cache: true`)
-- **Request Idempotency** — Deduplicates requests within 5s via `Idempotency-Key` or `X-Request-Id` header
-- **Progress Tracking** — Opt-in SSE `event: progress` events via `X-OmniRoute-Progress: true` header
+- **Семантичний кеш** — Автоматично кешує не-потокові відповіді з temperature=0 (обхід з `X-OmniRoute-No-Cache: true`)
+- **Ідемпотентність запитів** — Дедуплікує запити протягом 5с через заголовок `Idempotency-Key` або `X-Request-Id`
+- **Відстеження прогресу** — Опціональні SSE події `event: progress` через заголовок `X-OmniRoute-Progress: true`
---
-### Translator Playground
+### Майданчик перекладача
-Access via **Dashboard → Translator**. Debug and visualize how OmniRoute translates API requests between providers.
+Доступ через **Панель → Перекладач**. Налагоджуйте та візуалізуйте, як OmniRoute перекладає API запити між провайдерами.
-| Mode | Purpose |
-| ---------------- | -------------------------------------------------------------------------------------- |
-| **Playground** | Select source/target formats, paste a request, and see the translated output instantly |
-| **Chat Tester** | Send live chat messages through the proxy and inspect the full request/response cycle |
-| **Test Bench** | Run batch tests across multiple format combinations to verify translation correctness |
-| **Live Monitor** | Watch real-time translations as requests flow through the proxy |
+| Режим | Призначення |
+| ---------------- | ---------------------------------------------------------------------------------------------- |
+| **Playground** | Виберіть формати джерела/цілі, вставте запит і миттєво побачте перекладений вивід |
+| **Chat Tester** | Надсилайте живі чат-повідомлення через проксі та перевіряйте повний цикл запит/відповідь |
+| **Test Bench** | Запускайте пакетні тести через кілька комбінацій форматів для перевірки коректності перекладу |
+| **Live Monitor** | Спостерігайте за перекладами в реальному часі, коли запити проходять через проксі |
-**Use cases:**
+**Варіанти використання:**
-- Debug why a specific client/provider combination fails
-- Verify that thinking tags, tool calls, and system prompts translate correctly
-- Compare format differences between OpenAI, Claude, Gemini, and Responses API formats
+- Налагодження, чому конкретна комбінація клієнт/провайдер не працює
+- Перевірка, що теги мислення, виклики інструментів та системні промпти перекладаються правильно
+- Порівняння відмінностей форматів між OpenAI, Claude, Gemini та форматами Responses API
---
-### Routing Strategies
+### Стратегії маршрутизації
-Configure via **Dashboard → Settings → Routing**.
+Налаштування через **Панель → Налаштування → Маршрутизація**.
-| Strategy | Description |
-| ------------------------------ | ------------------------------------------------------------------------------------------------ |
-| **Fill First** | Uses accounts in priority order — primary account handles all requests until unavailable |
-| **Round Robin** | Cycles through all accounts with a configurable sticky limit (default: 3 calls per account) |
-| **P2C (Power of Two Choices)** | Picks 2 random accounts and routes to the healthier one — balances load with awareness of health |
-| **Random** | Randomly selects an account for each request using Fisher-Yates shuffle |
-| **Least Used** | Routes to the account with the oldest `lastUsedAt` timestamp, distributing traffic evenly |
-| **Cost Optimized** | Routes to the account with the lowest priority value, optimizing for lowest-cost providers |
+| Стратегія | Опис |
+| ------------------------------ | ---------------------------------------------------------------------------------------------------- |
+| **Fill First** | Використовує облікові записи в порядку пріоритету — основний обліковий запис обробляє всі запити до недоступності |
+| **Round Robin** | Циклічно проходить через всі облікові записи з налаштовуваним лімітом прилипання (за замовчуванням: 3 виклики на обліковий запис) |
+| **P2C (Power of Two Choices)** | Вибирає 2 випадкові облікові записи та направляє до здоровішого — балансує навантаження з урахуванням здоров'я |
+| **Random** | Випадково вибирає обліковий запис для кожного запиту, використовуючи перемішування Фішера-Йєтса |
+| **Least Used** | Направляє до облікового запису з найстарішою міткою часу `lastUsedAt`, рівномірно розподіляючи трафік |
+| **Cost Optimized** | Направляє до облікового запису з найнижчим значенням пріоритету, оптимізуючи для найдешевших провайдерів |
-#### External Sticky Session Header
+#### Зовнішній заголовок липкої сесії
-For external session affinity (for example, Claude Code/Codex agents behind reverse proxies), send:
+Для зовнішньої прив'язки сесії (наприклад, агенти Claude Code/Codex за зворотними проксі), надішліть:
```http
-X-Session-Id: your-session-key
+X-Session-Id: ваш-ключ-сесії
```
-OmniRoute also accepts `x_session_id` and returns the effective session key in `X-OmniRoute-Session-Id`.
+OmniRoute також приймає `x_session_id` і повертає ефективний ключ сесії в `X-OmniRoute-Session-Id`.
-If you use Nginx and send underscore-form headers, enable:
+Якщо ви використовуєте Nginx і надсилаєте заголовки з підкресленнями, увімкніть:
```nginx
underscores_in_headers on;
```
-#### Wildcard Model Aliases
+#### Шаблонні псевдоніми моделей
-Create wildcard patterns to remap model names:
+Створіть шаблонні патерни для переназначення імен моделей:
```
-Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-5-20250929
-Pattern: gpt-* → Target: gh/gpt-5.1-codex
+Патерн: claude-sonnet-* → Ціль: cc/claude-sonnet-4-5-20250929
+Патерн: gpt-* → Ціль: gh/gpt-5.1-codex
```
-Wildcards support `*` (any characters) and `?` (single character).
+Шаблони підтримують `*` (будь-які символи) та `?` (один символ).
-#### Fallback Chains
+#### Ланцюги резервування
-Define global fallback chains that apply across all requests:
+Визначте глобальні ланцюги резервування, які застосовуються до всіх запитів:
```
-Chain: production-fallback
+Ланцюг: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.1-codex
3. glm/glm-4.7
@@ -754,124 +754,124 @@ Chain: production-fallback
---
-### Resilience & Circuit Breakers
+### Стійкість та автоматичні вимикачі
-Configure via **Dashboard → Settings → Resilience**.
+Налаштування через **Панель → Налаштування → Стійкість**.
-OmniRoute implements provider-level resilience with four components:
+OmniRoute реалізує стійкість на рівні провайдера з чотирма компонентами:
-1. **Provider Profiles** — Per-provider configuration for:
- - **Transient Cooldown** — Base cooldown for transient upstream failures
- - **Rate Limit Cooldown** — Base cooldown for `429`-driven lockouts
- - **Max Backoff Level** — Maximum exponential backoff level for repeated failures
- - **CB Threshold** — Failure count before model quarantine / provider circuit breaker escalates
- - **CB Reset Time** — Failure counting window and breaker reset timer
+1. **Профілі провайдерів** — Конфігурація для кожного провайдера:
+ - **Transient Cooldown** — Базове охолодження для тимчасових збоїв upstream
+ - **Rate Limit Cooldown** — Базове охолодження для блокувань через `429`
+ - **Max Backoff Level** — Максимальний рівень експоненційного відступу для повторних збоїв
+ - **CB Threshold** — Кількість збоїв перед карантином моделі / ескалацією автоматичного вимикача провайдера
+ - **CB Reset Time** — Вікно підрахунку збоїв та таймер скидання вимикача
-2. **Editable Rate Limits** — System-level defaults configurable in the dashboard:
- - **Requests Per Minute (RPM)** — Maximum requests per minute per account
- - **Min Time Between Requests** — Minimum gap in milliseconds between requests
- - **Max Concurrent Requests** — Maximum simultaneous requests per account
- - Click **Edit** to modify, then **Save** or **Cancel**. Values persist via the resilience API.
+2. **Редаговані ліміти швидкості** — Системні значення за замовчуванням, налаштовувані в панелі:
+ - **Requests Per Minute (RPM)** — Максимум запитів на хвилину на обліковий запис
+ - **Min Time Between Requests** — Мінімальний проміжок у мілісекундах між запитами
+ - **Max Concurrent Requests** — Максимум одночасних запитів на обліковий запис
+ - Натисніть **Edit** для зміни, потім **Save** або **Cancel**. Значення зберігаються через API стійкості.
-3. **Circuit Breaker** — Tracks failures per provider and automatically opens the circuit when the configured threshold is reached:
- - **CLOSED** (Healthy) — Requests flow normally
- - **OPEN** — Provider is temporarily blocked after repeated failures
- - **HALF_OPEN** — Testing if provider has recovered
+3. **Автоматичний вимикач** — Відстежує збої для кожного провайдера та автоматично відкриває ланцюг при досягненні налаштованого порогу:
+ - **CLOSED** (Здоровий) — Запити проходять нормально
+ - **OPEN** — Провайдер тимчасово заблокований після повторних збоїв
+ - **HALF_OPEN** — Тестування, чи відновився провайдер
- The same provider profile also drives model-scoped lockouts:
- - Account/model lockouts react immediately to authoritative `429` / `404` signals and use the configured cooldown + backoff values
- - Global provider/model quarantine only activates after repeated exhaustion hits the configured **CB Threshold** within **CB Reset Time**
+ Той самий профіль провайдера також керує блокуваннями з обмеженням моделі:
+ - Блокування облікового запису/моделі реагують негайно на авторитетні сигнали `429` / `404` та використовують налаштовані значення охолодження + відступу
+ - Глобальний карантин провайдера/моделі активується тільки після того, як повторне вичерпання досягає налаштованого **CB Threshold** протягом **CB Reset Time**
-4. **Policies & Locked Identifiers** — Shows circuit breaker status and locked identifiers with force-unlock capability.
+4. **Політики та заблоковані ідентифікатори** — Показує статус автоматичного вимикача та заблоковані ідентифікатори з можливістю примусового розблокування.
-5. **Rate Limit Auto-Detection** — Monitors `429` and `Retry-After` headers to proactively avoid hitting provider rate limits. When an upstream provider returns an explicit wait window, that authoritative `Retry-After` value overrides the base cooldown from the provider profile.
+5. **Автовиявлення лімітів швидкості** — Моніторить заголовки `429` та `Retry-After` для проактивного уникнення досягнення лімітів швидкості провайдера. Коли upstream провайдер повертає явне вікно очікування, це авторитетне значення `Retry-After` перевизначає базове охолодження з профілю провайдера.
-**Pro Tip:** Use **Reset All** button to clear all circuit breakers and cooldowns when a provider recovers from an outage.
+**Порада:** Використовуйте кнопку **Reset All** для очищення всіх автоматичних вимикачів та охолоджень, коли провайдер відновлюється після збою.
---
-### Database Export / Import
+### Експорт / Імпорт бази даних
-Manage database backups in **Dashboard → Settings → System & Storage**.
+Керування резервними копіями бази даних в **Панель → Налаштування → Система та сховище**.
-| Action | Description |
+| Дія | Опис |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Export Database** | Downloads the current SQLite database as a `.sqlite` file |
-| **Export All (.tar.gz)** | Downloads a full backup archive including: database, settings, combos, provider connections (no credentials), API key metadata |
-| **Import Database** | Upload a `.sqlite` file to replace the current database. A pre-import backup is automatically created unless `DISABLE_SQLITE_AUTO_BACKUP=true` |
+| **Export Database** | Завантажує поточну базу даних SQLite як файл `.sqlite` |
+| **Export All (.tar.gz)** | Завантажує повний архів резервної копії, включаючи: базу даних, налаштування, комбо, підключення провайдерів (без облікових даних), метадані API ключів |
+| **Import Database** | Завантажте файл `.sqlite` для заміни поточної бази даних. Резервна копія перед імпортом створюється автоматично, якщо не `DISABLE_SQLITE_AUTO_BACKUP=true` |
```bash
-# API: Export database
+# API: Експорт бази даних
curl -o backup.sqlite http://localhost:20128/api/db-backups/export
-# API: Export all (full archive)
+# API: Експорт всього (повний архів)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll
-# API: Import database
+# API: Імпорт бази даних
curl -X POST http://localhost:20128/api/db-backups/import \
-F "file=@backup.sqlite"
```
-**Import Validation:** The imported file is validated for integrity (SQLite pragma check), required tables (`provider_connections`, `provider_nodes`, `combos`, `api_keys`), and size (max 100MB).
+**Валідація імпорту:** Імпортований файл перевіряється на цілісність (перевірка pragma SQLite), необхідні таблиці (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) та розмір (макс. 100MB).
-**Use Cases:**
+**Варіанти використання:**
-- Migrate OmniRoute between machines
-- Create external backups for disaster recovery
-- Share configurations between team members (export all → share archive)
+- Міграція OmniRoute між машинами
+- Створення зовнішніх резервних копій для аварійного відновлення
+- Обмін конфігураціями між членами команди (експорт всього → поділитися архівом)
---
-### Settings Dashboard
+### Панель налаштувань
-The settings page is organized into 6 tabs for easy navigation:
+Сторінка налаштувань організована в 6 вкладок для легкої навігації:
-| Tab | Contents |
+| Вкладка | Вміст |
| -------------- | ---------------------------------------------------------------------------------------------- |
-| **General** | System storage tools, appearance settings, theme controls, and per-item sidebar visibility |
-| **Security** | Login/Password settings, IP Access Control, API auth for `/models`, and Provider Blocking |
-| **Routing** | Global routing strategy (6 options), wildcard model aliases, fallback chains, combo defaults |
-| **Resilience** | Provider profiles, editable rate limits, circuit breaker status, policies & locked identifiers |
-| **AI** | Thinking budget configuration, global system prompt injection, prompt cache stats |
-| **Advanced** | Global proxy configuration (HTTP/SOCKS5) |
+| **General** | Інструменти системного сховища, налаштування зовнішнього вигляду, керування темою та видимість елементів бічної панелі |
+| **Security** | Налаштування входу/пароля, контроль доступу за IP, авторизація API для `/models` та блокування провайдерів |
+| **Routing** | Глобальна стратегія маршрутизації (6 опцій), шаблонні псевдоніми моделей, ланцюги резервування, значення за замовчуванням для комбо |
+| **Resilience** | Профілі провайдерів, редаговані ліміти швидкості, статус автоматичного вимикача, політики та заблоковані ідентифікатори |
+| **AI** | Конфігурація бюджету мислення, глобальна ін'єкція системного промпту, статистика кешу промптів |
+| **Advanced** | Глобальна конфігурація проксі (HTTP/SOCKS5) |
---
-### Costs & Budget Management
+### Управління витратами та бюджетом
-Access via **Dashboard → Costs**.
+Доступ через **Панель → Витрати**.
-| Tab | Purpose |
-| ----------- | ---------------------------------------------------------------------------------------- |
-| **Budget** | Set spending limits per API key with daily/weekly/monthly budgets and real-time tracking |
-| **Pricing** | View and edit model pricing entries — cost per 1K input/output tokens per provider |
+| Вкладка | Призначення |
+| ----------- | -------------------------------------------------------------------------------------------- |
+| **Budget** | Встановлення лімітів витрат на API ключ з щоденними/щотижневими/щомісячними бюджетами та відстеженням у реальному часі |
+| **Pricing** | Перегляд та редагування записів цін моделей — вартість за 1K вхідних/вихідних токенів на провайдера |
```bash
-# API: Set a budget
+# API: Встановити бюджет
curl -X POST http://localhost:20128/api/usage/budget \
-H "Content-Type: application/json" \
-d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'
-# API: Get current budget status
+# API: Отримати поточний статус бюджету
curl http://localhost:20128/api/usage/budget
```
-**Cost Tracking:** Every request logs token usage and calculates cost using the pricing table. View breakdowns in **Dashboard → Usage** by provider, model, and API key.
+**Відстеження витрат:** Кожен запит логує використання токенів та обчислює вартість, використовуючи таблицю цін. Переглядайте деталізацію в **Панель → Використання** за провайдером, моделлю та API ключем.
---
-### Audio Transcription
+### Аудіо транскрипція
-OmniRoute supports audio transcription via the OpenAI-compatible endpoint:
+OmniRoute підтримує аудіо транскрипцію через OpenAI-сумісну кінцеву точку:
```bash
POST /v1/audio/transcriptions
-Authorization: Bearer your-api-key
+Authorization: Bearer ваш-api-ключ
Content-Type: multipart/form-data
-# Example with curl
+# Приклад з curl
curl -X POST http://localhost:20128/v1/audio/transcriptions \
- -H "Authorization: Bearer your-api-key" \
+ -H "Authorization: Bearer ваш-api-ключ" \
-F "file=@audio.mp3" \
-F "model=deepgram/nova-3"
```