mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
OmniRoute is an intelligent API gateway that unifies 20+ AI providers behind a single OpenAI-compatible endpoint. Features include intelligent routing with 6 strategies, multi-format translation (OpenAI/Claude/Gemini/Responses API), circuit breakers, semantic caching, combo fallback chains, real-time health monitoring, and a full dashboard with provider management, analytics, and CLI tool integration. Key highlights: - 20+ providers (Claude Code, Codex, Gemini CLI, GitHub Copilot, iFlow, Qwen, Kiro, etc.) - 6 routing strategies (Fill First, Round Robin, P2C, Random, Least Used, Cost Optimized) - Export/Import database backup with full archive support - Translator Playground with 4 modes (Playground, Chat Tester, Test Bench, Live Monitor) - 100% TypeScript across src/ and open-sse/ - Docker support with multi-stage builds - Comprehensive documentation and 9 dashboard screenshots
996 lines
45 KiB
Markdown
996 lines
45 KiB
Markdown
<div align="center">
|
||
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
||
|
||
# 🚀 OmniRoute — Бесплатный AI Gateway
|
||
|
||
### Никогда не прекращайте программировать. Умная маршрутизация к **БЕСПЛАТНЫМ и дешёвым AI-моделям** с автоматическим fallback.
|
||
|
||
_Ваш универсальный API-прокси — одна точка доступа, 36+ провайдеров, нулевой простой._
|
||
|
||
**Chat Completions • Embeddings • Генерация изображений • Аудио • Reranking • 100% TypeScript**
|
||
|
||
---
|
||
|
||
### 🤖 Бесплатный AI-провайдер для ваших любимых агентов программирования
|
||
|
||
_Подключайте любую IDE или CLI-инструмент с AI через OmniRoute — бесплатный API gateway для неограниченного программирования._
|
||
|
||
<table>
|
||
<tr>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/cline/cline">
|
||
<img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
|
||
<b>OpenClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 205K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/HKUDS/nanobot">
|
||
<img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
|
||
<b>NanoBot</b>
|
||
</a><br/>
|
||
<sub>⭐ 20.9K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/sipeed/picoclaw">
|
||
<img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
|
||
<b>PicoClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 14.6K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/zeroclaw-labs/zeroclaw">
|
||
<img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
|
||
<b>ZeroClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 9.9K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/nearai/ironclaw">
|
||
<img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
|
||
<b>IronClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 2.1K</sub>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/anomalyco/opencode">
|
||
<img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
|
||
<b>OpenCode</b>
|
||
</a><br/>
|
||
<sub>⭐ 106K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/openai/codex">
|
||
<img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
|
||
<b>Codex CLI</b>
|
||
</a><br/>
|
||
<sub>⭐ 60.8K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/anthropics/claude-code">
|
||
<img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
|
||
<b>Claude Code</b>
|
||
</a><br/>
|
||
<sub>⭐ 67.3K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/google-gemini/gemini-cli">
|
||
<img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
|
||
<b>Gemini CLI</b>
|
||
</a><br/>
|
||
<sub>⭐ 94.7K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/Kilo-Org/kilocode">
|
||
<img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
|
||
<b>Kilo Code</b>
|
||
</a><br/>
|
||
<sub>⭐ 15.5K</sub>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<sub>📡 Все агенты подключаются через <code>http://localhost:20128/v1</code> или <code>http://cloud.omniroute.online/v1</code> — одна конфигурация, неограниченные модели и квота</sub>
|
||
|
||
---
|
||
|
||
[](https://www.npmjs.com/package/omniroute)
|
||
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
||
[](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
|
||
[](https://omniroute.online)
|
||
|
||
[🌐 Сайт](https://omniroute.online) • [🚀 Быстрый старт](#-быстрый-старт) • [💡 Функции](#-основные-функции) • [📖 Документация](#-документация) • [💰 Цены](#-обзор-цен)
|
||
|
||
🌐 **Доступно на:** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
## 🤔 Почему OmniRoute?
|
||
|
||
**Перестаньте тратить деньги и упираться в лимиты:**
|
||
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Квота подписки истекает неиспользованной каждый месяц
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Лимиты скорости останавливают вас посреди программирования
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Дорогие API ($20-50/месяц за провайдера)
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Ручное переключение между провайдерами
|
||
|
||
**OmniRoute решает это:**
|
||
|
||
- ✅ **Максимизируйте подписки** — Отслеживайте квоты, используйте всё до сброса
|
||
- ✅ **Автоматический fallback** — Подписка → API Key → Дешёвый → Бесплатный, нулевой простой
|
||
- ✅ **Мульти-аккаунт** — Round-robin между аккаунтами каждого провайдера
|
||
- ✅ **Универсальный** — Работает с Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, любым CLI-инструментом
|
||
|
||
---
|
||
|
||
## 🔄 Как это работает
|
||
|
||
```
|
||
┌─────────────┐
|
||
│ Ваш CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
||
│ Tool │
|
||
└──────┬──────┘
|
||
│ http://localhost:20128/v1
|
||
↓
|
||
┌─────────────────────────────────────────┐
|
||
│ OmniRoute (Умный маршрутизатор) │
|
||
│ • Трансляция формата (OpenAI ↔ Claude) │
|
||
│ • Отслеживание квот + Embeddings + Изображения │
|
||
│ • Автообновление токенов │
|
||
└──────┬──────────────────────────────────┘
|
||
│
|
||
├─→ [Tier 1: ПОДПИСКА] Claude Code, Codex, Gemini CLI
|
||
│ ↓ квота исчерпана
|
||
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM и др.
|
||
│ ↓ лимит бюджета
|
||
├─→ [Tier 3: ДЕШЁВЫЙ] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
||
│ ↓ лимит бюджета
|
||
└─→ [Tier 4: БЕСПЛАТНЫЙ] iFlow, Qwen, Kiro (неограниченно)
|
||
|
||
Результат: Никогда не прекращайте программировать, минимальные затраты
|
||
```
|
||
|
||
---
|
||
|
||
## ⚡ Быстрый старт
|
||
|
||
**1. Установите глобально:**
|
||
|
||
```bash
|
||
npm install -g omniroute
|
||
omniroute
|
||
```
|
||
|
||
🎉 Dashboard открывается на `http://localhost:20128`
|
||
|
||
| Команда | Описание |
|
||
| ----------------------- | ------------------------------------------ |
|
||
| `omniroute` | Запустить сервер (порт по умолчанию 20128) |
|
||
| `omniroute --port 3000` | Использовать другой порт |
|
||
| `omniroute --no-open` | Не открывать браузер автоматически |
|
||
| `omniroute --help` | Показать справку |
|
||
|
||
**2. Подключите БЕСПЛАТНОГО провайдера:**
|
||
|
||
Dashboard → Провайдеры → Подключить **Claude Code** или **Antigravity** → OAuth вход → Готово!
|
||
|
||
**3. Используйте в CLI-инструменте:**
|
||
|
||
```
|
||
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Настройки:
|
||
Endpoint: http://localhost:20128/v1
|
||
API Key: [скопируйте из dashboard]
|
||
Model: if/kimi-k2-thinking
|
||
```
|
||
|
||
**Готово!** Начните программировать с БЕСПЛАТНЫМИ AI-моделями.
|
||
|
||
**Альтернатива — запуск из исходного кода:**
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
npm install
|
||
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
||
```
|
||
|
||
---
|
||
|
||
## 🐳 Docker
|
||
|
||
OmniRoute доступен как публичный Docker-образ на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
||
|
||
**Быстрый запуск:**
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name omniroute \
|
||
--restart unless-stopped \
|
||
-p 20128:20128 \
|
||
-v omniroute-data:/app/data \
|
||
diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**С файлом окружения:**
|
||
|
||
```bash
|
||
# Скопируйте и отредактируйте .env
|
||
cp .env.example .env
|
||
|
||
docker run -d \
|
||
--name omniroute \
|
||
--restart unless-stopped \
|
||
--env-file .env \
|
||
-p 20128:20128 \
|
||
-v omniroute-data:/app/data \
|
||
diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**Используя Docker Compose:**
|
||
|
||
```bash
|
||
# Базовый профиль (без CLI-инструментов)
|
||
docker compose --profile base up -d
|
||
|
||
# CLI-профиль (Claude Code, Codex, OpenClaw встроены)
|
||
docker compose --profile cli up -d
|
||
```
|
||
|
||
| Образ | Тег | Размер | Описание |
|
||
| ------------------------ | -------- | ------ | -------------------------- |
|
||
| `diegosouzapw/omniroute` | `latest` | ~250MB | Последний стабильный релиз |
|
||
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Текущая версия |
|
||
|
||
---
|
||
|
||
## 💰 Обзор цен
|
||
|
||
| Tier | Провайдер | Стоимость | Сброс квоты | Лучше всего для |
|
||
| ----------------- | ----------------- | ----------------------------- | ------------------ | -------------------------------- |
|
||
| **💳 ПОДПИСКА** | 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 | **БЕСПЛАТНО** (1000 кредитов) | Одноразово | Бесплатное тестирование |
|
||
| | DeepSeek | По использованию | Нет | Лучшее соотношение цена/качество |
|
||
| | Groq | Беспл. уровень + платный | Ограничено | Сверхбыстрый вывод |
|
||
| | xAI (Grok) | По использованию | Нет | Модели Grok |
|
||
| | Mistral | Беспл. уровень + платный | Ограничено | Европейский AI |
|
||
| | OpenRouter | По использованию | Нет | 100+ моделей |
|
||
| **💰 ДЕШЁВЫЙ** | GLM-4.7 | $0.6/1M | Ежедневно 10ч | Бюджетный бэкап |
|
||
| | MiniMax M2.1 | $0.2/1M | 5ч ротация | Самый дешёвый вариант |
|
||
| | Kimi K2 | $9/мес фикс | 10M токенов/мес | Предсказуемая цена |
|
||
| **🆓 БЕСПЛАТНЫЙ** | iFlow | $0 | Неограниченно | 8 бесплатных моделей |
|
||
| | Qwen | $0 | Неограниченно | 3 бесплатные модели |
|
||
| | Kiro | $0 | Неограниченно | Claude бесплатно |
|
||
|
||
**💡 Совет:** Начните с Gemini CLI (180K бесплатно/мес) + iFlow (неограниченно бесплатно) = $0!
|
||
|
||
---
|
||
|
||
## 🎯 Сценарии использования
|
||
|
||
### Сценарий 1: «У меня подписка Claude Pro»
|
||
|
||
**Проблема:** Квота истекает неиспользованной, лимиты скорости во время интенсивного программирования
|
||
|
||
```
|
||
Combo: "maximize-claude"
|
||
1. cc/claude-opus-4-6 (используйте подписку полностью)
|
||
2. glm/glm-4.7 (дешёвый бэкап при исчерпании квоты)
|
||
3. if/kimi-k2-thinking (бесплатный аварийный fallback)
|
||
|
||
Месячная стоимость: $20 (подписка) + ~$5 (бэкап) = $25 итого
|
||
vs. $20 + упирание в лимиты = разочарование
|
||
```
|
||
|
||
### Сценарий 2: «Хочу нулевую стоимость»
|
||
|
||
**Проблема:** Не может позволить подписки, нужен надёжный AI для программирования
|
||
|
||
```
|
||
Combo: "free-forever"
|
||
1. gc/gemini-3-flash (180K бесплатно/мес)
|
||
2. if/kimi-k2-thinking (неограниченно бесплатно)
|
||
3. qw/qwen3-coder-plus (неограниченно бесплатно)
|
||
|
||
Месячная стоимость: $0
|
||
Качество: Модели готовые к продакшену
|
||
```
|
||
|
||
### Сценарий 3: «Мне нужно программировать 24/7, без перерывов»
|
||
|
||
**Проблема:** Дедлайны, не может позволить простой
|
||
|
||
```
|
||
Combo: "always-on"
|
||
1. cc/claude-opus-4-6 (лучшее качество)
|
||
2. cx/gpt-5.2-codex (вторая подписка)
|
||
3. glm/glm-4.7 (дешёвый, ежедневный сброс)
|
||
4. minimax/MiniMax-M2.1 (самый дешёвый, сброс 5ч)
|
||
5. if/kimi-k2-thinking (бесплатно неограниченно)
|
||
|
||
Результат: 5 уровней fallback = нулевой простой
|
||
```
|
||
|
||
### Сценарий 4: «Хочу БЕСПЛАТНЫЙ AI в OpenClaw»
|
||
|
||
**Проблема:** Нужен AI-ассистент в мессенджерах, полностью бесплатно
|
||
|
||
```
|
||
Combo: "openclaw-free"
|
||
1. if/glm-4.7 (неограниченно бесплатно)
|
||
2. if/minimax-m2.1 (неограниченно бесплатно)
|
||
3. if/kimi-k2-thinking (неограниченно бесплатно)
|
||
|
||
Месячная стоимость: $0
|
||
Доступ через: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 Основные функции
|
||
|
||
### 🧠 Маршрутизация и интеллект
|
||
|
||
| Функция | Что делает |
|
||
| ------------------------------------------- | ----------------------------------------------------------------------------- |
|
||
| 🎯 **Умный 4-уровневый Fallback** | Авто-маршрутизация: Подписка → API Key → Дешёвый → Бесплатный |
|
||
| 📊 **Отслеживание квот в реальном времени** | Счётчик токенов в реальном времени + обратный отсчёт до сброса |
|
||
| 🔄 **Трансляция формата** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro бесшовно |
|
||
| 👥 **Мульти-аккаунт** | Несколько аккаунтов на провайдера с интеллектуальным выбором |
|
||
| 🔄 **Автообновление токенов** | OAuth-токены обновляются автоматически с повторами |
|
||
| 🎨 **Пользовательские комбо** | 6 стратегий: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
||
| 🧩 **Пользовательские модели** | Добавьте любой ID модели к любому провайдеру |
|
||
| 🌐 **Wildcard-маршрутизатор** | Маршрутизируйте паттерны `provider/*` к любому провайдеру динамически |
|
||
| 🧠 **Бюджет рассуждений** | Режимы passthrough, auto, custom и adaptive для моделей рассуждений |
|
||
| 💬 **Инъекция System Prompt** | Глобальный system prompt для всех запросов |
|
||
| 📄 **API Responses** | Полная поддержка OpenAI Responses API (`/v1/responses`) для Codex |
|
||
|
||
### 🎵 Мультимодальные API
|
||
|
||
| Функция | Что делает |
|
||
| ---------------------------- | --------------------------------------------------- |
|
||
| 🖼️ **Генерация изображений** | `/v1/images/generations` — 4 провайдера, 9+ моделей |
|
||
| 📐 **Embeddings** | `/v1/embeddings` — 6 провайдеров, 9+ моделей |
|
||
| 🎤 **Транскрипция аудио** | `/v1/audio/transcriptions` — Совместимо с Whisper |
|
||
| 🔊 **Текст в речь** | `/v1/audio/speech` — Мульти-провайдерный синтез |
|
||
| 🛡️ **Модерация** | `/v1/moderations` — Проверки безопасности контента |
|
||
| 🔀 **Reranking** | `/v1/rerank` — Переранжирование релевантности |
|
||
|
||
### 🛡️ Устойчивость и безопасность
|
||
|
||
| Функция | Что делает |
|
||
| -------------------------------- | -------------------------------------------------------------- |
|
||
| 🔌 **Circuit Breaker** | Авто-открытие/закрытие по провайдеру с настраиваемыми порогами |
|
||
| 🛡️ **Anti-Thundering Herd** | Mutex + семафор для API key провайдеров |
|
||
| 🧠 **Семантический кеш** | Двухуровневый кеш (сигнатура + семантика) снижает стоимость |
|
||
| ⚡ **Идемпотентность запросов** | 5с окно дедупликации для дублирующихся запросов |
|
||
| 🔒 **Спуфинг TLS Fingerprint** | Обход обнаружения ботов через wreq-js |
|
||
| 🌐 **Фильтрация IP** | Allowlist/blocklist для контроля доступа к API |
|
||
| 📊 **Настраиваемые Rate Limits** | Настраиваемые RPM, минимальный интервал, макс. конкуррентность |
|
||
|
||
### 📊 Наблюдаемость и аналитика
|
||
|
||
| Функция | Что делает |
|
||
| ----------------------------- | ------------------------------------------------------------------------ |
|
||
| 📝 **Логи запросов** | Режим debug с полными логами запросов/ответов |
|
||
| 💾 **Логи SQLite** | Постоянные proxy-логи переживают перезапуски |
|
||
| 📊 **Dashboard аналитики** | Recharts: карточки статистики, график использования, таблица провайдеров |
|
||
| 📈 **Отслеживание прогресса** | Opt-in SSE-события прогресса для стриминга |
|
||
| 🧪 **Оценки LLM** | Тестирование с golden set и 4 стратегиями сравнения |
|
||
| 🔍 **Телеметрия запросов** | Агрегация латентности p50/p95/p99 + трекинг X-Request-Id |
|
||
| 📋 **Логи + Квоты** | Отдельные страницы для просмотра логов и отслеживания квот |
|
||
| 🏥 **Dashboard здоровья** | Uptime, состояния circuit breaker, блокировки, статистика кеша |
|
||
| 💰 **Отслеживание стоимости** | Управление бюджетом + настройка цен по моделям |
|
||
|
||
### ☁️ Деплой и синхронизация
|
||
|
||
| Функция | Что делает |
|
||
| -------------------------- | --------------------------------------------------------------------------- |
|
||
| 💾 **Cloud Sync** | Синхронизация настроек между устройствами через Cloudflare Workers |
|
||
| 🌐 **Деплой куда угодно** | Localhost, VPS, Docker, Cloudflare Workers |
|
||
| 🔑 **Управление API Keys** | Генерация, ротация и настройка scope API keys по провайдерам |
|
||
| 🧙 **Мастер настройки** | 4-шаговая настройка для новых пользователей |
|
||
| 🔧 **Dashboard CLI Tools** | Настройка в один клик для Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
||
| 🔄 **Бэкапы БД** | Автоматическое резервное копирование и восстановление всех настроек |
|
||
|
||
<details>
|
||
<summary><b>📖 Подробности функций</b></summary>
|
||
|
||
### 🎯 Умный 4-уровневый Fallback
|
||
|
||
Создавайте комбо с автоматическим fallback:
|
||
|
||
```
|
||
Combo: "my-coding-stack"
|
||
1. cc/claude-opus-4-6 (ваша подписка)
|
||
2. nvidia/llama-3.3-70b (бесплатный NVIDIA API)
|
||
3. glm/glm-4.7 (дешёвый бэкап, $0.6/1M)
|
||
4. if/kimi-k2-thinking (бесплатный fallback)
|
||
|
||
→ Автоматически переключается при исчерпании квоты или ошибках
|
||
```
|
||
|
||
### 📊 Отслеживание квот в реальном времени
|
||
|
||
- Потребление токенов по провайдерам
|
||
- Обратный отсчёт до сброса (5 часов, ежедневно, еженедельно)
|
||
- Оценка стоимости для платных уровней
|
||
- Ежемесячные отчёты о расходах
|
||
|
||
### 🔄 Трансляция формата
|
||
|
||
Бесшовная трансляция между форматами:
|
||
|
||
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
||
- Ваш CLI отправляет формат OpenAI → OmniRoute транслирует → Провайдер получает нативный формат
|
||
- Работает с любым инструментом, поддерживающим пользовательские OpenAI endpoints
|
||
|
||
### 👥 Мульти-аккаунт
|
||
|
||
- Добавляйте несколько аккаунтов на провайдера
|
||
- Автоматический round-robin или маршрутизация по приоритету
|
||
- Fallback на следующий аккаунт при исчерпании квоты
|
||
|
||
### 🔄 Автообновление токенов
|
||
|
||
- OAuth-токены обновляются автоматически до истечения
|
||
- Без необходимости ручной повторной аутентификации
|
||
- Бесшовный опыт по всем провайдерам
|
||
|
||
### 🎨 Пользовательские комбо
|
||
|
||
- Создавайте неограниченные комбинации моделей
|
||
- 6 стратегий: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
||
- Делитесь комбо между устройствами с Cloud Sync
|
||
|
||
### 🏥 Dashboard здоровья
|
||
|
||
- Статус системы (uptime, версия, использование памяти)
|
||
- Состояния circuit breaker по провайдерам (Closed/Open/Half-Open)
|
||
- Статус rate limit и активные блокировки
|
||
- Статистика кеша сигнатур
|
||
- Телеметрия латентности (p50/p95/p99) + кеш промптов
|
||
- Сброс состояния здоровья одним кликом
|
||
|
||
### 🔧 Playground транслятора
|
||
|
||
- Отладка, тестирование и визуализация трансляции форматов API
|
||
- Отправляйте запросы и смотрите, как OmniRoute транслирует между форматами провайдеров
|
||
- Бесценно для устранения проблем интеграции
|
||
|
||
### 💾 Cloud Sync
|
||
|
||
- Синхронизация провайдеров, комбо и настроек между устройствами
|
||
- Автоматическая фоновая синхронизация
|
||
- Безопасное шифрованное хранилище
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📖 Руководство по настройке
|
||
|
||
<details>
|
||
<summary><b>💳 Провайдеры по подписке</b></summary>
|
||
|
||
### Claude Code (Pro/Max)
|
||
|
||
```bash
|
||
Dashboard → Провайдеры → Подключить Claude Code
|
||
→ OAuth вход → Автообновление токенов
|
||
→ Отслеживание квоты 5ч + еженедельно
|
||
|
||
Модели:
|
||
cc/claude-opus-4-6
|
||
cc/claude-sonnet-4-5-20250929
|
||
cc/claude-haiku-4-5-20251001
|
||
```
|
||
|
||
**Совет:** Используйте Opus для сложных задач, Sonnet для скорости. OmniRoute отслеживает квоту по моделям!
|
||
|
||
### OpenAI Codex (Plus/Pro)
|
||
|
||
```bash
|
||
Dashboard → Провайдеры → Подключить Codex
|
||
→ OAuth вход (порт 1455)
|
||
→ Сброс 5ч + еженедельно
|
||
|
||
Модели:
|
||
cx/gpt-5.2-codex
|
||
cx/gpt-5.1-codex-max
|
||
```
|
||
|
||
### Gemini CLI (БЕСПЛАТНО 180K/мес!)
|
||
|
||
```bash
|
||
Dashboard → Провайдеры → Подключить Gemini CLI
|
||
→ Google OAuth
|
||
→ 180K completions/мес + 1K/день
|
||
|
||
Модели:
|
||
gc/gemini-3-flash-preview
|
||
gc/gemini-2.5-pro
|
||
```
|
||
|
||
**Лучшая ценность:** Огромный бесплатный уровень! Используйте перед платными.
|
||
|
||
### GitHub Copilot
|
||
|
||
```bash
|
||
Dashboard → Провайдеры → Подключить GitHub
|
||
→ OAuth через GitHub
|
||
→ Ежемесячный сброс (1-е число)
|
||
|
||
Модели:
|
||
gh/gpt-5
|
||
gh/claude-4.5-sonnet
|
||
gh/gemini-3-pro
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔑 Провайдеры по API Key</b></summary>
|
||
|
||
### NVIDIA NIM (БЕСПЛАТНО 1000 кредитов!)
|
||
|
||
1. Регистрация: [build.nvidia.com](https://build.nvidia.com)
|
||
2. Получите бесплатный API key (1000 кредитов включены)
|
||
3. Dashboard → Добавить провайдера → NVIDIA NIM:
|
||
- API Key: `nvapi-your-key`
|
||
|
||
**Модели:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` и 50+ других
|
||
|
||
**Совет:** OpenAI-совместимый API — работает идеально с трансляцией форматов OmniRoute!
|
||
|
||
### DeepSeek
|
||
|
||
1. Регистрация: [platform.deepseek.com](https://platform.deepseek.com)
|
||
2. Получите API key
|
||
3. Dashboard → Добавить провайдера → DeepSeek
|
||
|
||
**Модели:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
||
|
||
### Groq (Бесплатный уровень доступен!)
|
||
|
||
1. Регистрация: [console.groq.com](https://console.groq.com)
|
||
2. Получите API key (бесплатный уровень включён)
|
||
3. Dashboard → Добавить провайдера → Groq
|
||
|
||
**Модели:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
||
|
||
**Совет:** Сверхбыстрый вывод — лучший для программирования в реальном времени!
|
||
|
||
### OpenRouter (100+ моделей)
|
||
|
||
1. Регистрация: [openrouter.ai](https://openrouter.ai)
|
||
2. Получите API key
|
||
3. Dashboard → Добавить провайдера → OpenRouter
|
||
|
||
**Модели:** Доступ к 100+ моделям от всех основных провайдеров через один API key.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>💰 Дешёвые провайдеры (Бэкап)</b></summary>
|
||
|
||
### GLM-4.7 (Ежедневный сброс, $0.6/1M)
|
||
|
||
1. Регистрация: [Zhipu AI](https://open.bigmodel.cn/)
|
||
2. Получите API key из Coding Plan
|
||
3. Dashboard → Добавить API Key:
|
||
- Провайдер: `glm`
|
||
- API Key: `your-key`
|
||
|
||
**Используйте:** `glm/glm-4.7`
|
||
|
||
**Совет:** Coding Plan предлагает 3× квоту по цене 1/7! Ежедневный сброс в 10:00.
|
||
|
||
### MiniMax M2.1 (Сброс 5ч, $0.20/1M)
|
||
|
||
1. Регистрация: [MiniMax](https://www.minimax.io/)
|
||
2. Получите API key
|
||
3. Dashboard → Добавить API Key
|
||
|
||
**Используйте:** `minimax/MiniMax-M2.1`
|
||
|
||
**Совет:** Самый дешёвый вариант для длинного контекста (1M токенов)!
|
||
|
||
### Kimi K2 ($9/мес фикс)
|
||
|
||
1. Подпишитесь: [Moonshot AI](https://platform.moonshot.ai/)
|
||
2. Получите API key
|
||
3. Dashboard → Добавить API Key
|
||
|
||
**Используйте:** `kimi/kimi-latest`
|
||
|
||
**Совет:** Фикс $9/мес за 10M токенов = $0.90/1M эффективная стоимость!
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🆓 БЕСПЛАТНЫЕ провайдеры (Аварийный бэкап)</b></summary>
|
||
|
||
### iFlow (8 БЕСПЛАТНЫХ моделей)
|
||
|
||
```bash
|
||
Dashboard → Подключить iFlow
|
||
→ OAuth вход iFlow
|
||
→ Неограниченное использование
|
||
|
||
Модели:
|
||
if/kimi-k2-thinking
|
||
if/qwen3-coder-plus
|
||
if/glm-4.7
|
||
if/minimax-m2
|
||
if/deepseek-r1
|
||
```
|
||
|
||
### Qwen (3 БЕСПЛАТНЫЕ модели)
|
||
|
||
```bash
|
||
Dashboard → Подключить Qwen
|
||
→ Авторизация по коду устройства
|
||
→ Неограниченное использование
|
||
|
||
Модели:
|
||
qw/qwen3-coder-plus
|
||
qw/qwen3-coder-flash
|
||
```
|
||
|
||
### Kiro (Claude БЕСПЛАТНО)
|
||
|
||
```bash
|
||
Dashboard → Подключить Kiro
|
||
→ AWS Builder ID или Google/GitHub
|
||
→ Неограниченное использование
|
||
|
||
Модели:
|
||
kr/claude-sonnet-4.5
|
||
kr/claude-haiku-4.5
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🎨 Создание комбо</b></summary>
|
||
|
||
### Пример 1: Максимизация подписки → Дешёвый бэкап
|
||
|
||
```
|
||
Dashboard → Комбо → Создать новое
|
||
|
||
Название: premium-coding
|
||
Модели:
|
||
1. cc/claude-opus-4-6 (Основная подписка)
|
||
2. glm/glm-4.7 (Дешёвый бэкап, $0.6/1M)
|
||
3. minimax/MiniMax-M2.1 (Самый дешёвый fallback, $0.20/1M)
|
||
|
||
Используйте в CLI: premium-coding
|
||
```
|
||
|
||
### Пример 2: Только бесплатные (Нулевая стоимость)
|
||
|
||
```
|
||
Название: free-combo
|
||
Модели:
|
||
1. gc/gemini-3-flash-preview (180K бесплатно/мес)
|
||
2. if/kimi-k2-thinking (неограниченно)
|
||
3. qw/qwen3-coder-plus (неограниченно)
|
||
|
||
Стоимость: $0 навсегда!
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔧 Интеграция с CLI</b></summary>
|
||
|
||
### Cursor IDE
|
||
|
||
```
|
||
Настройки → Модели → Расширенные:
|
||
OpenAI API Base URL: http://localhost:20128/v1
|
||
OpenAI API Key: [из dashboard OmniRoute]
|
||
Model: cc/claude-opus-4-6
|
||
```
|
||
|
||
### Claude Code
|
||
|
||
Используйте страницу **CLI Tools** в dashboard для настройки в один клик, или редактируйте `~/.claude/settings.json` вручную.
|
||
|
||
### Codex CLI
|
||
|
||
```bash
|
||
export OPENAI_BASE_URL="http://localhost:20128"
|
||
export OPENAI_API_KEY="your-omniroute-api-key"
|
||
|
||
codex "your prompt"
|
||
```
|
||
|
||
### OpenClaw
|
||
|
||
**Вариант 1 — Dashboard (рекомендуется):**
|
||
|
||
```
|
||
Dashboard → CLI Tools → OpenClaw → Выбрать модель → Применить
|
||
```
|
||
|
||
**Вариант 2 — Вручную:** Редактируйте `~/.openclaw/openclaw.json`:
|
||
|
||
```json
|
||
{
|
||
"models": {
|
||
"providers": {
|
||
"omniroute": {
|
||
"baseUrl": "http://127.0.0.1:20128/v1",
|
||
"apiKey": "sk_omniroute",
|
||
"api": "openai-completions"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
> **Примечание:** OpenClaw работает только с локальным OmniRoute. Используйте `127.0.0.1` вместо `localhost` для избежания проблем с IPv6.
|
||
|
||
### Cline / Continue / RooCode
|
||
|
||
```
|
||
Настройки → Конфигурация API:
|
||
Провайдер: OpenAI Compatible
|
||
Base URL: http://localhost:20128/v1
|
||
API Key: [из dashboard OmniRoute]
|
||
Model: if/kimi-k2-thinking
|
||
```
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📊 Доступные модели
|
||
|
||
<details>
|
||
<summary><b>Посмотреть все доступные модели</b></summary>
|
||
|
||
**Claude Code (`cc/`)** - Pro/Max:
|
||
|
||
- `cc/claude-opus-4-6`
|
||
- `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/`)** - БЕСПЛАТНО:
|
||
|
||
- `gc/gemini-3-flash-preview`
|
||
- `gc/gemini-2.5-pro`
|
||
|
||
**GitHub Copilot (`gh/`)**:
|
||
|
||
- `gh/gpt-5`
|
||
- `gh/claude-4.5-sonnet`
|
||
|
||
**NVIDIA NIM (`nvidia/`)** - БЕСПЛАТНЫЕ кредиты:
|
||
|
||
- `nvidia/llama-3.3-70b-instruct`
|
||
- `nvidia/mistral-7b-instruct`
|
||
- 50+ моделей на [build.nvidia.com](https://build.nvidia.com)
|
||
|
||
**GLM (`glm/`)** - $0.6/1M:
|
||
|
||
- `glm/glm-4.7`
|
||
|
||
**MiniMax (`minimax/`)** - $0.2/1M:
|
||
|
||
- `minimax/MiniMax-M2.1`
|
||
|
||
**iFlow (`if/`)** - БЕСПЛАТНО:
|
||
|
||
- `if/kimi-k2-thinking`
|
||
- `if/qwen3-coder-plus`
|
||
- `if/deepseek-r1`
|
||
- `if/glm-4.7`
|
||
- `if/minimax-m2`
|
||
|
||
**Qwen (`qw/`)** - БЕСПЛАТНО:
|
||
|
||
- `qw/qwen3-coder-plus`
|
||
- `qw/qwen3-coder-flash`
|
||
|
||
**Kiro (`kr/`)** - БЕСПЛАТНО:
|
||
|
||
- `kr/claude-sonnet-4.5`
|
||
- `kr/claude-haiku-4.5`
|
||
|
||
**OpenRouter (`or/`)** - 100+ моделей:
|
||
|
||
- `or/anthropic/claude-4-sonnet`
|
||
- `or/google/gemini-2.5-pro`
|
||
- Любая модель с [openrouter.ai/models](https://openrouter.ai/models)
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🧪 Оценки (Evals)
|
||
|
||
OmniRoute включает встроенный фреймворк оценки для тестирования качества ответов LLM по golden set. Доступ через **Analytics → Evals** в dashboard.
|
||
|
||
### Встроенный Golden Set
|
||
|
||
Предзагруженный «OmniRoute Golden Set» содержит 10 тестов:
|
||
|
||
- Приветствия, математика, география, генерация кода
|
||
- Соответствие формату JSON, перевод, markdown
|
||
- Отказ от небезопасного контента, подсчёт, булева логика
|
||
|
||
### Стратегии оценки
|
||
|
||
| Стратегия | Описание | Пример |
|
||
| ---------- | ----------------------------------------------------- | -------------------------------- |
|
||
| `exact` | Вывод должен совпадать точно | `"4"` |
|
||
| `contains` | Вывод должен содержать подстроку (без учёта регистра) | `"Paris"` |
|
||
| `regex` | Вывод должен соответствовать regex-паттерну | `"1.*2.*3"` |
|
||
| `custom` | Пользовательская JS-функция возвращает true/false | `(output) => output.length > 10` |
|
||
|
||
---
|
||
|
||
## 🐛 Устранение неполадок
|
||
|
||
<details>
|
||
<summary><b>Нажмите для раскрытия руководства</b></summary>
|
||
|
||
**«Language model did not provide messages»**
|
||
|
||
- Квота провайдера исчерпана → Проверьте трекер квот в dashboard
|
||
- Решение: Используйте комбо с fallback или переключитесь на более дешёвый уровень
|
||
|
||
**Rate limiting**
|
||
|
||
- Квота подписки исчерпана → Fallback на GLM/MiniMax
|
||
- Добавьте комбо: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
||
|
||
**OAuth-токен истёк**
|
||
|
||
- Обновляется автоматически OmniRoute
|
||
- Если проблема сохраняется: Dashboard → Провайдер → Переподключить
|
||
|
||
**Высокие расходы**
|
||
|
||
- Проверьте статистику в Dashboard → Расходы
|
||
- Переключите основную модель на GLM/MiniMax
|
||
- Используйте бесплатный уровень (Gemini CLI, iFlow) для некритичных задач
|
||
|
||
**Dashboard открывается на неправильном порту**
|
||
|
||
- Установите `PORT=20128` и `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
||
|
||
**Ошибки cloud sync**
|
||
|
||
- Проверьте что `BASE_URL` указывает на ваш запущенный экземпляр
|
||
- Проверьте что `CLOUD_URL` указывает на правильный облачный endpoint
|
||
- Держите значения `NEXT_PUBLIC_*` синхронизированными с серверными значениями
|
||
|
||
**Первый вход не работает**
|
||
|
||
- Проверьте `INITIAL_PASSWORD` в `.env`
|
||
- Если не задан, пароль по умолчанию `123456`
|
||
|
||
**Нет логов запросов**
|
||
|
||
- Установите `ENABLE_REQUEST_LOGS=true` в `.env`
|
||
|
||
**Тест подключения показывает «Invalid» для OpenAI-совместимых провайдеров**
|
||
|
||
- Многие провайдеры не предоставляют endpoint `/models`
|
||
- OmniRoute v0.9.0+ включает fallback-валидацию через chat completions
|
||
- Убедитесь что base URL содержит суффикс `/v1`
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🛠️ Технологический стек
|
||
|
||
- **Runtime**: Node.js 20+
|
||
- **Язык**: TypeScript 5.9 — **100% TypeScript** в `src/` и `open-sse/` (v0.9.0)
|
||
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
||
- **База данных**: LowDB (JSON) + SQLite (состояние домена + proxy-логи)
|
||
- **Стриминг**: Server-Sent Events (SSE)
|
||
- **Аутентификация**: OAuth 2.0 (PKCE) + JWT + API Keys
|
||
- **Тестирование**: Node.js test runner (368+ юнит-тестов)
|
||
- **CI/CD**: GitHub Actions (авто-публикация npm + Docker Hub при релизе)
|
||
- **Сайт**: [omniroute.online](https://omniroute.online)
|
||
- **Пакет**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
||
- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
||
- **Устойчивость**: Circuit breaker, экспоненциальный backoff, anti-thundering herd, TLS-спуфинг
|
||
|
||
---
|
||
|
||
## 📖 Документация
|
||
|
||
| Документ | Описание |
|
||
| ----------------------------------------------- | ------------------------------------------------ |
|
||
| [Руководство пользователя](docs/USER_GUIDE.md) | Провайдеры, комбо, интеграция CLI, деплой |
|
||
| [Справка API](docs/API_REFERENCE.md) | Все endpoints с примерами |
|
||
| [Устранение неполадок](docs/TROUBLESHOOTING.md) | Частые проблемы и решения |
|
||
| [Архитектура](docs/ARCHITECTURE.md) | Архитектура системы и внутреннее устройство |
|
||
| [Как внести вклад](CONTRIBUTING.md) | Настройка разработки и руководящие принципы |
|
||
| [Спецификация OpenAPI](docs/openapi.yaml) | Спецификация OpenAPI 3.0 |
|
||
| [Политика безопасности](SECURITY.md) | Сообщение об уязвимостях и практики безопасности |
|
||
|
||
---
|
||
|
||
## 📧 Поддержка
|
||
|
||
- **Сайт**: [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)
|
||
- **Оригинальный проект**: [9router от decolua](https://github.com/decolua/9router)
|
||
|
||
---
|
||
|
||
## 👥 Участники
|
||
|
||
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
||
|
||
### Как внести вклад
|
||
|
||
1. Сделайте fork репозитория
|
||
2. Создайте ветку функции (`git checkout -b feature/amazing-feature`)
|
||
3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
|
||
4. Отправьте в ветку (`git push origin feature/amazing-feature`)
|
||
5. Откройте Pull Request
|
||
|
||
См. [CONTRIBUTING.md](CONTRIBUTING.md) для подробных рекомендаций.
|
||
|
||
### Выпуск новой версии
|
||
|
||
```bash
|
||
# Создайте релиз — публикация в npm происходит автоматически
|
||
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 История звёзд
|
||
|
||
<a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
||
</picture>
|
||
</a>
|
||
|
||
---
|
||
|
||
## 🙏 Благодарности
|
||
|
||
Особая благодарность **[9router](https://github.com/decolua/9router)** от **[decolua](https://github.com/decolua)** — оригинальному проекту, вдохновившему этот форк. OmniRoute строится на этом невероятном фундаменте с дополнительными функциями, мультимодальными API и полной переписью на TypeScript.
|
||
|
||
Особая благодарность **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — оригинальной реализации на Go, вдохновившей этот порт на JavaScript.
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
Лицензия MIT — см. [LICENSE](LICENSE) для подробностей.
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>Сделано с ❤️ для разработчиков, которые программируют 24/7</sub>
|
||
<br/>
|
||
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
||
</div>
|