Files
OmniRoute/docs/i18n/ru
Arul Kumaran aa4e72097a fix(bun): make server child and outbound fetch Bun-safe (#9761)
* chore(changelog): v3.8.49 reconciliation — 200 missing bullets + 22 restored credits

Phase 0a of /generate-release. Measured commit<->CHANGELOG coverage over the real
cycle range (2c62333b0..HEAD, 933 non-merge commits) instead of the last tag: 180
merged PRs had no bullet at all (they landed without a changelog.d fragment) and a
further 19 were invisible because the merge-train landed them under a generic
'Train 1D: merge via --admin' subject that carries no PR reference.

- +200 bullets, all with PR back-reference and author attribution (1179 -> 1379)
- 🙌 Contributors 156 -> 178; credits @terrafirmbot-source for #7904, which shipped
  through the conflict-resolved #8685 without any attribution
- closed-PR credit audit over the 32 human PRs closed unmerged this cycle: 12 had
  already landed under the author's own follow-up PR and were verified credited
- rollup bullet for the direct release-branch maintenance (merge-train landings,
  ratchet re-pins, base-red sweeps) that carries no PR of its own
- [3.8.49] header dated 2026-07-28 (was TBD) in the root file and the 42 i18n mirrors

Coverage after: 0 commits uncovered.

* chore(quality): v3.8.49 pre-flight — clear 4 base-reds, absorb cycle drift

Pre-flight sweep (Phase 0). Test suites ran on the dedicated 32-core box so the
self-inflicted load of `node --test` could not fabricate timing flakes.

Base-reds fixed (all real, all from merged cycle PRs that did not update their
characterization tests):

- providers-constants-split / quota-plan-registry / provider-translate-path GOLDEN:
  #8861 added the Xiaomi MiMo Token Plan provider, so APIKEY_PROVIDERS is 195 (was
  194), knownProviders() is 12 (was 11) and the translate-path snapshot gains one
  purely additive entry. Counts aligned to the shipped catalog, never relaxed.
- agent-skills-content: skills/config-codex-cli/ was added by #8709 with a custom
  block, so the custom-block set is 13, not 12.
- chatcore-compression-integration: #8595/#8560 deliberately decoupled REACTIVE
  context compaction from the `enabled` master switch, so a body above 70% of the
  window is pruned even with compression off. The test was sized above that
  threshold, which made it assert against intended behavior; it now stays below it
  and keeps testing the invariant it was written for (resolveBasePlan short-circuits
  to "off" before reading comboOverrides).

Static gates:

- 3 shellcheck directives were malformed (`# shellcheck disable=SC2086 — text`; the
  em-dash makes shellcheck reject the whole directive as SC1125) in ci.yml and
  nightly-release-green.yml — the comment now sits on its own line.
