mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
* docs(i18n): full Russian README rewrite for native readers Rewrite docs/i18n/ru/README.md from an outdated English dump into a proper Russian manual aligned with the modern product README (v3.8.x structure, free-tier budget, combos, compression, CLI/MCP). Fix relative screenshot/doc links for the i18n path. * fix(8217): changelog fragment bullet prefix --------- Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
883 lines
42 KiB
Markdown
883 lines
42 KiB
Markdown
# 🚀 OmniRoute — Бесплатный AI-шлюз (Русский)
|
||
|
||
🌐 **Языки:** 🇺🇸 [English](../../../README.md) · 🇸🇦 [ar](../ar/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇧🇩 [bn](../bn/README.md) · 🇨🇿 [cs](../cs/README.md) · 🇩🇰 [da](../da/README.md) · 🇩🇪 [de](../de/README.md) · 🇪🇸 [es](../es/README.md) · 🇮🇷 [fa](../fa/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇮🇳 [gu](../gu/README.md) · 🇮🇱 [he](../he/README.md) · 🇮🇳 [hi](../hi/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇮🇩 [id](../id/README.md) · 🇮🇹 [it](../it/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇮🇳 [mr](../mr/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇳🇴 [no](../no/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇰🇪 [sw](../sw/README.md) · 🇮🇳 [ta](../ta/README.md) · 🇮🇳 [te](../te/README.md) · 🇹🇭 [th](../th/README.md) · 🇹🇷 [tr](../tr/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇵🇰 [ur](../ur/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇹🇼 [zh-TW](../zh-TW/README.md)
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
<img src="../../screenshots/MainOmniRoute.png" alt="Панель OmniRoute" width="820"/>
|
||
|
||
<br/>
|
||
|
||
# 🚀 OmniRoute — Бесплатный AI-шлюз
|
||
|
||
### Код без остановок. Один endpoint — **278 провайдеров**, **90+ бесплатных**.
|
||
|
||
**Claude Code, Codex, Cursor, Cline, Copilot и Antigravity → бесплатные Claude / GPT / Gemini с автопереключением.**
|
||
|
||
<br/>
|
||
|
||
**RTK + Caveman: экономия 15–95% токенов. Лимиты больше не мешают.**
|
||
|
||
<br/>
|
||
|
||
**~1.53B учитываемых бесплатных токенов / месяц** — в первый месяц до **~2.15B** с регистрационными бонусами. Живой учёт на `/dashboard/free-tiers`. ([методика →](../../reference/FREE_TIERS.md))
|
||
|
||
<br/>
|
||
|
||
[](#-278-ai-провайдеров--90-бесплатных)
|
||
[](#-278-ai-провайдеров--90-бесплатных)
|
||
[](../../reference/FREE_TIERS.md)
|
||
[](#️-экономьте-1595-токенов--автоматически)
|
||
[](#-комбо--главная-фича)
|
||
[](#-быстрый-старт)
|
||
|
||
<br/>
|
||
|
||
### 💬 Сообщество
|
||
|
||
[](https://discord.gg/U47eFqAXCn)
|
||
[](https://t.me/omnirouteOficial)
|
||
[](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
||
[](https://chat.whatsapp.com/LTSpdFhXTxjH4R6CCNiKWz)
|
||
|
||
**Вопросы, советы по провайдерам, roadmap и поддержка → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) / [🇧🇷 Brasil](https://chat.whatsapp.com/LTSpdFhXTxjH4R6CCNiKWz)**
|
||
|
||
<br/>
|
||
|
||
<a href="https://trendshift.io/repositories/23589" target="_blank"><img src="https://trendshift.io/api/badge/repositories/23589" alt="diegosouzapw%2FOmniRoute | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||
|
||
[](https://www.npmjs.com/package/omniroute)
|
||
[](../../../LICENSE)
|
||
[](https://github.com/diegosouzapw/OmniRoute)
|
||
|
||
[](https://www.npmjs.com/package/omniroute)
|
||

|
||
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
||

|
||

|
||
[](https://omniroute.online)
|
||
|
||
<br/>
|
||
|
||
[**🚀 Быстрый старт**](#-быстрый-старт) • [**🎯 Комбо**](#-комбо--главная-фича) • [**🌐 Провайдеры**](#-278-ai-провайдеров--90-бесплатных) • [**🔌 CLI и MCP**](#-полный-cli--a2a-и-mcp) • [**🗜️ Сжатие**](#️-экономьте-1595-токенов--автоматически) • [**🌍 Сайт**](https://omniroute.online)
|
||
|
||
[💥 Обещание](#-обещание) • [🤔 Зачем](#-зачем-omniroute) • [🏆 Чем отличается](#-чем-omniroute-отличается) • [🤖 Совместимые CLI](#-совместимые-cli-и-агенты) • [🖥️ Где запускать](#️-где-запускается-omniroute--везде) • [🔒 Приватность](#-приватно-и-local-first) • [🎬 В деле](#-omniroute-в-деле) • [📚 Дальше](#-узнать-больше) • [📧 Поддержка](#-поддержка-и-сообщество)
|
||
|
||
</div>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 💰 ~1.53B бесплатных токенов / месяц
|
||
|
||
</div>
|
||
|
||
> Собирать free-tier вручную — боль: десятки SDK, лимиты и непонятный остаток. OmniRoute сводит **документированные** free-tier **43 пулов / 460+ моделей** в одно честное число и показывает его live на `/dashboard/free-tiers`.
|
||
>
|
||
> - **~1.53B free tokens / мес** (steady) — в первый месяц до **~2.15B** с signup-кредитами.
|
||
> - **Честная математика** — каждый shared pool считается **один раз**. «Если крутить rate limit 24/7» выйдет ~10B — такие цифры мы **не** публикуем.
|
||
> - **Отдельно** — навсегда бесплатные провайдеры без cap (SiliconFlow, Z.AI GLM-Flash, Kilo, OpenCode Zen…) и **+$10 OpenRouter** → **+24M/мес** (не раздувают headline).
|
||
> - **По моделям**, used/remaining и пометки ToS — прямо в дашборде.
|
||
|
||
> Методика (дедуп пулов, кредиты, ToS): **[docs/reference/FREE_TIERS.md](../../reference/FREE_TIERS.md)**. Цифры пересматривают примерно раз в две недели — могут и **упасть**, и **вырасти**. CI (`check:docs-counts`) падает, если headline расходится с каталогом.
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 💥 Обещание
|
||
|
||
</div>
|
||
|
||
> Один endpoint. **278 провайдеров.** Код не останавливается — OmniRoute сам выбирает самый дешёвый рабочий вариант.
|
||
|
||
<table>
|
||
<tr>
|
||
<td width="33%" valign="top"><b>🚫 Не упирайтесь в лимиты</b><br/><sub>Авто-fallback по 278 провайдерам за миллисекунды. Квота кончилась — следующий подхватывает, без простоя.</sub></td>
|
||
<td width="33%" valign="top"><b>💸 До 95% токенов</b><br/><sub>RTK + Caveman stacked: 15–95% на сжимаемом (в tool-heavy сессиях в среднем ~89%).</sub></td>
|
||
<td width="33%" valign="top"><b>🆓 Старт с $0</b><br/><sub>90+ free-tier, 40+ free forever (Kiro, Qoder, Pollinations, LongCat…). Карта не нужна.</sub></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="33%" valign="top"><b>🔌 Все инструменты</b><br/><sub>26+ coding agents — Claude Code, Codex, Cursor, Cline, Copilot, Antigravity — один конфиг.</sub></td>
|
||
<td width="33%" valign="top"><b>🧩 Один endpoint</b><br/><sub>OpenAI ↔ Claude ↔ Gemini ↔ Responses API. Укажите <code>/v1</code> — и готово.</sub></td>
|
||
<td width="33%" valign="top"><b>🛡️ Production-grade</b><br/><sub>Circuit breakers, TLS stealth, MCP (104 tools), A2A, memory, guardrails, evals. 25 000+ тестов.</sub></td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🤔 Зачем OmniRoute?
|
||
|
||
</div>
|
||
|
||
> Хватит прыгать между десятью кабинетами, мёртвыми ключами и неожиданными счетами.
|
||
|
||
| ❌ Боль каждый день | ✅ Как решает OmniRoute |
|
||
|---|---|
|
||
| 📉 Подписка сгорает неиспользованной | **Выжимаем подписку** — трекинг квоты, тратим до reset |
|
||
| 🛑 Rate limit посреди кода | **4-tier auto-fallback** — Subscription → API → Cheap → Free |
|
||
| 🔥 Tool-output (`git diff`, логи) жжёт токены | **RTK + Caveman** — 15–95% на сжимаемом |
|
||
| 💸 Дорогие API ($20–50/мес за провайдера) | **Cost-optimized routing** — самый выгодный живой вариант |
|
||
| 🧰 У каждого IDE свой сетап | **Один endpoint, один дашборд** |
|
||
| 🌍 AI заблокирован в регионе | **3-level proxy** + TLS fingerprint stealth |
|
||
|
||
<div align="center">
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────┐
|
||
│ Ваш IDE / CLI (Claude Code, Cursor, Cline…) │
|
||
└─────────────────────────┬────────────────────────────────┘
|
||
│ http://localhost:20128/v1
|
||
▼
|
||
┌──────────────────────────────────────────────────────────┐
|
||
│ OmniRoute — умный роутер │
|
||
│ RTK + Caveman · 18 стратегий · circuit breakers │
|
||
│ TLS stealth · MCP · A2A · guardrails │
|
||
└─────────────────────────┬────────────────────────────────┘
|
||
┌─────────────┬────┴────────┬─────────────┐
|
||
▼ Tier 1 ▼ Tier 2 ▼ Tier 3 ▼ Tier 4
|
||
Подписка API Key Cheap Free
|
||
Claude Code, DeepSeek, GLM $0.5, Kiro, Qoder,
|
||
Codex, Copilot Groq, xAI MiniMax $0.2 Pollinations
|
||
квота? ───────▶ бюджет? ───▶ бюджет? ───▶ всегда online
|
||
```
|
||
|
||
</div>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🎯 Комбо — главная фича
|
||
|
||
</div>
|
||
|
||
> **Combo** — цепочка моделей, по которой OmniRoute ходит **сам**. Квота кончилась, провайдер упал, цена взлетела — комбо тихо уходит на следующий шаг. **Именно это делает OmniRoute «неубиваемым».** 🛡️
|
||
|
||
### ⚡ Без настройки — просто `auto`
|
||
|
||
Комбо создавать не обязательно. Поставьте модель `auto` (или вариант) — OmniRoute соберёт виртуальное комбо из подключённых провайдеров:
|
||
|
||
| Model ID | На что оптимизирует |
|
||
|---|---|
|
||
| `auto` | 🎯 Баланс (LKGP — держится за последний удачный провайдер) |
|
||
| `auto/coding` | 🧑💻 Качество кода |
|
||
| `auto/fast` | ⚡ Минимальная latency |
|
||
| `auto/cheap` | 💰 Минимальная цена за токен |
|
||
| `auto/offline` | 🔋 Максимум headroom по квоте / rate limit |
|
||
| `auto/smart` | 🔭 Качество + 10% exploration |
|
||
|
||
### 🔀 Или соберите своё — 18 стратегий
|
||
|
||
| # | Стратегия | Что делает |
|
||
|---|---|---|
|
||
| 1 | `priority` | Идёт по списку по порядку — выжимает каждый target 🥇 |
|
||
| 2 | `fill-first` | Сначала полностью заполняет квоту target |
|
||
| 3 | `weighted` | Взвешенный random |
|
||
| 4 | `round-robin` | Цикл по targets |
|
||
| 5 | `p2c` | Power-of-two-choices load balancing |
|
||
| 6 | `least-used` | Наименьшая текущая нагрузка |
|
||
| 7 | `random` | Uniform random (с dedupe) |
|
||
| 8 | `strict-random` | Random без dedupe 🎲 |
|
||
| 9 | `cost-optimized` | Минимум $ за запрос из live pricing 💸 |
|
||
| 10 | `headroom` | Больше всего оставшейся квоты |
|
||
| 11 | `reset-window` | Чья квота reset ближе |
|
||
| 12 | `reset-aware` | Ранг по reset — короткие окна первыми 📊 |
|
||
| 13 | `context-relay` | Передача контекста между targets 🧠 |
|
||
| 14 | `context-optimized` | Лучший fit под размер контекста |
|
||
| 15 | `lkgp` | Last-Known-Good Path — sticky к успеху |
|
||
| 16 | `auto` | Live scoring по 12 факторам 🤖 |
|
||
| 17 | `fusion` | Панель моделей + judge → один ответ 🧬 |
|
||
| 18 | `pipeline` | Цепочка: output шага N → input N+1 🔗 |
|
||
|
||
<sub>Auto-Combo scoring: **12 факторов** (health, quota, cost, latency, success rate, freshness…). Подробнее: [`docs/routing/AUTO-COMBO.md`](../../routing/AUTO-COMBO.md).</sub>
|
||
|
||
### ⚖️ Quota-Share — одна подписка на команду ✨
|
||
|
||
Несколько ключей на **один** upstream-аккаунт? Burst на одном ключе может сжечь 5h/hourly quota на всех. **Quota-Share** честно делит time-based quota между ключами пула (work-conserving: idle-доля отдаётся другим).
|
||
|
||
| Параметр | Управление |
|
||
|---|---|
|
||
| ⚖️ **Weight** | Доля ключа, напр. `50 / 30 / 20` |
|
||
| 📐 **Dimensions** | `%` · requests · tokens · `$`, окна **5h / 7d / per-model** |
|
||
| 🚦 **Policy** | `hard` · `soft` · `burst` |
|
||
| 🧱 **Cap** | Жёсткий потолок на ключ |
|
||
|
||
<sub>📖 [Quota Sharing Engine](../../routing/QUOTA_SHARE.md)</sub>
|
||
|
||
### 🧱 Три слоя устойчивости
|
||
|
||
| Слой | Область | Механизм |
|
||
|---|---|---|
|
||
| 🔌 **Circuit breaker** | Весь провайдер | Перестаёт слать запросы в «падающий» upstream; probe recovery |
|
||
| 💤 **Connection cooldown** | Один ключ / аккаунт | Пропускает «горячий» ключ, siblings продолжают |
|
||
| 🎯 **Model lockout** | Одна модель | Блокирует только исчерпанную модель, не всю connection |
|
||
|
||
```
|
||
Combo: "always-on" strategy: priority
|
||
1. cc/claude-opus-4-7 ← подписка (сначала)
|
||
2. cx/gpt-5.2-codex ← вторая подписка
|
||
3. glm/glm-4.7 ← cheap ($0.5–0.6/1M)
|
||
4. if/kimi-k2-thinking ← free forever
|
||
Итог: 4 уровня = почти нулевой downtime
|
||
```
|
||
|
||
<sub>📖 [Auto-Combo](../../routing/AUTO-COMBO.md) · [Resilience Guide](../../architecture/RESILIENCE_GUIDE.md)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🏆 Чем OmniRoute отличается
|
||
|
||
</div>
|
||
|
||
| Фича | OmniRoute | Другие роутеры |
|
||
|---|---|---|
|
||
| 🌐 Провайдеры | **278** | 20–100 |
|
||
| 🆓 Free | **90+ (40+ forever)** | 1–5 |
|
||
| 🔀 Стратегии | **18** | 1–3 |
|
||
| 🗜️ Сжатие токенов | **RTK + Caveman (15–95%)** | Нет / 20–40% |
|
||
| 🧰 MCP server | **104 tools, 3 transports, 31 scopes** | Редко |
|
||
| 🤝 A2A | **6 skills, JSON-RPC 2.0** | Нет |
|
||
| 🧠 Memory (FTS5 + vector) | **Да** | Редко |
|
||
| 🛡️ Guardrails | **Да** | Редко |
|
||
| ☁️ Cloud agents | **Codex, Cursor, Devin, Jules** | Нет |
|
||
| 🥷 TLS stealth | **JA3/JA4 via wreq-js** | Нет |
|
||
| 🖥️ Платформы | **Web · Desktop · Termux · PWA** | Только web |
|
||
| 🌍 i18n | **43 локали** | 0–4 |
|
||
|
||
<sub>📊 Сравнение с LiteLLM, OpenRouter, Portkey → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](../../comparison/OMNIROUTE_VS_ALTERNATIVES.md)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# ✨ Что нового
|
||
|
||
</div>
|
||
|
||
> Highlights **v3.8.20 → v3.8.49**. Полная история: [`CHANGELOG.md`](../../../CHANGELOG.md).
|
||
|
||
- **🗜️ Compression hardening** — inflation guard по умолчанию, Caveman packs DE/FR/JA + Chinese (文言), RTK filters для Gradle & .NET.
|
||
- **💸 Honest flat-rate cost** — subscription/coding-plan в analytics = **$0**; budget/quota/routing по-прежнему оценивают.
|
||
- **⚖️ Quota-Share routing** — DRR, concurrency, multi-window buckets, session stickiness.
|
||
- **🤖 One-command CLI setup** — `setup-*` для 12+ tools; `omniroute launch` / `launch-codex`.
|
||
- **🛰️ Remote mode** — `connect` / `contexts` / `tokens` + OAuth helper для VPS.
|
||
- **🧭 Smarter auto** — `auto/<category>:<tier>`, Fusion, task-aware routing, per-request overrides.
|
||
- **🗜️ Pluggable compression** — 11 engines + Studios, LLMLingua-2, Ultra, fidelity gate, GCF v3.2.
|
||
- **🕵️ MITM decrypt (TPROXY)** — CLI, игнорирующие proxy env; per-SNI CA.
|
||
- **💸 Cost telemetry** — `X-OmniRoute-*` headers, cache-HIT savings, per-key USD quotas.
|
||
- **🧠 Memory** — opt-in, int8 quantization, `x-omniroute-no-memory`.
|
||
- **🛡️ Security** — prompt-injection guard + DuckDuckGo last-resort search.
|
||
- **🖼️ Endpoints** — `/v1/ocr`, `/v1/audio/translations`.
|
||
- **🤝 Providers & agents** — Cursor Cloud Agent, Grok Build (xAI), Ollama card, Claude Sonnet 5, Zed, Requesty…
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🤖 Совместимые CLI и агенты
|
||
|
||
</div>
|
||
|
||
> Один конфиг — `http://localhost:20128/v1` — и **любой** AI IDE/CLI едет на free & low-cost моделях.
|
||
|
||
| | | | | | |
|
||
|---|---|---|---|---|---|
|
||
| [**Claude Code**](https://github.com/anthropics/claude-code) | [**Codex CLI**](https://github.com/openai/codex) | **Cline** | [**Kilo Code**](https://github.com/Kilo-Org/kilocode) | **Roo Code** | **Continue** |
|
||
| [**OpenCode**](https://github.com/anomalyco/opencode) | **Copilot CLI** | **Cursor CLI** | **Factory Droid** | **Grok Build** | **OpenClaw** |
|
||
|
||
<div align="center">
|
||
<b>+ также</b> · Aider · Goose · Hermes · Kiro · Antigravity · Windsurf · AMP · <b>любой OpenAI-compatible tool</b>
|
||
</div>
|
||
|
||
<sub>📖 Setup 33 tools → [`docs/reference/CLI-TOOLS.md`](../../reference/CLI-TOOLS.md) · OpenCode plugin → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🌐 278 AI-провайдеров — 90+ бесплатных
|
||
|
||
</div>
|
||
|
||
> Самый полный каталог среди open-source роутеров: **278 провайдеров**, **90+ free-tier**, **40+ free forever**.
|
||
|
||
### 🆓 Free forever — $0, без карты
|
||
|
||
| Провайдер | Что даёт |
|
||
|---|---|
|
||
| **AgentRouter** | GPT-5, Claude, Gemini — $100 free credits |
|
||
| **Qoder AI** | Kimi-K2, DeepSeek-R1 — unlimited FREE |
|
||
| **Pollinations** | GPT-5, Claude, Llama 4 — без ключа |
|
||
| **LongCat** | LongCat-2.0 — 10M one-time (KYC) |
|
||
| **Cloudflare AI** | 50+ models — 10K neurons/day |
|
||
| **NVIDIA NIM** | 129 models — ~40 RPM free |
|
||
| **Cerebras** | Qwen3 235B — 1M tokens/day |
|
||
| **Kiro** | Claude Sonnet/Haiku — ~50 credits/mo |
|
||
|
||
📖 Machine-readable catalog → [`docs/reference/PROVIDER_REFERENCE.md`](../../reference/PROVIDER_REFERENCE.md)
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🖥️ Где запускается OmniRoute — везде
|
||
|
||
</div>
|
||
|
||
| Платформа | Установка | Плюсы |
|
||
|---|---|---|
|
||
| 📦 **npm (global)** | `npm install -g omniroute` | Одна команда, любая ОС |
|
||
| 🐳 **Docker** | `docker run … diegosouzapw/omniroute` | **AMD64 + ARM64** |
|
||
| 🖥️ **Desktop (Electron)** | `npm run electron:build` | Окно + tray — Win/macOS/Linux |
|
||
| 💪 **ARM** | native `arm64` | Pi, ARM servers, Apple Silicon |
|
||
| 📱 **Android (Termux)** | `pkg install nodejs && npx -y omniroute` | На телефоне 24/7, без root |
|
||
| 📲 **PWA** | «Add to Home Screen» | Fullscreen, offline |
|
||
| 🧩 **OpenCode plugin** | `@omniroute/opencode-provider` | Нативная интеграция |
|
||
| 🛠️ **Из исходников** | `npm install && npm run dev` | Хакинг и контрибьют |
|
||
|
||
<sub>📖 [Docker](../../guides/DOCKER_GUIDE.md) · [Desktop](../../../electron/README.md) · [Termux](../../guides/TERMUX_GUIDE.md) · [PWA](../../guides/PWA_GUIDE.md) · [OpenCode](../../frameworks/OPENCODE.md)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🔒 Приватно и local-first
|
||
|
||
</div>
|
||
|
||
> Ваши ключи, ваша машина, ваши данные. OmniRoute — **локальный прокси**, без «звонков домой».
|
||
|
||
- 🏠 **100% на вашем железе** — npm, Docker, desktop или телефон. Нет cloud-hop OmniRoute.
|
||
- 🔐 **Credentials at rest** — API keys и OAuth в **AES-256-GCM**.
|
||
- 🚫 **Zero telemetry по умолчанию** — промпты уходят только выбранным провайдерам.
|
||
- 🛡️ **Жёсткий gateway** — scoping ключей, IP filter, rate limits, prompt-injection guard, loopback-only process routes.
|
||
- 📜 **MIT, fully open-source** — аудируйте построчно, self-host навсегда.
|
||
|
||
<sub>📖 [Authorization](../../architecture/AUTHZ_GUIDE.md) · [Guardrails](../../security/GUARDRAILS.md) · [Compliance](../../security/COMPLIANCE.md)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🔌 Полный CLI + A2A и MCP
|
||
|
||
</div>
|
||
|
||
> Это не «просто сервер» — **CLI-кокит** с **80+ командами** и открытыми agent-протоколами, чтобы AI управлял OmniRoute **сам**.
|
||
|
||
### ⌨️ Настоящий CLI
|
||
|
||
```bash
|
||
omniroute # gateway + dashboard (порт 20128)
|
||
omniroute chat # TUI-чат (/model /combo /skill /memory)
|
||
omniroute setup # мастер первого запуска
|
||
omniroute doctor # диагностика провайдеров, портов, native deps
|
||
```
|
||
|
||
### 🛰️ Remote mode — CLI здесь, OmniRoute на VPS
|
||
|
||
```bash
|
||
omniroute connect 192.168.0.15 # пароль → scoped token
|
||
omniroute models list # ← на REMOTE
|
||
omniroute configure codex # remote model → local Codex profile
|
||
omniroute tokens create --name ci --scope read
|
||
omniroute contexts use default # ← обратно на local
|
||
```
|
||
|
||
Scopes: `read` / `write` / `admin`. Process-spawning routes — только loopback.
|
||
<sub>📖 [Remote Mode](../../guides/REMOTE-MODE.md)</sub>
|
||
|
||
### 🤝 Подключите агента — он управляет шлюзом
|
||
|
||
| Протокол | Endpoint | Зачем |
|
||
|---|---|---|
|
||
| 🧰 **MCP (stdio)** | `omniroute --mcp` | Claude Desktop, Cursor, любой MCP client |
|
||
| 🌊 **MCP (HTTP)** | `http://localhost:20128/api/mcp/stream` | Remote MCP — **104 tools**, 31 scopes |
|
||
| 📡 **MCP (SSE)** | `http://localhost:20128/api/mcp/sse` | Streaming MCP |
|
||
| 🤝 **A2A** | `http://localhost:20128/.well-known/agent.json` | Agent-to-agent, JSON-RPC 2.0 + SSE |
|
||
|
||
```bash
|
||
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
|
||
```
|
||
|
||
<sub>📖 [MCP](../../frameworks/MCP-SERVER.md) · [A2A](../../frameworks/A2A-SERVER.md) · [Agent Protocols](../../frameworks/AGENT_PROTOCOLS_GUIDE.md)</sub>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🗜️ Экономьте 15–95% токенов — автоматически
|
||
|
||
</div>
|
||
|
||
> **Зачем тратить много токенов, если хватает меньшего?** Каждый запрос идёт через compression pipeline **прозрачно** — клиент не меняется. Стек из **11 composable engines** (идеи [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman), [LLMLingua-2](https://github.com/microsoft/LLMLingua), [Troglodita](https://github.com/leninejunior/troglodita)).
|
||
|
||
### 🧱 11-engine stack
|
||
|
||
| # | Engine | Что делает |
|
||
|---|---|---|
|
||
| 1 | **Session-Dedup** | Убирает повторённый cross-turn контент |
|
||
| 2 | **CCR** | Крупные блоки за retrieve-markers, fetch on demand |
|
||
| 3 | **RTK** | Умная фильтрация tool-result, dedup, truncation |
|
||
| 4 | **Headroom** | Lossless tabular compaction JSON arrays (~30%), GCF v3.2 |
|
||
| 5 | **Relevance** | Extractive scoring относительно last user query |
|
||
| 6 | **Caveman** | Rule-based prose (~65–75% на output) |
|
||
| 7 | **LLMLingua-2** | ML semantic pruning (MobileBERT ONNX), code-safe |
|
||
| 8 | **Lite** | Whitespace + image-URL trimming |
|
||
| 9 | **Aggressive** | Summarization + progressive aging старых turns |
|
||
| 10 | **Ultra** | Heuristic pruning + optional SLM tier |
|
||
|
||
Код, URL и structured data **всегда** сохраняются byte-perfect.
|
||
|
||
| Режим | Экономия | Когда |
|
||
|---|---|---|
|
||
| 🪶 **Lite** | ~15% | Безопасный always-on default |
|
||
| 🪨 **Standard (Caveman)** | ~30% | Ежедневный coding |
|
||
| ⚡ **Aggressive** | ~50% | Длинные tool-heavy сессии |
|
||
| 🔥 **Ultra** | ~75% | Максимум экономии |
|
||
| 🧰 **RTK** | 60–90% | Shell / test / build / git output |
|
||
| 🔗 **Stacked (RTK → Caveman)** | **78–95%** | Промпты + tool logs |
|
||
|
||
**Пример — Standard:**
|
||
|
||
> **До (69 tokens):** _"The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle…"_
|
||
>
|
||
> **После (19 tokens):** _"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."_
|
||
>
|
||
> **Тот же смысл. −72% tokens. Без потери точности.** ✅
|
||
|
||
Default stack: `RTK → Caveman`. Combined:
|
||
|
||
```txt
|
||
combined = 1 − (1 − RTK) × (1 − Caveman_input)
|
||
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
|
||
range = 78.4 – 94.6%
|
||
```
|
||
|
||
Precedence (high → low): header `x-omniroute-compression` › combo override › named profile › adaptive › panel default › off.
|
||
|
||
📖 [`COMPRESSION_GUIDE.md`](../../compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](../../compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](../../compression/COMPRESSION_ENGINES.md)
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# ⚡ Быстрый старт
|
||
|
||
</div>
|
||
|
||
**1) Установка и запуск**
|
||
|
||
```bash
|
||
npm install -g omniroute
|
||
omniroute
|
||
```
|
||
|
||
> 💡 Видите `npm warn ERESOLVE` / peer-dep? [Это безвредно](../../getting-started/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
|
||
|
||
Dashboard: `http://localhost:20128` · API: `http://localhost:20128/v1`.
|
||
|
||
**2) Подключите FREE-провайдера (без signup)**
|
||
|
||
Dashboard → **Providers** → **Kiro AI** (free Claude, ~50 credits/mo) или **OpenCode Free** (без auth) → готово.
|
||
|
||
**3) Направьте coding tool**
|
||
|
||
```txt
|
||
Base URL: http://localhost:20128/v1
|
||
API Key: [Dashboard → Endpoints]
|
||
Model: auto (zero-config smart routing — или любой provider/model)
|
||
```
|
||
|
||
**4) Проверка**
|
||
|
||
```bash
|
||
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
|
||
```
|
||
|
||
Должны появиться подключённые модели. 🎉 Дальше пишите код — OmniRoute сам роутит и делает fallback.
|
||
|
||
Если клиент **не умеет** custom headers — tokenized aliases:
|
||
|
||
```txt
|
||
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
|
||
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
|
||
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
|
||
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
|
||
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
|
||
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
|
||
```
|
||
|
||
Предпочтительно: `Authorization: Bearer ...`.
|
||
|
||
<br/>
|
||
|
||
## 📦 Другие способы — Docker, source, pnpm, Arch
|
||
|
||
**🐳 Docker**
|
||
|
||
```bash
|
||
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
|
||
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**🛠️ Из исходников**
|
||
|
||
```bash
|
||
cp .env.example .env && npm install
|
||
PORT=20128 npm run dev
|
||
```
|
||
|
||
**📦 pnpm**
|
||
|
||
```bash
|
||
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
|
||
```
|
||
|
||
**🐧 Arch Linux (AUR)**
|
||
|
||
```bash
|
||
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
|
||
```
|
||
|
||
**🔧 Nix (Flake)**
|
||
|
||
```bash
|
||
nix develop
|
||
npm run dev
|
||
# или: devbox run npm run dev
|
||
```
|
||
|
||
📖 [Docker Guide](../../guides/DOCKER_GUIDE.md) — Compose, Caddy HTTPS, Cloudflare tunnels.
|
||
|
||
### Полезные флаги CLI
|
||
|
||
| Команда | Описание |
|
||
|---|---|
|
||
| `omniroute` | Сервер (`PORT=20128`, API + dashboard) |
|
||
| `omniroute --port 3000` | Порт 3000 |
|
||
| `omniroute --mcp` | MCP server (stdio) |
|
||
| `omniroute --no-open` | Не открывать браузер |
|
||
| `omniroute --help` | Справка |
|
||
|
||
Split-port:
|
||
|
||
```bash
|
||
PORT=20128 DASHBOARD_PORT=20129 omniroute
|
||
# API: http://localhost:20128/v1
|
||
# Dashboard: http://localhost:20129
|
||
```
|
||
|
||
### Удаление
|
||
|
||
| Команда | Действие |
|
||
|---|---|
|
||
| `npm run uninstall` | Убирает app, **сохраняет** `~/.omniroute` |
|
||
| `npm run uninstall:full` | Удаляет app **и** все ключи/БД |
|
||
| `npm uninstall -g omniroute` | Глобальный npm uninstall |
|
||
|
||
### Старт с $0 — Free Stack
|
||
|
||
| Шаг | Действие | Что открывается |
|
||
|---|---|---|
|
||
| 1 | Подключить **Kiro** (AWS Builder ID OAuth) | Claude Sonnet / Haiku |
|
||
| 2 | Подключить **Qoder** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus… |
|
||
| 3 | Подключить **Qwen** (Device Code) | qwen3-coder-plus/flash… |
|
||
| 4 | `/dashboard/combos` → шаблон **Free Stack ($0)** | Round-robin free-провайдеров |
|
||
|
||
IDE/CLI: `http://localhost:20128/v1` · API Key: любая строка (если `REQUIRE_API_KEY=false`).
|
||
|
||
> **Дополнительно free:** Groq (30 RPM), NVIDIA NIM (~40 RPM), Cerebras (1M tok/day), LongCat, Cloudflare Workers AI (10K Neurons/day).
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 🎬 OmniRoute в деле
|
||
|
||
</div>
|
||
|
||
<div align="center">
|
||
<table>
|
||
<tr>
|
||
<td align="center" width="280">
|
||
<a href="https://www.youtube.com/watch?v=Rxdc36yUyOQ"><img src="https://img.youtube.com/vi/Rxdc36yUyOQ/maxresdefault.jpg" alt="Guia em Português" width="260"/></a><br/>
|
||
<b>🇧🇷 Português</b><br/><sub>Полный гайд</sub>
|
||
</td>
|
||
<td align="center" width="280">
|
||
<a href="https://www.youtube.com/watch?v=CMzyOiUyEVc"><img src="https://img.youtube.com/vi/CMzyOiUyEVc/maxresdefault.jpg" alt="English Guide" width="260"/></a><br/>
|
||
<b>🇺🇸 English</b><br/><sub>Complete walkthrough</sub>
|
||
</td>
|
||
<td align="center" width="280">
|
||
<a href="https://www.youtube.com/watch?v=il_5Ii6v4-Y"><img src="https://img.youtube.com/vi/il_5Ii6v4-Y/maxresdefault.jpg" alt="Руководство на русском" width="260"/></a><br/>
|
||
<b>🇷🇺 Русский</b><br/><sub>Полное руководство</sub>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
> 🎬 **Сняли видео про OmniRoute?** Откройте [issue](https://github.com/diegosouzapw/OmniRoute/issues/new) или [discussion](https://github.com/diegosouzapw/OmniRoute/discussions) — добавим в этот раздел.
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 📚 Узнать больше
|
||
|
||
</div>
|
||
|
||
<details>
|
||
<summary><b>💰 Цены и zero-cost stack</b></summary>
|
||
|
||
<br/>
|
||
|
||
| Tier | Примеры | Стоимость |
|
||
|---|---|---|
|
||
| 💳 **Subscription** | Claude Code Pro / Codex / Copilot | $10–200/мес |
|
||
| 🔑 **API Key (free tiers)** | NVIDIA NIM, Cerebras, Groq | **Free** |
|
||
| 💰 **Cheap** | GLM ~$0.5/1M · MiniMax ~$0.2–0.3/1M | Копейки |
|
||
| 🆓 **Free forever** | Kiro, Qoder, Qwen, Pollinations, LongCat | **$0** |
|
||
|
||
**Playbook A — выжать подписку + cheap backup:**
|
||
|
||
```txt
|
||
Combo: "maximize-claude"
|
||
1. cc/claude-opus-4-7
|
||
2. glm/glm-4.7
|
||
3. if/kimi-k2-thinking
|
||
```
|
||
|
||
**Playbook B — zero-cost coding:**
|
||
|
||
```txt
|
||
Combo: "free-forever"
|
||
1. if/kimi-k2-thinking
|
||
2. qw/qwen3-coder-plus
|
||
```
|
||
|
||
> 💡 «Cost» в дашборде — **tracker экономии**, не счёт OmniRoute. OmniRoute вам **не** выставляет счета.
|
||
|
||
📖 Free catalog → [`docs/reference/FREE_TIERS.md`](../../reference/FREE_TIERS.md)
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🌍 Геоблоки — 3-level proxy + stealth</b></summary>
|
||
|
||
<br/>
|
||
|
||
🇷🇺 🇨🇳 🇮🇷 и другие restricted regions? **Proxy на 3 уровнях** (global / per-provider / per-connection): API, OAuth, connection tests, token refresh, model sync.
|
||
|
||
- **Protocols:** HTTP/HTTPS, SOCKS5, auth proxies
|
||
- **TLS fingerprint spoofing** (`wreq-js`), CLI fingerprint matching
|
||
- OAuth через proxy — лечит `unsupported_country_region_territory`
|
||
|
||
📖 [`docs/ops/PROXY_GUIDE.md`](../../ops/PROXY_GUIDE.md)
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>✨ Возможности (кратко)</b></summary>
|
||
|
||
<br/>
|
||
|
||
**Routing:** 18 стратегий · task-aware · thinking budget · wildcards · system prompt injection.
|
||
**Compatibility:** OpenAI ↔ Claude ↔ Gemini ↔ Responses · OAuth PKCE auto-refresh · multi-account · Batch + Files API.
|
||
**Protocols:** MCP (104 tools) · A2A · ACP · cloud agents.
|
||
**Quality/ops:** Evals · guardrails (PII, injection) · health · p50/p95/p99 · webhooks · audit.
|
||
**Media:** embeddings, images, video, music, STT/TTS, OCR, moderations, rerank.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📖 Env, FAQ</b></summary>
|
||
|
||
<br/>
|
||
|
||
| Variable | Default | Назначение |
|
||
|---|---|---|
|
||
| `PORT` | `20128` | API + dashboard |
|
||
| `REQUIRE_API_KEY` | `false` | Требовать API key на `/v1` |
|
||
| `DATA_DIR` | `~/.omniroute` | БД и конфиги |
|
||
| `REQUEST_TIMEOUT_MS` | `600000` | Базовый timeout |
|
||
| `STREAM_IDLE_TIMEOUT_MS` | inherits | Idle gap SSE |
|
||
|
||
**OmniRoute берёт деньги?** Нет — open-source на вашей машине. Платите только платным провайдерам.
|
||
**Free правда unlimited?** Часто да (Qoder, Pollinations…). Kiro — free, но ~50 credits/mo. Комбо из нескольких free = zero-cost устойчивость.
|
||
**Сжатие портит качество?** Сжимается **input**; code/URL/JSON protected.
|
||
**Регион заблокирован?** Proxy + stealth.
|
||
|
||
📖 [User Guide](../../guides/USER_GUIDE.md) · [API](../../reference/API_REFERENCE.md) · [Environment](../../reference/ENVIRONMENT.md)
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🐛 Troubleshooting</b></summary>
|
||
|
||
<br/>
|
||
|
||
| Проблема | Быстрый фикс |
|
||
|---|---|
|
||
| "Language model did not provide messages" | Квота провайдера → combo fallback |
|
||
| 429 rate limit | Цепочка: `cc/claude → glm/glm-4.7 → if/kimi-k2-thinking` |
|
||
| OAuth expired | Auto-refresh; иначе Providers → re-auth |
|
||
| `unsupported_country_region_territory` | Settings → Proxy |
|
||
| Docker SQLite lock | `--stop-timeout 40` |
|
||
| Node runtime | Node `>=22.0.0 <23` или `>=24.0.0 <27` |
|
||
|
||
🐛 **Баг?** `npm run system-info` → приложите `system-info.txt` к issue.
|
||
📖 [`TROUBLESHOOTING.md`](../../guides/TROUBLESHOOTING.md)
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>📸 Скриншоты дашборда</b></summary>
|
||
|
||
<br/>
|
||
|
||
| Page | Screenshot | Page | Screenshot |
|
||
|---|---|---|---|
|
||
| Providers |  | Combos |  |
|
||
| Analytics |  | Health |  |
|
||
| Translator |  | Settings |  |
|
||
| CLI Tools |  | Usage Logs |  |
|
||
|
||
</details>
|
||
|
||
<br/>
|
||
|
||
<div align="center">
|
||
|
||
# 📧 Поддержка и сообщество
|
||
|
||
> 💬 Ссылки Discord / Telegram / WhatsApp — [в шапке README](#-сообщество).
|
||
|
||
- 🌍 **Сайт:** [omniroute.online](https://omniroute.online)
|
||
- 🐙 **GitHub:** [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
||
- 🐛 **Issues:** [сообщить о баге](https://github.com/diegosouzapw/OmniRoute/issues) (с `npm run system-info`)
|
||
- 🤝 **Contributing:** [CONTRIBUTING.md](../../../CONTRIBUTING.md) или label `good first issue`
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
## 🛠️ Стек
|
||
|
||
</div>
|
||
|
||
- **Runtime:** Node.js 22.x или 24.x LTS — `>=22.0.0 <23 || >=24.0.0 <27`
|
||
- **Language:** TypeScript (src/ + open-sse/)
|
||
- **Framework:** Next.js 16 + React 19 + Tailwind CSS 4
|
||
- **DB:** better-sqlite3 + LowDB
|
||
- **Validation:** Zod
|
||
- **Protocols:** MCP (stdio/HTTP/SSE) + A2A (JSON-RPC 2.0 + SSE)
|
||
- **Auth:** OAuth 2.0 (PKCE) + JWT + API keys + MCP scopes
|
||
- **Platforms:** Electron desktop, Termux, PWA
|
||
- **CI/CD:** GitHub Actions → npm + Docker Hub
|
||
- **Resilience:** circuit breakers, backoff, anti-thundering-herd, TLS stealth, auto-combo
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
## 📖 Документация
|
||
|
||
</div>
|
||
|
||
### 📘 Старт
|
||
|
||
| Документ | О чём |
|
||
|---|---|
|
||
| [User Guide](../../guides/USER_GUIDE.md) | Провайдеры, комбо, CLI, deploy |
|
||
| [Setup Guide](../../guides/SETUP_GUIDE.md) | Установка, CLI tools, protocols, timeouts |
|
||
| [CLI Tools](../../reference/CLI-TOOLS.md) | Claude Code, Codex, Cursor, Cline… |
|
||
| [Remote Mode](../../guides/REMOTE-MODE.md) | CLI с ноутбука → OmniRoute на VPS |
|
||
| [Quick Start](../../../README.md#-quick-start) | EN root: install → connect → point |
|
||
|
||
### 🔧 Ops
|
||
|
||
| Документ | О чём |
|
||
|---|---|
|
||
| [Docker Guide](../../guides/DOCKER_GUIDE.md) | Run, Compose, Caddy, tunnels |
|
||
| [Podman](../../../contrib/podman/README.md) | Quadlet, SELinux |
|
||
| [VM Deployment](../../ops/VM_DEPLOYMENT_GUIDE.md) | VM + nginx + Cloudflare |
|
||
| [Termux](../../guides/TERMUX_GUIDE.md) | Android |
|
||
| [Environment](../../reference/ENVIRONMENT.md) | Полный `.env` reference |
|
||
|
||
### 🧠 Архитектура и фичи
|
||
|
||
| Документ | О чём |
|
||
|---|---|
|
||
| [Architecture](../../architecture/ARCHITECTURE.md) | Система и data flow |
|
||
| [Compression Guide](../../compression/COMPRESSION_GUIDE.md) | Pipeline сжатия |
|
||
| [Resilience Guide](../../architecture/RESILIENCE_GUIDE.md) | Breakers, cooldown, queue |
|
||
| [Auto-Combo](../../routing/AUTO-COMBO.md) | Scoring и self-heal |
|
||
| [Proxy Guide](../../ops/PROXY_GUIDE.md) | 3-level proxy |
|
||
| [Free Tiers](../../reference/FREE_TIERS.md) | Free catalog |
|
||
|
||
### 🤖 Протоколы и API
|
||
|
||
| Документ | О чём |
|
||
|---|---|
|
||
| [API Reference](../../reference/API_REFERENCE.md) | Все endpoints |
|
||
| [MCP Server](../../frameworks/MCP-SERVER.md) | Tools, transports |
|
||
| [A2A Server](../../frameworks/A2A-SERVER.md) | Skills, streaming |
|
||
|
||
### 📋 Проект
|
||
|
||
| Документ | О чём |
|
||
|---|---|
|
||
| [CONTRIBUTING](../../../CONTRIBUTING.md) | Dev setup |
|
||
| [CHANGELOG](../../../CHANGELOG.md) | История релизов |
|
||
| [SECURITY](../../../SECURITY.md) | Vulnerability reporting |
|
||
| [I18N](../../guides/I18N.md) | 43 языка, pipeline переводов |
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
## 👥 Как внести вклад
|
||
|
||
</div>
|
||
|
||
1. Fork репозитория
|
||
2. Ветка: `git checkout -b docs/ru-readme-full-translation`
|
||
3. Commit: `git commit -m "docs(i18n): full Russian README rewrite"`
|
||
4. Push и **Pull Request** в upstream
|
||
|
||
Полный гайд: [CONTRIBUTING.md](../../../CONTRIBUTING.md).
|
||
|
||
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
## 📊 Star History
|
||
|
||
<a href="https://www.star-history.com/?repos=diegosouzapw%2Fomniroute&type=date&legend=top-left">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=diegosouzapw/omniroute&type=date&theme=dark&legend=top-left" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=diegosouzapw/omniroute&type=date&legend=top-left" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=diegosouzapw/omniroute&type=date&legend=top-left" />
|
||
</picture>
|
||
</a>
|
||
|
||
<br/><br/>
|
||
|
||
**Сделано с ❤️ open-source сообществом · MIT License · [omniroute.online](https://omniroute.online)**
|
||
|
||
⭐ Если OmniRoute помог сэкономить — поставьте star репозиторию.
|
||
|
||
</div>
|