🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Pro uživatele: Hledáte rychlá řešení? Podívejte se níže na Stručný přehled.
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Běžné problémy a jejich řešení pro OmniRoute.
Začínáte s OmniRoute? Začněte zde — tato řešení vyřeší 90 % problémů:
| Co se zobrazuje | Co to znamená | Co dělat |
|---|---|---|
| „Nelze se připojit“ | OmniRoute není spuštěný | Spusťte omniroute nebo docker restart omniroute |
| „Neplatný klíč API“ | Váš klíč je nesprávný nebo vypršel | Zkopírujte klíč znovu z webu poskytovatele |
| „Překročen limit požadavků“ | Odesíláte příliš mnoho požadavků | Počkejte 1 minutu nebo použijte model: "auto" pro automatický přechod na záložní možnost |
| „Překročena kvóta“ | Vyčerpali jste bezplatnou nebo placenou kvótu | Připojte více poskytovatelů nebo použijte bezplatné poskytovatele (Kiro, Pollinations) |
| „Pomalé odpovědi“ | Poskytovatel je vytížený nebo příliš vzdálený | Použijte model: "auto/fast" nebo připojte rychlejšího poskytovatele (Groq, Cerebras) |
| „Použit nesprávný poskytovatel“ | auto vybralo jiného poskytovatele |
To je normální! auto vybírá nejlepšího. Konkrétního poskytovatele vynuťte pomocí model: "openai/gpt-4o" |
| „502 Bad Gateway“ | Poskytovatel je mimo provoz | Počkejte a zkuste to znovu nebo použijte model: "auto" k přepnutí poskytovatele |
| „401 Unauthorized“ | Vaše přihlašovací údaje jsou nesprávné | Zkontrolujte svůj klíč API nebo se znovu ověřte pomocí OAuth |
| „omniroute nebyl rozpoznán“ | V proměnné Windows PATH chybějí globální moduly node | Přidejte globální prefix npm do proměnné Windows PATH. Zjistíte ho pomocí npm config get prefix. |
| „429 Too Many Requests“ | Byl překročen limit požadavků | Počkejte 1 minutu nebo připojte více poskytovatelů |
Stále si nevíte rady? Podívejte se níže na podrobné řešení problémů nebo se zeptejte na Discordu.
Příznak: Při použití model: "auto" s bezplatnými poskytovateli nebo poskytovateli bez ověřování (opencode, auggie atd.) se vám místo odpovědí občas zobrazí HTTP 429, 400 nebo 401. Když stejný pokyn o chvíli později odešlete znovu, požadavky uspějí, ale automatizace (úlohy cron, agenti, skripty) se přeruší hned při prvním selhání.
Základní příčina: Sčítají se tři nezávislé režimy selhání:
- Limit požadavků poskytovatele (
429): Bezplatné úrovně mohou vynucovat kvótu pro určité časové období. Náhlá série souběžných volání ji vyčerpá, takže další požadavek je odmítnut, dokud se časové období neobnoví. - Nefunkční model v režimu passthrough (
400/401): Fondyauto/*mohou obsahovat modely passthrough odopencode, které jsou registrovány v katalogu, ale nemají platné přihlašovací údaje (např.oc/north-mini-code-free→401). Automatický směrovač některý z nich vyzkouší, selže a chyba se rozšíří dříve, než se aktivuje záložní možnost. - Zesílení souběžností (
429při zátěži): Když kautosoučasně přistupuje více relací agentů nebo úloh cron, souhrnná frekvence požadavků překročí míru, kterou bezplatní poskytovatelé tolerují, takže jsou legitimní volání označena za zneužití.
Ověřená oprava (nahlášeno komunitou, 2026-08-10): Upravte tři proměnné prostředí tak, aby rotace, souběžnost a záložní možnosti zvládaly nestabilitu bezplatných úrovní namísto toho, aby kvůli ní selhávaly:
export OMNIROUTE_ROTATE_ON_400=true # při 400/401 přejít na jiný model nebo poskytovatele (přeskočí nefunkční modely passthrough)
export OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT=4 # explicitní horní limit přijímání náročných požadavků (ve výchozím nastavení nenastaveno: bez omezení počtu požadavků, viz poznámka níže)
export OMNIROUTE_CHAT_ADMISSION_QUEUE_MS=5000 # delší omezené čekání na kapacitu pro náročné požadavky namísto okamžité opakovatelné chyby 503Nastavte je v prostředí procesu OmniRoute (démonu, např. prostřednictvím plist LaunchAgent nebo systemctl edit) a poté OmniRoute restartujte. Příznak rotace má zdaleka největší dopad: mění definitivní selhání na transparentní opakovaný pokus u funkčního poskytovatele ve fondu.
Poznámka: OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT omezuje počet náročných požadavků — požadavků s dlouhým kontextem — spuštěných současně; tento limit je vstupní branou, nikoli omezovačem počtu požadavků poskytovatele. Aktualizace #503-fanout: tato proměnná již není ve výchozím nastavení nastavena (nyní se použije pouze při explicitní konfiguraci, jako výše) — přijímání náročných požadavků je namísto toho řízeno automaticky odvozeným bajtovým rozpočtem (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES), který se přizpůsobuje skutečnému paměťovému limitu hostitele, takže by se v nové instalaci mělo bez jakéhokoli nastavování této proměnné objevovat mnohem méně odmítnutí 503 chat_admission_busy; její explicitní nastavení zde stále funguje přesně podle dokumentace. Explicitně zadané bajtové rozpočty jsou omezeny na rozsah 8 MiB–2 GiB. Chyba 413 body_exceeds_budget není dočasná: zvyšte tento bajtový rozpočet, snižte OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES nebo zvyšte paměťový limit procesu. Odmítnutí inflight_bytes_budget je způsobeno dočasným soupeřením o prostředky a požadavek lze nadále opakovat. Omezování počtu požadavků pro jednotlivé poskytovatele (open-sse/services/rateLimitManager.ts) je řízeno samostatně pomocí RATE_LIMIT_MAX_WAIT_MS, RATE_LIMIT_MAX_QUEUE_DEPTH a RATE_LIMIT_AUTO_ENABLE — viz .env.example.
Jak ověřit, že oprava funguje: spusťte svého agenta/cron dvakrát rychle po sobě a ověřte, že obě spuštění proběhnou úspěšně. Před opravou druhé spuštění obvykle vyvolá chybu 429/401. Po opravě se neúspěšné požadavky (pokud k nim dojde) transparentně zopakují a volání se dokončí. Můžete také spustit curl /monitoring/health a sledovat pole rateLimitedUntil u připojení poskytovatelů a circuitBreakers.providerBreakers[].state u dotčených poskytovatelů — stav může být CLOSED, DEGRADED, OPEN nebo HALF_OPEN (viz src/shared/utils/circuitBreaker.ts) a poskytovatel, u kterého chyby přetrvávají, přejde přes stavy CLOSED → DEGRADED → OPEN, než okno pro reset umožní průchod testovacího požadavku (HALF_OPEN).
Pokud se stále zobrazuje chyba 429: aktivní účet daného poskytovatele skutečně vyčerpal svou kvótu (nejde pouze o omezení frekvence požadavků). Přidejte druhý účet stejného poskytovatele v ovládacím panelu OmniRoute → Providers → Accounts nebo zapojte jiného bezplatného poskytovatele (např. routeway, auggie). Rotace pomáhá pouze s přechodnými chybami omezení frekvence požadavků/400/401; úplné vyčerpání kvóty vyžaduje druhé přihlašovací údaje nebo jiného poskytovatele.
Pokud se u modelů pro vizuální vstupy (auto/vision, bazaarlink/*) zobrazuje chyba 403: připojený účet nemá placený tarif zahrnující zpracování vizuálních vstupů nebo API klíč nemá dostatečná oprávnění. V ovládacím panelu poskytovatele ověřte, že rozsah oprávnění klíče zahrnuje zpracování vizuálních/multimodálních vstupů, případně připojte účet s placeným tarifem a ponechte jej jako cíl pro vizuální vstupy.
Při spuštění npm install -g omniroute se může zobrazit záplava varování, například npm warn ERESOLVE, upozornění na peer závislosti a zprávy deprecated. Tato varování jsou očekávaná a neškodná. Instalace proběhla úspěšně, pokud ve výstupu vidíte added <N> packages.
Chcete-li potlačit varování při řešení peer závislostí, použijte podporovaný způsob instalace OmniRoute:
npm install -g omniroute --legacy-peer-deps--legacy-peer-deps potlačuje pouze upozornění ERESOLVE a upozornění na peer závislosti. Upozornění na zastaralé balíčky zůstávají viditelná, protože pocházejí z tranzitivních balíčků třetích stran; neznamenají, že instalace selhala.
Varování pocházejí ze zastaralých rozsahů peer závislostí v balíčcích třetích stran, které OmniRoute nemůže ovlivnit:
marked-terminalvyžadujemarked >=1 <16, nalezenomarked@18— v praxi funguje bez problémů; rozsah peer závislosti v upstream balíčku je pouze zastaralý.deprecated prebuild-install@7.1.3— tranzitivní pomocný nástroj pro stahování nativních binárních souborů. Nepoužívá se k instalaci připnutého transportního rozhraníwreq-jsa neznamená, že nastavení transportu poskytovatele webových cookies selhalo.
Není vyžadována žádná akce — bez forknutí upstream balíčků nelze tato varování zcela potlačit.
Pokud požadavek Gemini Web vrátí stav 503 se zprávou, že Playwright Chromium
není nainstalován, balíček npm je přítomen, ale chybí binární soubor prohlížeče.
Playwright záměrně odděluje stahování prohlížečů od instalace balíčku npm,
takže tato odpověď je očekávaná, dokud prohlížeč nenainstalujete.
U globální instalace npm nainstalujte Chromium z adresáře balíčku OmniRoute, aby mezipaměť prohlížeče patřila ke stejné instalaci Playwright:
cd "$(npm root -g)/omniroute"
npx playwright install chromiumPo instalaci restartujte OmniRoute a poté požadavek Gemini Web zopakujte. Pokud
OmniRoute spouštíte z obrazu Docker, použijte obraz -web (nebo cíl sestavení
runner-web), který obsahuje Chromium a jeho závislosti; základní obraz je
neobsahuje.
| Problém | Řešení |
|---|---|
| První přihlášení nefunguje | Nastavte INITIAL_PASSWORD v .env (žádná pevně zakódovaná výchozí hodnota) |
| Řídicí panel se otevírá na nesprávném portu | Nastavte PORT=20128 a NEXT_PUBLIC_BASE_URL=http://localhost:20128 |
| Na disk se nezapisují žádné protokoly | Nastavte APP_LOG_TO_FILE=true a ověřte, že je povoleno zaznamenávání protokolů volání |
| EACCES: oprávnění zamítnuto | Nastavením DATA_DIR=/path/to/writable/dir přepište ~/.omniroute |
| Strategie směrování se neukládá | Aktualizujte na nejnovější vydání v3.x (oprava schématu Zod pro trvalé ukládání nastavení byla vydána v dřívějších verzích) |
| Pád při přihlášení / prázdná stránka | Zkontrolujte verzi Node.js — viz níže Kompatibilita s Node.js |
dlopen / slice is not valid mach-o file (macOS) |
Spusťte cd $(npm root -g)/omniroute/app && npm rebuild better-sqlite3 && omniroute — viz níže opětovné sestavení nativního modulu v macOS |
| Proxy hlásí „fetch failed“ | Ujistěte se, že je konfigurace proxy nastavena na správné úrovni — viz níže Problémy s proxy |
Docker curl: (56) Recv failure: Connection reset by peer |
Vazba portu Docker může směřovat na IPv6. Použijte -p 127.0.0.1:20128:20128 k vynucení IPv4 nebo testujte pomocí curl -4. Viz níže Docker IPv6 |
Antivirus umístí README.md do karantény |
Falešně pozitivní detekce — viz níže Falešně pozitivní detekce antiviru |
| Kaspersky označí desktopovou aplikaci za trojského koně | Falešně pozitivní detekce chování nepodepsaného instalátoru — viz níže Falešně pozitivní detekce antiviru |
Jde o falešně pozitivní nález. Nic není infikováno a není nutné podnikat žádné kroky.
Avast a AVG používají heuristiku, která označuje prosté textové soubory a soubory Markdown obsahující mnoho
odkazů připomínajících HTTP požadavky. Soubor README.md projektu OmniRoute je součástí npm balíčku (je
uveden v package.json → files), takže při globální instalaci skončí v node_modules/omniroute/README.md
— a obsahuje přibližně 15 příkladů http://localhost:20128/... (koncové body MCP
HTTP/SSE, adresu URL A2A .well-known a ukázky příkazu curl). Tato hustota odkazů
stačí ke spuštění heuristiky.
Pokud se problém objevil teprve nedávno: podstata souboru se nezměnila. V README se rozšířila
tabulka koncových bodů (byly přidány MCP HTTP + SSE + A2A) a přibyly další příklady curl, čímž
byla překročena prahová hodnota.
Soubor je neaktivní dokumentace bez jakéhokoli spustitelného obsahu. Můžete jej bezpečně obnovit z karantény.
Co dělat:
- Zastavte upozornění — v antiviru vylučte instalační adresář
(Avast: Nastavení → Výjimky) přidáním cesty ke globálnímu adresáři
node_modulesa/nebo datovému adresáři OmniRoute (~/.omniroute/). - Nahlaste falešně pozitivní nález — https://www.avast.com/false-positive-file-form.php,
přiložte soubor
README.mdz karantény. Toto řešení pomůže všem, protože se jedná o přehnanou reakci heuristiky výrobce na textový soubor.
Proč to „neopravujeme“ na naší straně: všechny příklady používají http://localhost a
localhost nelze používat přes https bez komplikací s certifikátem podepsaným svým držitelem. Znehodnocení dokumentace
kvůli obejití heuristiky jednoho výrobce by poškodilo všechny čtenáře jen proto, aby se vyhovělo chybě skeneru.
Jde o falešně pozitivní nález behaviorální heuristiky. Nic není infikováno. Předpona
PDM: společnosti Kaspersky znamená, že verdikt pochází z modulu Proactive Defense Module (System Watcher),
který posuzuje, co instalační program dělá, místo aby jej porovnával se známým malwarem. Když
se detekce spustí, Kaspersky „vrátí zpět“ celou instalaci — odstraní soubory, které již
zapsal — takže aplikace zůstane poškozená nebo bude zcela chybět.
Soubory, které označuje, jsou standardními součástmi deklarovaných open-source závislostí přibalených k desktopové aplikaci, například:
resources/app/.build/next/node_modules/playwright-<hash>/lib/…/agentParser.jsaworkerProcessEntry.js— Playwright, knihovna pro automatizaci prohlížeče používaná pro přihlašování k poskytovatelům v aplikaci a chat využívající prohlížeč.resources/app/.build/next/node_modules/@wreq-js/binding-win32-<arch>-msvc-<hash>/wreq-js.win32-<arch>-msvc.node— připnutá nativní vazbawreq-jspoužívaná pro HTTP s otiskem prohlížeče u poskytovatelů využívajících webové cookies (<arch>jex64neboarm64).
Proč se detekce spouští: instalační program pro Windows zatím není podepsán kódem, takže nepodepsaný instalační program NSIS
nemá žádnou reputaci a behaviorální heuristiky pracují s maximální agresivitou. V kombinaci
s přibalenou nativní knihovnou DLL a stovkami souborů .js zapisovaných do
%LOCALAPPDATA%\Programs\OmniRoute (včetně adresářů balíčků s příponami hashů ze
samostatného sestavení Next.js) to stačí ke spuštění heuristiky. Podepisování kódu je plánováno;
dokud nebude zavedeno, může se situace u nových vydání opakovat.
Co dělat:
- Nejprve ověřte stažený soubor (tím vyloučíte, že byl pozměněn). Každé vydání zveřejňuje
soubor
latest.yml, jehož polesha512(base64) pokrývá instalační souborOmniRoute.Setup.<version>.exe. V PowerShellu spusťte ze složky obsahující instalační soubor:Výstup se musí shodovat s$b = [System.Security.Cryptography.SHA512]::Create().ComputeHash( [System.IO.File]::ReadAllBytes("$PWD\OmniRoute.Setup.<version>.exe")) [Convert]::ToBase64String($b)
latest.yml→sha512. Pokud se neshoduje, soubor odstraňte a stáhněte jej znovu výhradně ze stránky vydání na GitHubu. - Obnovte + vylučte — obnovte z karantény položky odstraněné při vrácení instalace zpět a přidejte výjimku
pro
%LOCALAPPDATA%\Programs\OmniRoute(Kaspersky → Nastavení → Hrozby a výjimky), poté proveďte instalaci znovu. - Nahlaste falešně pozitivní nález — https://opentip.kaspersky.com/. Hlášení falešně pozitivních nálezů odeslaná uživateli skutečně urychlují přidání na seznam povolených položek.
Příčina: Používáte verzi Node.js, která nesplňuje minimální požadavky zabezpečeného běhového prostředí schváleného pro OmniRoute. Nejčastěji jde o starší opravnou verzi Node 22 nebo 24, která je nižší než opravená bezpečná verze vyžadovaná OmniRoute.
Příznaky:
- Přihlašovací stránka zobrazuje prázdnou obrazovku nebo chybu serveru
- Konzole zobrazuje
Error: Module did not self-registernebo podobné chyby nativních vazeb - Pokud běhové prostředí nevyhovuje podporovaným zásadám zabezpečení, zobrazí přihlašovací stránka oranžový varovný pruh s vaší verzí Node
Řešení:
- Nainstalujte podporovanou verzi Node.js LTS (doporučeno: Node.js 24.x):
nvm install 24 nvm use 24
- Ověřte svou verzi:
node --versionby měl ve větvi 24.x LTS zobrazitv24.0.0nebo novější - Znovu nainstalujte OmniRoute:
npm install -g omniroute - Restartujte aplikaci:
omniroute
Podporované bezpečné verze:
>=22.22.2 <23nebo>=24.0.0 <27. Node.js 24.x LTS (Krypton) a Node.js 26 jsou plně podporovány.
Příčina: npm v11 (dodávaný s Node.js 24+) ve výchozím nastavení blokuje instalační skripty volitelných
závislostí. Protože je better-sqlite3 uveden v optionalDependencies
a vyžaduje nativní kompilaci (node-gyp rebuild), npm jej bez upozornění přeskočí.
Příznaky:
- Server při spuštění spadne s chybou
Cannot find module 'better-sqlite3' ls node_modules/better-sqlite3zobrazí „No such file or directory“npm ls better-sqlite3zobrazí(empty)
Řešení:
- Schvalte instalační skripty a proveďte novou instalaci:
npm approve-scripts better-sqlite3 npm install
- Případně nainstalujte předkompilovaný balíček ručně:
npm pack better-sqlite3@13.0.1 tar -xzf better-sqlite3-*.tgz -C node_modules mv node_modules/package node_modules/better-sqlite3 rm better-sqlite3-*.tgz
- Ověřte funkčnost:
node -e "require('better-sqlite3')(':memory:').close(); console.log('OK')"
Příčina: Po globálním spuštění npm install -g omniroute mohl být nativní binární soubor better-sqlite3 uvnitř balíčku zkompilován pro jinou architekturu nebo ABI Node.js, než jaké se používají lokálně. K tomu běžně dochází v systému macOS (na Apple Silicon i Intel), pokud předkompilovaný binární soubor neodpovídá vašemu prostředí.
Příznaky:
- Server ihned při spuštění selže s chybou
dlopen - Chyba obsahuje
slice is not valid mach-o file - Úplný příklad:
dlopen(/Users/<user>/.nvm/versions/node/v24.14.1/lib/node_modules/omniroute/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node, 0x0001): tried: '...' (slice is not valid mach-o file)
Řešení — znovu sestavte modul pro své lokální prostředí (přechod na starší verzi Node.js není nutný):
cd $(npm root -g)/omniroute/app
npm rebuild better-sqlite3
omniroutePoznámka: Tím se nativní vazba znovu zkompiluje pro vaši lokální verzi Node.js a architekturu procesoru, čímž se vyřeší nekompatibilita binárního souboru. Oficiálně podporovaný rozsah běhového prostředí je
>=22.22.2 <23nebo>=24.0.0 <27(SUPPORTED_NODE_RANGEvsrc/shared/utils/nodeRuntimeSupport.ts, v souladu s polemenginesvpackage.json). Node.js 24.x LTS (Krypton) a Node.js 26 jsou plně podporovány sbetter-sqlite3v12.x.
Příčina: Koncový bod pro ověření klíče API (POST /api/providers/validate) dříve obcházel konfiguraci proxy, což způsobovalo selhání v prostředích, která vyžadují směrování přes proxy.
Oprava (v3.5.5+): Tento problém je nyní opraven. Ověření poskytovatele probíhá prostřednictvím runWithProxyContext a automaticky respektuje nastavení proxy na úrovni poskytovatele i globální nastavení proxy.
Příčina: Obnovování tokenů OAuth na pozadí nevyhodnocovalo konfiguraci proxy pro jednotlivá připojení.
Oprava (v3.5.5+): Plánovač kontroly platnosti tokenů nyní před pokusem o obnovení vyhodnotí konfiguraci proxy pro každé připojení. Aktualizujte na v3.5.5+.
Příčina: V Node.js 22 není dispatcher z undici@8 kompatibilní s vestavěnou implementací fetch() v Node.js.
Oprava (v3.5.5+): Když je aktivní dispatcher proxy, OmniRoute nyní používá vlastní funkci fetch() z undici, čímž zajišťuje konzistentní chování. Aktualizujte na v3.5.5+.
Příčina: Proxy MITM a její certifikát CA se instalují do prostředí, ve kterém běží OmniRoute. Ve WSL je tímto prostředím hostovaný systém Linux, zatímco desktopové aplikace AI (Kiro, Trae, Copilot, Zed, …) běží v hostitelském systému Windows. Hostitelské aplikace nedůvěřují úložišti certifikátů hostovaného systému a nesměrují provoz přes jeho systémovou proxy, takže u nich k zachytávání desktopového provozu nedochází.
Doporučení: Spusťte OmniRoute nativně ve stejném operačním systému jako desktopové aplikace, jejichž provoz chcete zachytávat (Windows pro aplikace ve Windows; obdobně pro macOS/Linux). Ponechání OmniRoute uvnitř WSL při cílení na hostitelské aplikace vyžaduje ručně nastavit důvěryhodnost vygenerovaného certifikátu CA v hostitelském systému Windows a nasměrovat síťová nastavení či nastavení proxy každé hostitelské aplikace na koncový bod proxy ve WSL — jde o nepodporované a nespolehlivé řešení.
Příčina: Kvóta poskytovatele byla vyčerpána.
Oprava:
- Zkontrolujte ukazatel kvóty na řídicím panelu
- Použijte kombinaci se záložními úrovněmi
- Přejděte na levnější nebo bezplatnou úroveň
Příčina: Kvóta předplatného byla vyčerpána.
Oprava:
- Přidejte záložní varianty:
cc/claude-opus-4-6 → glm/glm-4.7 → if/qwen3.8-max-preview - Použijte GLM/MiniMax jako levnou zálohu
OmniRoute tokeny automaticky obnovuje. Pokud problémy přetrvávají:
- Řídicí panel → Poskytovatel → Znovu připojit
- Odstraňte připojení poskytovatele a znovu jej přidejte
Příčina: Backend služby Kiro vynucuje pouze jednu aktivní relaci pro každou registraci klienta OIDC. Když dva účty sdílejí stejného registrovaného klienta (připojení importovaná před v3.8.0), obnovení tokenu jednoho účtu zneplatní obnovovací token druhého účtu.
Oprava (v3.8.0+): Znovu importujte dotčená připojení. Od verze v3.8.0 si každé nové připojení Kiro vytvořené prostřednictvím možnosti Importovat token, Sociální přihlášení přes Google/GitHub nebo Automatický import automaticky zaregistruje vlastního vyhrazeného klienta OIDC. Připojení je proto zcela izolované a obnovení jednoho účtu nemá žádný vliv na ostatní účty.
Připojení importovaná před v3.8.0 nemají registraci klienta pro jednotlivá připojení. Tato připojení nadále používají sdílený koncový bod pro obnovení prostřednictvím sociálního přihlášení. Chcete-li dosáhnout izolace, odstraňte staré připojení v části Řídicí panel → Poskytovatelé a znovu je přidejte pomocí kteréhokoli ze tří způsobů importu.
Úplné podrobnosti a podrobné pokyny k přidání dvou účtů Kiro vedle sebe
najdete v souboru docs/guides/KIRO_SETUP.md.
- Ověřte, že
BASE_URLodkazuje na vaši spuštěnou instanci (např.http://localhost:20128) - Ověřte, že
CLOUD_URLodkazuje na váš cloudový koncový bod (např.https://omniroute.dev) - Udržujte hodnoty
NEXT_PUBLIC_*v souladu s hodnotami na straně serveru
Příznak: Unexpected token 'd'... na cloudovém koncovém bodu u volání bez streamování.
Příčina: Nadřazená služba vrací datovou část SSE, zatímco klient očekává JSON.
Alternativní řešení: Pro přímá cloudová volání použijte stream=true. Lokální běhové prostředí obsahuje záložní převod SSE→JSON.
- Vytvořte nový klíč na lokálním řídicím panelu (
/api/keys) - Spusťte synchronizaci s cloudem: Povolit cloud → Synchronizovat nyní
- Staré či nesynchronizované klíče mohou v cloudu stále vracet
401
Příznaky: curl http://localhost:20128/v1/models vrací curl: (56) Recv failure: Connection reset by peer. Řídicí panel a koncové body bez ověřování fungují, ale ověřované koncové body selhávají — vypadá to jako problém s ověřováním, ale není.
Příčina: docker run -p 20128:20128 zveřejní port na 0.0.0.0 (IPv4) i :: (IPv6), ale proces uvnitř kontejneru naslouchá pouze na IPv4. Na hostitelích, kde se localhost nejprve překládá na ::1, se připojení dostane na zveřejněný port IPv6, za kterým žádný proces nenaslouchá → připojení se resetuje.
Oprava:
- Rychlá diagnostika: Spusťte
curl -4 http://localhost:20128/v1/models. Pokud s-4funguje, ale bez něj selže, máte nesoulad ve vazbě IPv6. - Trvalá oprava: Navažte port explicitně na IPv4 pomocí
-p 127.0.0.1:20128:20128v příkazudocker run:Tím vynutíte vazbu na IPv4 a zároveň zabráníte zpřístupnění proxy na všech síťových rozhraních hostitele.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
- Zkontrolujte pole běhového prostředí:
curl http://localhost:20128/api/cli-tools/runtime/codex | jq - Pro přenosný režim: použijte cíl obrazu
runner-cli(obsahuje nástroje CLI) - Pro režim s připojením hostitele: nastavte
CLI_EXTRA_PATHSa připojte adresář s binárními soubory hostitele pouze pro čtení - Pokud
installed=truearunnable=false: binární soubor byl nalezen, ale kontrola stavu selhala
curl -s http://localhost:20128/api/cli-tools/codex-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/claude-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/openclaw-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'- Zkontrolujte statistiky využití v části Řídicí panel → Využití
- Přepněte primární model na GLM/MiniMax
- Pro úlohy, které nejsou kritické, použijte bezplatnou úroveň (Qoder, Kiro)
- Nastavte rozpočty nákladů pro jednotlivé klíče API: Řídicí panel → Klíče API → Rozpočet
Nastavte APP_LOG_TO_FILE=true v souboru .env. Protokoly aplikace se zapisují do adresáře logs/.
Artefakty požadavků se ukládají do ${DATA_DIR}/call_logs/, když je v nastavení povolena pipeline protokolování volání.
Když je povoleno zachytávání v pipeline, nastavte CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS=false, chcete-li vynechat
datové části streamovaných fragmentů, nebo upravte CALL_LOG_PIPELINE_MAX_SIZE_KB, chcete-li změnit limit velikosti artefaktů v KB.
# Řídicí panel stavu
http://localhost:20128/dashboard/health
# Kontrola stavu API
curl http://localhost:20128/api/monitoring/health- Hlavní stav:
${DATA_DIR}/storage.sqlite(poskytovatelé, kombinace, aliasy, klíče, nastavení) - Využití: tabulky SQLite v
storage.sqlite(usage_history,call_logs,proxy_logs) + volitelně${DATA_DIR}/call_logs/ - Protokoly aplikace:
<repo>/logs/...(když jeAPP_LOG_TO_FILE=true) - Artefakty protokolů volání:
${DATA_DIR}/call_logs/YYYY-MM-DD/..., když je povolena pipeline protokolování volání
Akce Vymazat historii na stránce Protokoly požadavků vymaže call_logs, starší
request_detail_logs a lokální adresář artefaktů ${DATA_DIR}/call_logs/.
Když je jistič poskytovatele ve stavu OPEN, požadavky jsou blokovány, dokud neuplyne doba ochlazení.
Řešení:
- Přejděte do části Řídicí panel → Nastavení → Odolnost
- Zkontrolujte kartu jističe příslušného poskytovatele
- Kliknutím na Resetovat vše resetujte všechny jističe, případně počkejte, až uplyne doba ochlazení
- Před resetováním ověřte, že je poskytovatel skutečně dostupný
Pokud poskytovatel opakovaně přechází do stavu OPEN:
- Zkontrolujte vzorec selhání v části Řídicí panel → Stav → Stav poskytovatelů
- Přejděte do části Nastavení → Odolnost → Profily poskytovatelů a zvyšte prahovou hodnotu selhání
- Zkontrolujte, zda poskytovatel nezměnil limity API nebo nevyžaduje opětovné ověření
- Projděte telemetrii latence — vysoká latence může způsobovat selhání kvůli vypršení časového limitu
- Použijte ID modelu, jehož první částí je poskytovatel, pro kterého máte přihlašovací údaje (
openai/whisper-1,openrouter/deepgram/nova-3). Samotný identifikátordeepgram/nova-3vyžaduje nativní klíč Deepgram. - Ověřte, že je poskytovatel připojen v části Řídicí panel → Poskytovatelé
- Zkontrolujte podporované zvukové formáty:
mp3,wav,m4a,flac,ogg,webm - Ověřte, že velikost souboru nepřekračuje limity poskytovatele (obvykle < 25MB)
- Na kartě poskytovatele zkontrolujte platnost klíče API poskytovatele
K ladění problémů s převodem formátů použijte část Řídicí panel → Překladač:
| Režim | Kdy jej použít |
|---|---|
| Hřiště | Porovnejte vstupní a výstupní formáty vedle sebe — vložte selhávající požadavek a podívejte se, jak se převede |
| Tester chatu | Odesílejte živé zprávy a kontrolujte kompletní datovou část požadavku a odpovědi včetně hlaviček |
| Testovací prostředí | Spouštějte dávkové testy různých kombinací formátů a zjistěte, které převody jsou nefunkční |
| Živé sledování | Sledujte tok požadavků v reálném čase a zachyťte občasné problémy s převodem |
- Nezobrazují se značky uvažování — Zkontrolujte, zda cílový poskytovatel podporuje uvažování, a ověřte nastavení rozpočtu pro uvažování
- Volání nástrojů se ztrácejí — Některé převody formátů mohou odstranit nepodporovaná pole; ověřte to v režimu Hřiště
- Chybí systémová výzva — Claude a Gemini zpracovávají systémové výzvy odlišně; zkontrolujte výstup převodu
- SDK vrací nezpracovaný řetězec namísto objektu — Vyřešeno ve v1.x; nástroj pro sanitizaci odpovědí odstraňuje nestandardní pole (
x_groq,usage_breakdownatd.), která způsobují selhání validace Pydantic v OpenAI SDK. Pokud tento problém stále pozorujete ve v3.x+, nahlaste jej. - GLM/ERNIE odmítá roli
system— Vyřešeno ve v1.x; normalizátor rolí u nekompatibilních modelů automaticky slučuje systémové zprávy se zprávami uživatele. Pokud tento problém stále pozorujete ve v3.x+, nahlaste jej. - Role
developernení rozpoznána — Vyřešeno ve v1.x; u poskytovatelů jiných než OpenAI je automaticky převedena nasystem. Pokud tento problém stále pozorujete ve v3.x+, nahlaste jej. json_schemanefunguje s Gemini — Vyřešeno ve v1.x;response_formatse nyní převádí naresponseMimeType+responseSchemapro Gemini. Pokud tento problém stále pozorujete ve v3.x+, nahlaste jej.
- Automatické omezení rychlosti se vztahuje pouze na poskytovatele používající klíče API (nikoli OAuth/předplatné)
- Ověřte, že je v části Settings → Resilience → Provider Profiles povoleno automatické omezení rychlosti
- Zkontrolujte, zda poskytovatel vrací stavové kódy
429nebo hlavičkyRetry-After
Profily poskytovatelů podporují tato nastavení:
- Základní prodleva — Počáteční doba čekání po prvním selhání (výchozí: 1s)
- Maximální prodleva — Horní limit doby čekání (výchozí: 30s)
- Násobitel — O kolik se má prodleva zvýšit při každém po sobě jdoucím selhání (výchozí: 2x)
Když mnoho souběžných požadavků narazí na poskytovatele s omezenou rychlostí, OmniRoute používá mutex + automatické omezení rychlosti k serializaci požadavků a zabránění kaskádovým selháním. U poskytovatelů používajících klíče API je toto chování automatické.
Příznaky:
- Koncový bod pro dokončování chatu vrací opakovatelnou odpověď
503, jejíž kód chyby jechat_admission_busy. - Odpověď obsahuje
Retry-After. Od verze #12135 je hodnota odvozena od pozorovaného vytížení — použije se vyšší z hodnot: oknoOMNIROUTE_CHAT_ADMISSION_QUEUE_MS, po které již požadavek čekal, a doba, po kterou jsou drženy aktuální výpočetně náročné lease — zaokrouhlená nahoru na celé sekundy a omezená na maximálně 60. U nečinné brány zachovává historická minima: 2 sekundy pro cestu založenou na bajtech, 1 sekundu pro cestu založenou na struktuře (která také obsahujereason: "structure_limit"). - K tomu může dojít, když stále probíhá jiný výpočetně náročný chat nebo dlouhotrvající streamovaná odpověď.
Tělo odpovědi založené na bajtech je:
{
"error": {
"message": "Chat admission capacity is temporarily unavailable. Retry shortly.",
"type": "server_error",
"code": "chat_admission_busy"
}
}Odpověď založená na struktuře používá stejný typ a kód se zprávou
Local chat admission capacity is busy for this structurally heavy request; upstream provider routing was not attempted. Retry shortly.
a reason: "structure_limit".
Při výchozích prahových hodnotách je požadavek považován za strukturálně náročný, pokud obsahuje alespoň 200 zpráv,
alespoň 64 nástrojů nebo alespoň 32,000 odhadovaných tokenů, případně pokud omezený odhad struktury
vyčerpá své limity 10,000 navštívených uzlů nebo hloubky 12.
Příčina: Jde o záměrné odlehčení zátěže uvnitř OmniRoute, nikoli o selhání nadřazeného poskytovatele. Každý proces používá lokální ochranu procesu k rezervaci omezené kapacity pro výpočetně náročné požadavky ještě před uchováním a analýzou velkého těla požadavku. Lease pro výpočetně náročný požadavek zůstává držen po celou dobu životnosti odpovědi SSE.
#503-fanout: před touto opravou omezovala ochrana souběžnost pevným POČTEM požadavků
(OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT, výchozí 1) bez ohledu na paměť hostitele, takže souběžné
větvení kódovacích agentů (více subagentů/CLI, těla běžně > 256 KB) snižovalo efektivní
souběžnost přibližně na 1 a při zcela běžném zatížení vedlo k odpovědím 503. Ochrana se nyní přizpůsobuje
automaticky: řídí se automaticky odvozeným BAJTOVÝM rozpočtem pro příjem (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES) určeným podle
skutečného paměťového limitu procesu a také zohledňuje živý signál zatížení prostředků — zátěž tedy
omezuje pouze tehdy, když je hostitel skutečně pod tlakem kvůli nedostatku paměti, nikoli jen proto, že dorazil více než jeden
náročný požadavek současně. Původní limit počtu (OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT) je
nadále respektován, ale pouze pokud jej explicitně nastavíte.
Když je kapacita obsazena, výpočetně náročný požadavek nejprve čeká až
OMNIROUTE_CHAT_ADMISSION_QUEUE_MS (výchozí 2000, hodnota 0 čekání zakáže) na uvolnění místa
a teprve poté vrátí opakovatelnou odpověď 503. Omezené čekání existuje proto, aby klienti fungující jako agenti
(OpenCode, Claude Code, Cursor), kteří souběžně větví náročné dílčí požadavky, serializovali nárazovou zátěž,
místo aby vyčerpali celý svůj limit opakování okamžitými odmítnutími a selhali uprostřed úlohy.
Aktuální obsazenost lease pro výpočetně náročné požadavky, vypočtený bajtový rozpočet a aktuální závažnost tlaku
jsou k dispozici na GET /api/monitoring/health → chatAdmission (inflightBytes, maxInflightBytes,
budgetSource, pressureSeverity, countCapEnabled) — před změnou jakékoli proměnné prostředí je zkontrolujte.
Settings → Resilience → Request Queue → Concurrent Requests toto chování neovládá; dané nastavení
řídí samostatný mechanismus fronty požadavků poskytovatele.
Řešení:
- Nejprve požadavek zopakujte. Klienti by měli respektovat
Retry-Aftera používat prodlužování prodlevy namísto okamžitého opakování požadavku. - Před jakýmkoli laděním zkontrolujte
/api/monitoring/health→chatAdmission.countCapEnabled: falsea dostatečně vysoká hodnotamaxInflightBytesznamenají, že automaticky odvozený rozpočet již funguje správně; hodnotapressureSeveritynastavená nahigh/criticalznamená, že hostitel má skutečně nedostatek paměti — to nelze vyřešit proměnnou prostředí pro přijímání požadavků, ale vyžaduje to více paměti RAM nebo menší pracovní zátěž. - Pouze pokud
/api/monitoring/healthukazuje, že automaticky odvozený rozpočet je pro vašeho hostitele skutečně příliš malý (což je vzácné — již se škáluje od kontejnerů až po fyzické servery), přepište jej přímo pomocíOMNIROUTE_CHAT_MAX_INFLIGHT_BYTESnamísto návratu ke staršímu limitu počtu požadavků.
Směrodatná nastavení přijímání požadavků najdete v referenci proměnných prostředí.
Někteří uživatelé OmniRoute umisťují bránu před RAG nebo agentní stacky. V takových konfiguracích se běžně objevuje zvláštní vzorec: OmniRoute vypadá v pořádku (poskytovatelé jsou dostupní, profily směrování jsou správně nastavené, žádná upozornění na omezení rychlosti), ale výsledná odpověď je přesto chybná.
V praxi tyto incidenty obvykle pocházejí z navazujícího RAG pipeline, nikoli ze samotné brány.
Pokud chcete používat společnou terminologii pro popis těchto selhání, můžete využít WFGY ProblemMap, externí textový zdroj s licencí MIT, který definuje šestnáct opakujících se vzorců selhání RAG / LLM. Na obecné úrovni zahrnuje:
- odchylky při vyhledávání a narušené hranice kontextu
- prázdné nebo zastaralé indexy a vektorová úložiště
- nesoulad embeddingů a sémantiky
- problémy se sestavováním promptů a kontextovým oknem
- zhroucení logiky a přehnaně sebejisté odpovědi
- selhání dlouhých řetězců a koordinace agentů
- problémy s pamětí více agentů a odchylky rolí
- problémy s pořadím nasazení a inicializace
Princip je jednoduchý:
- Při vyšetřování chybné odpovědi zaznamenejte:
- úlohu a požadavek uživatele
- trasu nebo kombinaci poskytovatelů v OmniRoute
- veškerý RAG kontext použitý v navazujícím zpracování (načtené dokumenty, volání nástrojů atd.)
- Přiřaďte incident k jednomu nebo dvěma číslům ve WFGY ProblemMap (
No.1…No.16). - Uložte číslo do vlastního řídicího panelu, provozní příručky nebo systému pro sledování incidentů vedle protokolů OmniRoute.
- Pomocí odpovídající stránky WFGY rozhodněte, zda potřebujete změnit svůj RAG stack, retriever nebo strategii směrování.
Úplný text a konkrétní postupy naleznete zde (licence MIT, pouze text):
Pokud za OmniRoute neprovozujete RAG nebo agentní pipeline, můžete tuto část ignorovat.
Problémy specifické pro vydání v3.8.0 a jejich aktuální náhradní řešení. Pokud bude oprava zahrnuta v pozdější opravné verzi, položka bude aktualizována nebo odstraněna.
Příznaky:
- „Devin CLI nebylo nalezeno“ nebo „autentizace selhala“ při volání nástrojů využívajících Devin
- Kontrola běhového prostředí CLI hlásí
installed=false
Příčiny:
CLI_DEVIN_BINodkazuje na cestu, která neexistuje- Devin CLI není na hostiteli nainstalováno
Oprava:
- Nainstalujte Devin CLI pro svou platformu
- Nastavte
CLI_DEVIN_BIN=/usr/local/bin/devin(nebo skutečnou cestu) v.env - Restartujte OmniRoute a proveďte nový test v části Řídicí panel → Nástroje CLI
Příznaky:
- Model zůstává uveden jako pozastavený i po uplynutí doby platnosti
- Požadavky při kombinovaném směrování model stále přeskakují, přestože časové razítko je již v minulosti
Ruční reset:
- Řídicí panel: Nastavení → Pozastavení modelů → na kartě příslušného modelu klikněte na Znovu povolit
- API:
DELETE /api/resilience/model-cooldownss autentizačními hlavičkami pro správu
Příznaky:
- Chyba 403 při testování připojení k poskytovateli Command Code
- Karta poskytovatele po novém přidání zobrazuje stav „neautorizováno“
Příčina: Tok OAuth nebyl dokončen (zpětné volání nebylo přijato nebo token nebyl trvale uložen).
Oprava:
- Spusťte
omniroute providersz CLI, abyste znovu aktivovali tok OAuth, nebo - Znovu spusťte OAuth v části Řídicí panel → Poskytovatelé → Command Code → Znovu připojit
Příznaky:
- Velmi krátká nebo okamžitá pozastavení ModelScope po malé dávce požadavků
- Kombinované směrování přeskakuje ModelScope dříve, než se očekávalo
Příčina: ModelScope odesílá hlavičky Retry-After specifické pro poskytovatele. v3.8.0 obsahuje vyhrazené zpracování těchto hlaviček, takže starší verze je nesprávně interpretují jako obecná doporučení pro omezení rychlosti.
Oprava:
- Ujistěte se, že používáte v3.8.0 nebo novější
- Ověřte, že je přepínač
useUpstream429BreakerHintspovolen v části Nastavení → Odolnost
Příznaky:
- Chyba 401 u každého požadavku na WebSocket bridge Codex/Responses při provozu na vzdáleném produkčním hostiteli
- Navazování spojení s WebSocket bridge se ukončí ihned po připojení
Příčina: V produkčním prostředí chybí proměnná prostředí OMNIROUTE_WS_BRIDGE_SECRET.
Oprava:
- Vygenerujte náhodný tajný klíč:
openssl rand -hex 32 - Nastavte
OMNIROUTE_WS_BRIDGE_SECRET=<random-secret>v prostředí produkčního serveru (a u všech klientů, kteří komunikují s bridge) - Restartujte OmniRoute
Příznaky:
- Zaznamenané upozornění:
background mode degraded to synchronous - Požadavek s
background: truevrátí běžnou synchronní odpověď namísto identifikátoru úlohy na pozadí
Příčina: v3.8.0 záměrně převádí background: true v Responses API na synchronní provádění a současně vydává upozornění. Plné asynchronní provádění na pozadí bude dodáno v budoucnu.
Oprava:
- Upravte klienta tak, aby volání prováděl bez
background, nebo - Počkejte na pozdější vydání s plným asynchronním režimem na pozadí (sledujte protokol změn)
Pokud CLI vypíše ⚠ Server did not respond within 60s, ale server ve skutečnosti
funguje, limit sondy připravenosti je pro vaše prostředí příliš krátký.
K tomu běžně dochází ve Windows (antivirový software, sledování změn souborového systému) nebo v kontejnerech s vysokou zátěží při spouštění.
Řešení — zvyšte limit:
# Pomocí proměnné prostředí (platí i při dalších spuštěních):
export OMNIROUTE_READY_TIMEOUT_MS=180000 # 3 minuty
omniroute serve
# Pomocí příznaku CLI (jednorázově):
omniroute serve --ready-timeout 180000Výchozí hodnota je 60 000 ms (60 s). Varování má pouze informativní charakter; server se nadále spouští na pozadí a bude dostupný po dokončení spouštění.
Úplné podrobnosti o OMNIROUTE_READY_TIMEOUT_MS najdete v souboru
docs/reference/ENVIRONMENT.md.
- Problémy na GitHubu: github.com/diegosouzapw/OmniRoute/issues
- Architektura: Interní podrobnosti najdete v souboru
docs/architecture/ARCHITECTURE.md - Referenční příručka API: Všechny koncové body najdete v souboru
docs/reference/API_REFERENCE.md - Řídicí panel stavu: Aktuální stav systému najdete v části Řídicí panel → Stav
- Překladač: K ladění problémů s formátem použijte část Řídicí panel → Překladač