- gitleaks: 2 new generic-api-key false positives allowlisted with justification —
  a localStorage key for the sponsor banner (#8723) and the PUBLIC Adobe Firefly
  web x-api-key, whose only literals are in JSDoc (the runtime reads it through
  resolvePublicCred, per Hard Rule #11). secretFindings back to 0.
- zizmor 176 -> 189 and bundleSize 6762 -> 7666 rebaselined with the measurement and
  the reason; both are ordinary cycle drift absorbed at release.

Environment-dependent failures classified out, not silenced: the two tproxy tests
assert the native addon is unavailable/unprivileged and therefore fail when the
suite runs as root on the build box (they pass as a normal user), and the
consoleInterceptor rate-limit test is a 4s-timing flake under load (6/6 isolated).

* test(codex): align the Responses HTTP e2e to the #8507 input-item contract

Fifth and last base-red of the v3.8.49 pre-flight. #8507 (#8083) deliberately sets
`status: "completed"` on Responses input items so strict upstream validators accept
them; codex-chat-reasoning-http-e2e still asserted the pre-#8507 shape, so it failed
against intended behavior. Expectation updated with the reason inline — the assertion
is not relaxed, it now pins the current contract.

The test was never reached in the first pre-flight sweep (the run was interrupted
during the integration phase, and this file sorts after the one that failed).

* docs(release): v3.8.49 feature-documentation sync

Phase 1 step 6b. Swept the cycle's 284 New Features bullets against the existing
docs before writing anything: nearly every large theme (Kimi, xAI OAuth, session
affinity, bun:sqlite, Firecrawl, Opus 5, omniglyph, GCF v3.2, homologation suite)
was already covered. Six real gaps were left undocumented by the PRs that shipped
them, each verified in source before being written up:

- CredentialMaskerGuardrail (#7683) is registered in guardrails/registry.ts but the
  GUARDRAILS table listed only 3 of the 4 guardrails
- the cacheAffinity scoring factor and the cache-optimized combo strategy (#8008):
  the docs still said 12 factors / 18 strategies, the code has 13 / 19
- the optional dashboard OIDC login gate (#6973) — /api/auth/oidc/{login,callback}
  had no mention in AUTHZ_GUIDE
- GET /api/usage/cache-health (#8827) and GET /api/usage/model-latency-stats (#6873)
  were missing from the API reference

README "What's New" gains one bullet (routing transparency) and merges two others
rather than growing a second changelog. PROVIDER_REFERENCE regenerated with the
generator (Firecrawl reclassified to Search, Xiaomi MiMo added by #8861).

check:docs-all green: 134 docs, 813 internal links, no fabricated API/env/CLI
references. Known pre-existing drift left alone and reported: stale nominal counts
in ARCHITECTURE/CODEBASE_DOCUMENTATION (soft), the 9-factor mentions scattered in
AUTO-COMBO, and the auto-combo diagram SVG (the renderer needs a browser this
environment does not have — the .mmd source is updated and the .md says so).

* chore(release): v3.8.49 — clear the release-PR CI in one pass

Every finding from the first full ci.yml run on the release PR, fixed or justified
together so a single re-push clears the board.

Lint / check:route-validation:t06 — three routes read request.json() with no visible
Zod validation. The two proxy-subscriptions routes validated with a hand-rolled
parsePayload(); they now use real Zod schemas (src/lib/proxySubscription/schema.ts)
reproducing the same acceptance rules, error strings and status codes. chat/completions
is the proxy's hottest path and parses the body ONCE on purpose (#4380 OOM crash-loop),
so it now safeParses the ALREADY-PARSED object against a deliberately permissive
structural schema — proven not to change behavior: absent model and model:null still
pass through, role "developer" still reaches 200, a ~300 KB payload is accepted, and
the body is still read exactly once. 25 new tests.

i18n UI value drift — 13 English strings rewritten during the cycle left stale
translations in up to 41 locales (317 pairs). Eleven are genuine rewrites and now carry
the pipeline's __MISSING__:<english> marker so the runtime serves corrected English until
translation catches up; vi forbids that marker by test, so it got a real translation.

PR Test Policy — 33 files flagged. Each was verified against the SOURCE, not the diff:
26 assert reductions are legitimate (mostly the #7866 Qwen OAuth provider removal and the
#8013 Antigravity refactor deleting the surface under test) and are allowlisted with the
PR and the evidence; 5 deleted files have verified replacements. One was NOT legitimate:
#7528's GraphQL->WebSocket migration dropped four muse-spark continuation scenarios whose
logic is still live — connection isolation, cache eviction after a failed turn (the commit
itself says "was missing"), parallel-chat cache collision, and the empty-content guard.
All four are restored against the new transport and each was verified to fail when the
corresponding production mechanism is broken.

Quality Ratchet / openapiCoverage — 36.6% against a baseline of 38: the cycle added routes
faster than the spec. Eight real endpoints are now documented from their route.ts
(usage cache-health and model-latency-stats, the two OIDC endpoints, and the five
proxy-subscriptions paths), bringing it to 38.1%.

Quality Gates (Extended) / zizmor — the runner measures 190 where the devbox measures 189
on the same commit, a delta already recorded in this baseline's history. Baselined to the
runner's number.

Also: the driverFactory better-sqlite3 guard moved from a mid-body t.skip() to a declared
{ skip: <condition> } test option. Same behavior for the optional native dependency, but
the skip now shows up in the report and is distinguishable from a test.skip() that silences
a test outright. Verified under both runners: 15/15 on Node, 14/14 on Bun.

SonarCloud Code Analysis stays red and is not a blocker: sonar.qualitygate.wait=false since
#7038 makes the job informative, the built-in gate cannot be swapped on the FREE plan, and
main has no branch protection.

* chore(quality): close the last two release-PR reds

test-masking — I had missed one of the 34 flagged files: my first pass grepped only
paths under tests/, so open-sse/services/__tests__/tierResolver.test.ts was invisible.
Same #7866 cause as the other eight qwen-driven reductions: the "classifies Qwen as
free" case and qwen's entry in the batch list went with the removed provider, and the
batch indices dropped from 10 to 9 (61→59). Allowlisted with that evidence.

dast-smoke — all four Schemathesis findings are on the two OIDC endpoints documented
in the previous commit, and none is a defect. /api/auth/oidc/* is a BROWSER redirect
flow: it answers 302 to the IdP and 302 back to /login?oidc_error=... on every failure,
which Schemathesis reads as "accepted a schema-violating request", and it answers 400
when OIDC is not configured, which it reads as "rejected a schema-compliant request".
Keeping the endpoints in the spec is right — operators need them, and they are what
brought openapi coverage back over the baseline — so the flow is excluded from the fuzz
instead, with the reason inline in the workflow. The rest of /api/auth and /api/keys
stays in scope.

* test(db): reword the driverFactory skip comment so the gate stops counting it

The anti-test-masking gate greps text, not code: my explanation of WHY the
better-sqlite3 guard moved out of the test body spelled the runner API out
literally, and those two mentions inside a comment were counted as two new skip
markers — the exact signal the previous commit set out to clear. Same explanation,
phrased without the call syntax.

Verified with the gate's own exported helpers against the merge-base: 0 modified-file
violations, 0 deletion violations. Test still 15/15.

* fix(dashboard): unbreak the vitest:ui gate — 2 real production bugs + the i18n test seam

The Vitest job is a BLOCKING gate that had not run to completion once in this whole
release: rounds 1-3 cancelled it via cancel-in-progress on each successive fix push,
so its red was indistinguishable from green. Round 4 finally ran it and the suite was
broken cycle-wide.

Root cause of the suite: #7935 instrumented ~180 shared/dashboard components with
next-intl's useTranslations/useLocale without updating the tests that mount them, so
every one of them threw "context from NextIntlClientProvider was not found". Fixed at
the shared seam (tests/_setup/vitestUiPolyfills.ts) rather than per file: a translator
built from the REAL en.json via next-intl's own createTranslator, memoized per
namespace — the naive version returns a fresh function each call and any component
whose useCallback/useEffect depends on t spins forever, which reads as a hang, not a
failure. A local mock still wins over the default. 22 files fixed by the seam alone,
15 realigned to the real strings; no assert removed or weakened.

Two production bugs the suite was hiding, both pre-existing and both with a failing
regression test already in the tree:

- RequestLoggerDetail crashed on a structured error object. #7920 gave the component
  formatErrorForDisplay for exactly this case, then #8213's combo-503 / cooldown
  checks went to the raw field and called .toLowerCase() on it. Both paths now use
  the helper.
- The logs detail modal reopened on first close again. #6830 fixed that by reading the
  deep-link id ONCE; the #8354 page rewrite regressed it by reading the live
  searchParams every render, so the prop flips mid-session and re-fires the child's
  deep-link effect exactly as the modal closes. Frozen at mount again.

Also tightens i18nUiCoverage 75.5 -> 99, which the ratchet demanded under
--require-tighten: the metric genuinely improved as the async translation workflow
paid off the debt that the v3.8.39/.44/.47 rebaselines had been recording. The
collector subtracts placeholders, so this release's 317 __MISSING__ markers are
already netted out of the 99.

Two UI files still fail locally under 20-worker concurrency (combos-page-smoke,
evals-tab-smoke) — cold-import flakes that pass isolated and with a larger timeout.

* test(e2e): repair the four shards the first green Build finally exercised

test-e2e has `needs: [build]`, and the release PR's Build died on every round
until now — so the 9-shard matrix produced ZERO signal for this whole cycle
while ~200 PRs merged. The first successful Build surfaced four independent
breakages, each traced to the commit that caused it:

- providers-management (#7361): the single-connection delete moved from
  window.confirm() to a ConfirmModal, so page.once("dialog") never fired and
  the DELETE was never sent (deleteCalls stayed 0). Click the modal instead.
- providers-bailian-coding-plan (#7882): the free-text Base URL field was
  deliberately replaced by a region step whose choice resolves the endpoint
  (global-sg -> coding-intl.dashscope, china-beijing -> coding.dashscope).
  Both cases rewritten against the region step; the invalid-URL case is
  unreachable from this modal now, so it covers the CN choice instead.
- group-b-activity-feed: the stack-trace guard ran against page.content(),
  which embeds the serialized i18n payload — zenmux's "endpoint at
  /api/v1/chat/completions" is prose, not a leak. Assert on rendered
  innerText and require the :line:col every real stack frame carries.
- navigation (#8292): APP_ROUTE_PATTERN accepted only /login and /dashboard,
  but the new prefetch spec is the sole caller passing /home, so waitForURL
  never resolved and the retry loop burned the full 180s timeout.

E2E is green on main (9/9 on 07-22 and 07-23), so all four are cycle
regressions, not pre-existing debt. Tests only — no production code touched.

* fix(dashboard): stop the /home quick-start cards from prefetching too

#8292 fixed half the RSC prefetch storm: it added prefetch={false} to the
sidebar's navigation and logo links, but /home — the landing route, and the
one its own e2e guard visits — renders five more internal Links in the
quick-start cards. First paint still fired 12 speculative RSC requests for
/dashboard/{analytics,logs,providers,api-manager} and /docs.

That PR shipped the test that would have caught this, but the test never got
to its assertion: gotoDashboardRoute("/home") hung because APP_ROUTE_PATTERN
accepted only /login and /dashboard, so the retry loop burned the whole 180s
timeout with no assertion error. With that helper repaired in the previous
commit, navigation.spec.ts finally ran and reported the 12 requests.

Validated both ways, per Hard Rule #18:
- tests/unit/sidebar-prefetch-policy-8281.test.ts extended to /home — red on
  the parent commit (5 internal Links, 5 without prefetch={false}), green here.
- the e2e assertion expect(speculativeRequests).toEqual([]) is the end-to-end
  guard; it is what surfaced the defect in the first place.

* refactor(dashboard): shrink HomePageClient back under the size gate

The prefetch fix in the parent commit tripped check:file-size — the frozen
budget for this file is 1377 lines and a naive fix measured 1391, because
`href` + `prefetch={false}` + `className` no longer fits Prettier's 100-column
budget, so three one-line <Link> elements each expanded to five.

Followed the gate's own first suggestion (extract/DRY) before touching the
baseline: the quick-start links repeated the same className literal four
times, and the docs link carried a 180-char one inline. Hoisting both into
INLINE_LINK / DOCS_LINK collapses five wrapped <Link> blocks back to a single
line each and removes the duplication — 1391 -> 1381.

The remaining +4 over the frozen budget is the five prefetch attributes
themselves, which cannot be expressed in fewer lines. Rebaselined to 1381
with the rationale recorded in file-size-baseline.json under
_rebaseline_2026_07_29_8281_home_quickstart_prefetch.

tests/unit/sidebar-prefetch-policy-8281.test.ts still passes (2/2): it matches
whole <Link ...> blocks, so it is indifferent to the wrapping and only checks
that every internal link opts out of prefetch.

* fix(bun): use native fetch for direct outbound requests

* test(bun): cover native direct fetch path

* fix(bun): preload polyfill for next build workers

* fix(bun): expose AsyncLocalStorage globally

* fix(bun): filter non-page Fumadocs metadata

* fix(bun): defer docs-only route dependencies

* chore(skills): sync generated OmniRoute agent skill docs

---------

Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
2026-08-11 09:16:23 -03:00
..
2026-07-29 15:18:55 -03:00
2026-05-29 12:44:29 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00

🚀 OmniRoute — Бесплатный AI-шлюз (Русский)

🌐 Языки: 🇺🇸 English · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇮🇳 mr · 🇲🇾 ms · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Панель OmniRoute

🚀 OmniRoute — Бесплатный AI-шлюз

Код без остановок. Один endpoint — 278 провайдеров, 90+ бесплатных.

Claude Code, Codex, Cursor, Cline, Copilot и Antigravity → бесплатные Claude / GPT / Gemini с автопереключением.


RTK + Caveman: экономия 1595% токенов. Лимиты больше не мешают.


~1.53B учитываемых бесплатных токенов / месяц — в первый месяц до ~2.15B с регистрационными бонусами. Живой учёт на /dashboard/free-tiers. (методика →)


278 AI Providers 90+ Free 1.53B Free Tokens/mo Token Savings 18 Strategies $0 to start


💬 Сообщество

Discord Telegram WhatsApp Global WhatsApp Brasil

Вопросы, советы по провайдерам, roadmap и поддержка → Discord · Telegram · WhatsApp 🌍 Global / 🇧🇷 Brasil


diegosouzapw%2FOmniRoute | Trendshift

npm License: MIT Stars

npm version NPM Monthly Docker Hub Docker Pulls Electron Downloads Website


🚀 Быстрый старт🎯 Комбо🌐 Провайдеры🔌 CLI и MCP🗜️ Сжатие🌍 Сайт

💥 Обещание🤔 Зачем🏆 Чем отличается🤖 Совместимые CLI🖥️ Где запускать🔒 Приватность🎬 В деле📚 Дальше📧 Поддержка


💰 ~1.53B бесплатных токенов / месяц

Собирать 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. Цифры пересматривают примерно раз в две недели — могут и упасть, и вырасти. CI (check:docs-counts) падает, если headline расходится с каталогом.


💥 Обещание

Один endpoint. 278 провайдеров. Код не останавливается — OmniRoute сам выбирает самый дешёвый рабочий вариант.

🚫 Не упирайтесь в лимиты
Авто-fallback по 278 провайдерам за миллисекунды. Квота кончилась — следующий подхватывает, без простоя.
💸 До 95% токенов
RTK + Caveman stacked: 1595% на сжимаемом (в tool-heavy сессиях в среднем ~89%).
🆓 Старт с $0
90+ free-tier, 40+ free forever (Kiro, Qoder, Pollinations, LongCat…). Карта не нужна.
🔌 Все инструменты
26+ coding agents — Claude Code, Codex, Cursor, Cline, Copilot, Antigravity — один конфиг.
🧩 Один endpoint
OpenAI ↔ Claude ↔ Gemini ↔ Responses API. Укажите /v1 — и готово.
🛡️ Production-grade
Circuit breakers, TLS stealth, MCP (104 tools), A2A, memory, guardrails, evals. 25000+ тестов.

🤔 Зачем OmniRoute?

Хватит прыгать между десятью кабинетами, мёртвыми ключами и неожиданными счетами.

Боль каждый день Как решает OmniRoute
📉 Подписка сгорает неиспользованной Выжимаем подписку — трекинг квоты, тратим до reset
🛑 Rate limit посреди кода 4-tier auto-fallback — Subscription → API → Cheap → Free
🔥 Tool-output (git diff, логи) жжёт токены RTK + Caveman — 1595% на сжимаемом
💸 Дорогие API ($2050/мес за провайдера) Cost-optimized routing — самый выгодный живой вариант
🧰 У каждого IDE свой сетап Один endpoint, один дашборд
🌍 AI заблокирован в регионе 3-level proxy + TLS fingerprint stealth
┌──────────────────────────────────────────────────────────┐
│     Ваш 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

🎯 Комбо — главная фича

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 🔗

Auto-Combo scoring: 12 факторов (health, quota, cost, latency, success rate, freshness…). Подробнее: docs/routing/AUTO-COMBO.md.

⚖️ 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 Жёсткий потолок на ключ

📖 Quota Sharing Engine

🧱 Три слоя устойчивости

Слой Область Механизм
🔌 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.50.6/1M)
  4. if/kimi-k2-thinking  ← free forever
Итог: 4 уровня = почти нулевой downtime

📖 Auto-Combo · Resilience Guide


🏆 Чем OmniRoute отличается

Фича OmniRoute Другие роутеры
🌐 Провайдеры 278 20100
🆓 Free 90+ (40+ forever) 15
🔀 Стратегии 18 13
🗜️ Сжатие токенов RTK + Caveman (1595%) Нет / 2040%
🧰 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 локали 04

📊 Сравнение с LiteLLM, OpenRouter, Portkey → docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md


Что нового

Highlights v3.8.20 → v3.8.49. Полная история: 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 setupsetup-* для 12+ tools; omniroute launch / launch-codex.
  • 🛰️ Remote modeconnect / contexts / tokens + OAuth helper для VPS.
  • 🧭 Smarter autoauto/<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 telemetryX-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…

🤖 Совместимые CLI и агенты

Один конфиг — http://localhost:20128/v1 — и любой AI IDE/CLI едет на free & low-cost моделях.

Claude Code Codex CLI Cline Kilo Code Roo Code Continue
OpenCode Copilot CLI Cursor CLI Factory Droid Grok Build OpenClaw
также · Aider · Goose · Hermes · Kiro · Antigravity · Windsurf · AMP · любой OpenAI-compatible tool

📖 Setup 33 tools → docs/reference/CLI-TOOLS.md · OpenCode plugin → @omniroute/opencode-provider


🌐 278 AI-провайдеров — 90+ бесплатных

Самый полный каталог среди 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


🖥️ Где запускается OmniRoute — везде

Платформа Установка Плюсы
📦 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 Хакинг и контрибьют

📖 Docker · Desktop · Termux · PWA · OpenCode


🔒 Приватно и local-first

Ваши ключи, ваша машина, ваши данные. 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 навсегда.

📖 Authorization · Guardrails · Compliance


🔌 Полный CLI + A2A и MCP

Это не «просто сервер» — CLI-кокит с 80+ командами и открытыми agent-протоколами, чтобы AI управлял OmniRoute сам.

⌨️ Настоящий CLI

omniroute               # gateway + dashboard (порт 20128)
omniroute chat          # TUI-чат (/model /combo /skill /memory)
omniroute setup         # мастер первого запуска
omniroute doctor        # диагностика провайдеров, портов, native deps

🛰️ Remote mode — CLI здесь, OmniRoute на VPS

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. 📖 Remote Mode

🤝 Подключите агента — он управляет шлюзом

Протокол 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
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream

📖 MCP · A2A · Agent Protocols


🗜️ Экономьте 1595% токенов — автоматически

Зачем тратить много токенов, если хватает меньшего? Каждый запрос идёт через compression pipeline прозрачно — клиент не меняется. Стек из 11 composable engines (идеи RTK, Caveman, LLMLingua-2, 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 (~6575% на 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 6090% Shell / test / build / git output
🔗 Stacked (RTK → Caveman) 7895% Промпты + 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:

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 · RTK_COMPRESSION.md · COMPRESSION_ENGINES.md


Быстрый старт

1) Установка и запуск

npm install -g omniroute
omniroute

💡 Видите npm warn ERESOLVE / peer-dep? Это безвредно.

Dashboard: http://localhost:20128 · API: http://localhost:20128/v1.

2) Подключите FREE-провайдера (без signup)

Dashboard → ProvidersKiro AI (free Claude, ~50 credits/mo) или OpenCode Free (без auth) → готово.

3) Направьте coding tool

Base URL: http://localhost:20128/v1
API Key:  [Dashboard → Endpoints]
Model:    auto            (zero-config smart routing — или любой provider/model)

4) Проверка

curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"

Должны появиться подключённые модели. 🎉 Дальше пишите код — OmniRoute сам роутит и делает fallback.

Если клиент не умеет custom headers — tokenized aliases:

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 ....


📦 Другие способы — Docker, source, pnpm, Arch

🐳 Docker

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

🛠️ Из исходников

cp .env.example .env && npm install
PORT=20128 npm run dev

📦 pnpm

pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute

🐧 Arch Linux (AUR)

yay -S omniroute-bin && systemctl --user enable --now omniroute.service

🔧 Nix (Flake)

nix develop
npm run dev
# или: devbox run npm run dev

📖 Docker Guide — 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:

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).


🎬 OmniRoute в деле

Guia em Português
🇧🇷 Português
Полный гайд
English Guide
🇺🇸 English
Complete walkthrough
Руководство на русском
🇷🇺 Русский
Полное руководство

🎬 Сняли видео про OmniRoute? Откройте issue или discussion — добавим в этот раздел.


📚 Узнать больше

💰 Цены и zero-cost stack
Tier Примеры Стоимость
💳 Subscription Claude Code Pro / Codex / Copilot $10200/мес
🔑 API Key (free tiers) NVIDIA NIM, Cerebras, Groq Free
💰 Cheap GLM ~$0.5/1M · MiniMax ~$0.20.3/1M Копейки
🆓 Free forever Kiro, Qoder, Qwen, Pollinations, LongCat $0

Playbook A — выжать подписку + cheap backup:

Combo: "maximize-claude"
  1. cc/claude-opus-4-7
  2. glm/glm-4.7
  3. if/kimi-k2-thinking

Playbook B — zero-cost coding:

Combo: "free-forever"
  1. if/kimi-k2-thinking
  2. qw/qwen3-coder-plus

💡 «Cost» в дашборде — tracker экономии, не счёт OmniRoute. OmniRoute вам не выставляет счета.

📖 Free catalog → docs/reference/FREE_TIERS.md

🌍 Геоблоки — 3-level proxy + stealth

🇷🇺 🇨🇳 🇮🇷 и другие 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

Возможности (кратко)

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.

📖 Env, FAQ
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 · API · Environment

🐛 Troubleshooting
Проблема Быстрый фикс
"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

📸 Скриншоты дашборда
Page Screenshot Page Screenshot
Providers Providers Combos Combos
Analytics Analytics Health Health
Translator Translator Settings Settings
CLI Tools CLI Tools Usage Logs Usage

📧 Поддержка и сообщество

💬 Ссылки Discord / Telegram / WhatsApp — в шапке README.


🛠️ Стек

  • 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

📖 Документация

📘 Старт

Документ О чём
User Guide Провайдеры, комбо, CLI, deploy
Setup Guide Установка, CLI tools, protocols, timeouts
CLI Tools Claude Code, Codex, Cursor, Cline…
Remote Mode CLI с ноутбука → OmniRoute на VPS
Quick Start EN root: install → connect → point

🔧 Ops

Документ О чём
Docker Guide Run, Compose, Caddy, tunnels
Podman Quadlet, SELinux
VM Deployment VM + nginx + Cloudflare
Termux Android
Environment Полный .env reference

🧠 Архитектура и фичи

Документ О чём
Architecture Система и data flow
Compression Guide Pipeline сжатия
Resilience Guide Breakers, cooldown, queue
Auto-Combo Scoring и self-heal
Proxy Guide 3-level proxy
Free Tiers Free catalog

🤖 Протоколы и API

Документ О чём
API Reference Все endpoints
MCP Server Tools, transports
A2A Server Skills, streaming

📋 Проект

Документ О чём
CONTRIBUTING Dev setup
CHANGELOG История релизов
SECURITY Vulnerability reporting
I18N 43 языка, pipeline переводов

👥 Как внести вклад

  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.

Contributors


📊 Star History

Star History Chart



Сделано с ❤️ open-source сообществом · MIT License · omniroute.online

Если OmniRoute помог сэкономить — поставьте star репозиторию.