# ЁЯУЦ Setup Guide тАФ OmniRoute (рмУрмбрм╝рм┐рмЖ) ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](../../../../guides/SETUP_GUIDE.md) ┬╖ ЁЯЗкЁЯЗ╣ [am](../../../am/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╕ЁЯЗж [ar](../../../ar/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗжЁЯЗ┐ [az](../../../az/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗзЁЯЗм [bg](../../../bg/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗзЁЯЗй [bn](../../../bn/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗзЁЯЗж [bs](../../../bs/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗиЁЯЗ┐ [cs](../../../cs/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗйЁЯЗ░ [da](../../../da/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗйЁЯЗк [de](../../../de/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗмЁЯЗ╖ [el](../../../el/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗкЁЯЗ╕ [es](../../../es/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗкЁЯЗк [et](../../../et/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ╖ [fa](../../../fa/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗлЁЯЗо [fi](../../../fi/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗлЁЯЗ╖ [fr](../../../fr/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗк [ga](../../../ga/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [gu](../../../gu/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗм [ha](../../../ha/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ▒ [he](../../../he/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [hi](../../../hi/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗнЁЯЗ╖ [hr](../../../hr/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗнЁЯЗ║ [hu](../../../hu/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗжЁЯЗ▓ [hy](../../../hy/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗй [id](../../../id/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗм [ig](../../../ig/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ╣ [it](../../../it/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗпЁЯЗ╡ [ja](../../../ja/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗмЁЯЗк [ka](../../../ka/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ░ЁЯЗн [km](../../../km/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [kn](../../../kn/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ░ЁЯЗ╖ [ko](../../../ko/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▒ЁЯЗ╣ [lt](../../../lt/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▒ЁЯЗ╗ [lv](../../../lv/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [ml](../../../ml/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [mr](../../../mr/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▓ЁЯЗ╛ [ms](../../../ms/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▓ЁЯЗ╣ [mt](../../../mt/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▓ЁЯЗ▓ [my](../../../my/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗ╡ [ne](../../../ne/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗ▒ [nl](../../../nl/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗ┤ [no](../../../no/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [pa](../../../pa/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╡ЁЯЗн [phi](../../../phi/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╡ЁЯЗ▒ [pl](../../../pl/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╡ЁЯЗ╣ [pt](../../../pt/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗзЁЯЗ╖ [pt-BR](../../../pt-BR/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╖ЁЯЗ┤ [ro](../../../ro/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╖ЁЯЗ║ [ru](../../../ru/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ▒ЁЯЗ░ [si](../../../si/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╕ЁЯЗ░ [sk](../../../sk/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╕ЁЯЗо [sl](../../../sl/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╖ЁЯЗ╕ [sr](../../../sr/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╕ЁЯЗк [sv](../../../sv/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ░ЁЯЗк [sw](../../../sw/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [ta](../../../ta/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗоЁЯЗ│ [te](../../../te/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╣ЁЯЗн [th](../../../th/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╣ЁЯЗ╖ [tr](../../../tr/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ║ЁЯЗж [uk-UA](../../../uk-UA/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╡ЁЯЗ░ [ur](../../../ur/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ║ЁЯЗ┐ [uz](../../../uz/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╗ЁЯЗ│ [vi](../../../vi/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ│ЁЯЗм [yo](../../../yo/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗиЁЯЗ│ [zh-CN](../../../zh-CN/docs/guides/SETUP_GUIDE.md) ┬╖ ЁЯЗ╣ЁЯЗ╝ [zh-TW](../../../zh-TW/docs/guides/SETUP_GUIDE.md) --- > OmniRoute рмкрм╛рмЗрмБ рм╕рморнНрмкрнВрм░рнНрмгрнНрмг рм╕рнЗрмЯрмЕрмкрнН рм╕рмирнНрмжрм░рнНрмнред рм╕рмВрмХрнНрм╖рм┐рмкрнНрмд рм╕рмВрм╕рнНрмХрм░рмг рмкрм╛рмЗрмБ, [READMEрм░рнЗ рмерм┐рммрм╛ рмжрнНрм░рнБрмд рмЖрм░рморнНрмн](../README.md#-quick-start) рмжрнЗрмЦрмирнНрмдрнБред ## рммрм┐рм╖рнЯрм╕рнВрмЪрнА - [рмЗрмирм╖рнНрмЯрм▓рнН рмкрмжрнНрмзрмдрм┐рмЧрнБрмбрм╝рм┐рмХ](#install-methods) - [CLI рмЯрнБрм▓рнН рммрм┐рмирнНрнЯрм╛рм╕](#cli-tool-configuration) - [рмкрнНрм░рнЛрмЯрнЛрмХрм▓рнН рм╕рнЗрмЯрмЕрмкрнН (MCP + A2A)](#protocol-setup-mcp--a2a) - [рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН рммрм┐рмирнНрнЯрм╛рм╕](#timeout-configuration) - [рм╕рнНрмкрнНрм▓рм┐рмЯрнН-рмкрнЛрм░рнНрмЯ рморнЛрмбрнН](#split-port-mode) - [Void Linux (xbps-src)](#void-linux-xbps-src-template) - [рмЕрмирмЗрмирм╖рнНрмЯрм▓рнН рмХрм░рм┐рммрм╛](#uninstalling) --- ## рмЗрмирм╖рнНрмЯрм▓рнН рмкрмжрнНрмзрмдрм┐рмЧрнБрмбрм╝рм┐рмХ ### npm (рм╕рнБрмкрм╛рм░рм┐рм╕рмХрнГрмд) ```bash npm install -g omniroute omniroute ``` рмбрнНрнЯрм╛рм╕рнНрммрнЛрм░рнНрмб `http://localhost:20128`рм░рнЗ рмЦрнЛрм▓рм┐рмм рмПрммрмВ APIрм░ рморнВрм│ URL рм╣рнЗрмЙрмЫрм┐ `http://localhost:20128/v1`ред ### pnpm ```bash pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core omniroute ``` > **pnpm рммрнНрнЯрммрм╣рм╛рм░рмХрм╛рм░рнАрморм╛рмирнЗ:** `better-sqlite3` рмПрммрмВ `@swc/core` рмкрм╛рмЗрмБ рмирнЗрмЯрм┐рмнрнН рммрм┐рм▓рнНрмб рм╕рнНрмХрнНрм░рм┐рмкрнНрмЯрмЧрнБрмбрм╝рм┐рмХрнБ рм╕рмХрнНрм╖рмо рмХрм░рм┐рммрм╛рмХрнБ `--allow-build` рмлрнНрм▓рм╛рмЧрнН рмЖрммрм╢рнНрнЯрмХред pnpm v11рм░рнЗ рмЧрнНрм▓рнЛрммрм╛рм▓рнН рмЗрмирм╖рнНрмЯрм▓рнН рмкрм╛рмЗрмБ `pnpm approve-builds -g` рмХрморм╛рмгрнНрмб рм╕рморм░рнНрмерм┐рмд рмирнБрм╣рнЗрмБред ### Arch Linux (AUR) ```bash yay -S omniroute-bin systemctl --user enable --now omniroute.service ``` [AUR рмкрнНрнЯрм╛рмХрнЗрмЬрнН](https://aur.archlinux.org/packages/omniroute-bin) OmniRoute рмЗрмирм╖рнНрмЯрм▓рнН рмХрм░рнЗ рмПрммрмВ рмПрмХ systemd рммрнНрнЯрммрм╣рм╛рм░рмХрм╛рм░рнА рм╕рнЗрммрм╛ рмкрнНрм░рмжрм╛рми рмХрм░рнЗред ### рм╕рнЛрм░рнНрм╕рм░рнБ ```bash npm install PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev ``` > **Windows рмЯрм┐рмкрнНрмкрмгрнА:** рмбрм┐рмлрм▓рнНрмЯ рмнрм╛рммрнЗ, рмкрнБрм░рнБрмгрм╛ `%USERPROFILE%\.omniroute` рмбрм┐рм░рнЗрмХрнНрмЯрнЛрм░рнА рмЙрмкрм╕рнНрмерм┐рмд рмирмерм┐рм▓рнЗ OmniRoute `%APPDATA%\omniroute` рммрнНрнЯрммрм╣рм╛рм░ рмХрм░рнЗред рмПрмХ рмнрм┐рмирнНрми рмбрм╛рмЯрм╛-рмбрм┐рм░рнЗрмХрнНрмЯрнЛрм░рнА рмЕрммрм╕рнНрмерм╛рми рммрм╛рмЫрм┐рммрм╛рмХрнБ `DATA_DIR` рм╕рнЗрмЯрнН рмХрм░рмирнНрмдрнБред > **рмЯрм┐рмкрнНрмкрмгрнА:** рмкрнНрм░рмермо рмерм░ рмЪрм╛рм▓рм┐рммрм╛рммрнЗрм│рнЗ `npm install`, `.env.example`рм░рнБ рм╕рнНрн▒рнЯрмВрмЪрм╛рм│рм┐рмд рмнрм╛рммрнЗ `.env` рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рнЗред рмкрм░рммрм░рнНрмдрнНрмдрнА рмЗрмирм╖рнНрмЯрм▓рнНрмЧрнБрмбрм╝рм┐рмХ рммрм┐рмжрнНрнЯрморм╛рми `.env`рмХрнБ рмУрмнрм░рнНрм░рм╛рмЗрмЯрнН рмХрм░рм┐рмм рмирм╛рм╣рм┐рмБ, рмдрнЗрмгрнБ рмХрм╖рнНрмЯрморм╛рмЗрмЬрнЗрм╕рмирнНрмЧрнБрмбрм╝рм┐рмХ рм╕рмВрм░рмХрнНрм╖рм┐рмд рм░рм╣рм┐рммред рмкрнБрмирмГ рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рм┐рммрм╛рмХрнБ, рмкрнБрмгрм┐ рмЪрм▓рм╛рмЗрммрм╛ рмкрнВрм░рнНрммрм░рнБ `.env` рмбрм┐рм▓рм┐рмЯрнН рмХрм░рмирнНрмдрнБред ### Docker Compose рмкрнНрм░рнЛрмлрм╛рмЗрм▓рнН рмПрммрмВ Caddy HTTPS рм╕рморнЗрмд рм╕рморнНрмкрнВрм░рнНрмгрнНрмг Docker рм╕рнЗрмЯрмЕрмкрнН рмкрм╛рмЗрмБ [Docker рморм╛рм░рнНрмЧрмжрм░рнНрм╢рм┐рмХрм╛](./DOCKER_GUIDE.md) рмжрнЗрмЦрмирнНрмдрнБред ### рмбрнЗрм╕рнНрмХрмЯрмкрнН рмЖрмкрнН (Electron) OmniRoute, Electron 41 + electron-builder 26.10 рмЙрмкрм░рнЗ рмирм┐рм░рнНрморм┐рмд рмПрмХ рмбрнЗрм╕рнНрмХрмЯрмкрнН рм░рм╛рмкрм░рнН рм╕рм╣ рмЖрм╕рнЗред рмЙрмкрм▓рммрнНрмз рм╕рнНрмХрнНрм░рм┐рмкрнНрмЯрмЧрнБрмбрм╝рм┐рмХ (рн▒рм╛рм░рнНрмХрм╕рнНрмкрнЗрм╕рнН рм░рнБрмЯрнН): ```bash npm run electron:dev # рм╣рмЯрнН-рм░рм┐рм▓рнЛрмбрнН рм╕рм╣ рмбрнЗрм╕рнНрмХрмЯрмкрнН рмЪрм▓рм╛рмирнНрмдрнБ npm run electron:build # рммрм░рнНрмдрнНрмдрморм╛рмирм░ OS рмкрм╛рмЗрмБ рммрм┐рм▓рнНрмб рмХрм░рмирнНрмдрнБ (рм╕рнНрн▒рнЯрмВрмЪрм╛рм│рм┐рмд рмнрм╛рммрнЗ рмЪрм┐рм╣рнНрмирмЯ) npm run electron:build:win # Windows рмЗрмирм╖рнНрмЯрм▓рм░рнН (NSIS + рмкрнЛрм░рнНрмЯрнЗрммрм▓рнН) npm run electron:build:mac # macOS (dmg + zip, arm64+x64) npm run electron:build:linux # Linux (AppImage + deb + rpm) npm run electron:smoke:packaged # рмкрнНрнЯрм╛рмХрнЗрмЬрнН рм╣рнЛрмЗрмерм┐рммрм╛ рммрм┐рм▓рнНрмбрм░ рм╕рнНрморнЛрмХрнН-рмЯрнЗрм╖рнНрмЯ рмХрм░рмирнНрмдрнБ ``` рмбрнЗрм╕рнНрмХрмЯрмкрнН рмЗрмирм╖рнНрмЯрм▓рм░рнНрмЧрнБрмбрм╝рм┐рмХрм░ рм░рм┐рм▓рм┐рмЬрнН GitHub Releases рм╕рм╣ рм╕рмВрм▓рмЧрнНрми рмЕрмЫрм┐ред Electron рммрм┐рм╖рнЯрм░рнЗ рм╕рморнНрмкрнВрм░рнНрмгрнНрмг рмЧрмнрнАрм░ рммрм┐рммрм░рмгрнА (рм╕рм╛рмЗрмирм┐рмВ, IPC рммрнНрм░рм┐рмЬрнН, рмбрм┐рм╖рнНрмЯрнНрм░рнЛрмЧрнБрмбрм╝рм┐рмХ) рмкрм╛рмЗрмБ, [`ELECTRON_GUIDE.md`](./ELECTRON_GUIDE.md) рмжрнЗрмЦрмирнНрмдрнБ _(рмкрм░рммрм░рнНрмдрнНрмдрнА рмкрм░рнНрмпрнНрнЯрм╛рнЯрм░рнЗ рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рм╛рмпрм╛рмЗрмЫрм┐)_ред ### рм╣рнЗрмбрнНрм▓рнЗрм╕рнН рм╕рм░рнНрмнрм░рнН (CI/рмЕрмЯрнЛрморнЗрм╕рмирнН) рмЕрмирнБрмкрм╕рнНрмерм┐рмд рм╕рнЗрмЯрмЕрмкрнНрмЧрнБрмбрм╝рм┐рмХ (Docker, Kubernetes, CI) рмкрм╛рмЗрмБ, рммрнНрнЯрммрм╣рм╛рм░ рмХрм░рмирнНрмдрнБ: ```bash omniroute setup --non-interactive omniroute providers test-batch ``` env рмнрнЗрм░рм┐рмПрммрм▓рнНрмЧрнБрмбрм╝рм┐рмХ (`INITIAL_PASSWORD`, `OMNIROUTE_WS_BRIDGE_SECRET`, рмЗрмдрнНрнЯрм╛рмжрм┐) рм╕рм╣ рморм┐рм╢рм╛рмЗ, рмПрм╣рм╛ рмЖрмкрмгрмЩрнНрмХрнБ рм╕рморнНрмкрнВрм░рнНрмгрнНрмг рм╕рнНрмХрнНрм░рм┐рмкрнНрмЯрмпрнЛрмЧрнНрнЯ рмнрм╛рммрнЗ рмПрмХ OmniRoute рмЗрмирм╖рнНрмЯрм╛рмирнНрм╕ рмЪрм╛рм▓рнБ рмХрм░рм┐рммрм╛рмХрнБ рмжрм┐рмПред ### CLI рммрм┐рмХрм│рнНрмкрмЧрнБрмбрм╝рм┐рмХ | рмХрморм╛рмгрнНрмб | рммрм░рнНрмгрнНрмгрмирм╛ | | ----------------------- | ---------------------------------------------------------------------------------- | | `omniroute` | рм╕рм░рнНрмнрм░рнН рмЖрм░рморнНрмн рмХрм░рмирнНрмдрнБ (`PORT=20128`, API рмПрммрмВ рмбрнНрнЯрм╛рм╕рнНрммрнЛрм░рнНрмб рм╕рморм╛рми рмкрнЛрм░рнНрмЯрм░рнЗ) | | `omniroute setup` | рмкрм╛рм╕рнНрн▒рм╛рм░рнНрмб рмПрммрмВ рмкрнНрм░рмермо рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнА рмкрм╛рмЗрмБ рморм╛рм░рнНрмЧрмжрм░рнНрм╢рм┐рмд CLI рмЕрмирнНрммрнЛрм░рнНрмбрм┐рмВ | | `omniroute doctor` | рм╕рм░рнНрмнрм░рнН рмЖрм░рморнНрмн рмирмХрм░рм┐ рм╕рнНрмерм╛рмирнАрнЯ рм╕рнНрн▒рм╛рм╕рнНрмернНрнЯ рмпрм╛рмЮрнНрмЪ рмЪрм▓рм╛рмирнНрмдрнБ | | `omniroute providers` | CLIрм░рнБ рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнАрморм╛рмирмЩрнНрмХрнБ рмЦрнЛрмЬрмирнНрмдрнБ, рмдрм╛рм▓рм┐рмХрм╛рмнрнБрмХрнНрмд рмХрм░рмирнНрмдрнБ, рммрнИрмз рмХрм░рмирнНрмдрнБ рмПрммрмВ рмкрм░рнАрмХрнНрм╖рм╛ рмХрм░рмирнНрмдрнБ | | `omniroute config` | CLI рмЯрнБрм▓рнН рммрм┐рмирнНрнЯрм╛рм╕ тАФ рммрм┐рмирнНрнЯрм╛рм╕рмЧрнБрмбрм╝рм┐рмХрнБ рмдрм╛рм▓рм┐рмХрм╛рмнрнБрмХрнНрмд, рмкрнНрм░рм╛рмкрнНрмд, рм╕рнЗрмЯрнН рмПрммрмВ рммрнИрмз рмХрм░рмирнНрмдрнБ | | `omniroute status` | рмЕрмлрнНрм▓рм╛рмЗрмирнН рм╕рнНрмерм┐рмдрм┐ рмбрнНрнЯрм╛рм╕рнНрммрнЛрм░рнНрмб тАФ рм╕рмВрм╕рнНрмХрм░рмг, DB, рмЯрнБрм▓рнНрмЧрнБрмбрм╝рм┐рмХ, рммрм┐рмирнНрнЯрм╛рм╕ | | `omniroute logs` | APIрм░рнБ рммрнНрнЯрммрм╣рм╛рм░ рм▓рмЧрнНрмЧрнБрмбрм╝рм┐рмХрнБ рм╖рнНрмЯрнНрм░рм┐рморнН рмХрм░рмирнНрмдрнБ (`--follow` рм╕рморм░рнНрмерм┐рмд) | | `omniroute update` | OmniRoute рмЕрмкрмбрнЗрмЯрнНрмЧрнБрмбрм╝рм┐рмХ рмпрм╛рмЮрнНрмЪ рмХрм┐рморнНрммрм╛ рмкрнНрм░рнЯрнЛрмЧ рмХрм░рмирнНрмдрнБ | | `omniroute provider` | рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнА рм╕рмВрмпрнЛрмЧрмЧрнБрмбрм╝рм┐рмХ рмкрм░рм┐рмЪрм╛рм│рмирм╛ рмХрм░рмирнНрмдрнБ тАФ рмпрнЛрмЧ, рмдрм╛рм▓рм┐рмХрм╛, рмЕрмкрм╕рм╛рм░рмг, рмкрм░рнАрмХрнНрм╖рм╛, рмбрм┐рмлрм▓рнНрмЯ | | `omniroute --port 3000` | рмХрнНрнЯрм╛рмирнЛрмирм┐рмХрм╛рм▓рнН/API рмкрнЛрм░рнНрмЯрмХрнБ 3000рм░рнЗ рм╕рнЗрмЯрнН рмХрм░рмирнНрмдрнБ | | `omniroute --mcp` | MCP рм╕рм░рнНрмнрм░рнН рмЖрм░рморнНрмн рмХрм░рмирнНрмдрнБ (stdio рмЯрнНрм░рм╛рмирнНрм╕рмкрнЛрм░рнНрмЯ) | | `omniroute --no-open` | рммрнНрм░рм╛рмЙрмЬрм░рнН рм╕рнНрн▒рнЯрмВрмЪрм╛рм│рм┐рмд рмнрм╛рммрнЗ рмЦрнЛрм▓рмирнНрмдрнБ рмирм╛рм╣рм┐рмБ | | `omniroute --help` | рм╕рм╣рм╛рнЯрмдрм╛ рмжрнЗрмЦрм╛рмирнНрмдрнБ | рм╣рнЗрмбрнНрм▓рнЗрм╕рнН рм╕рнЗрмЯрмЕрмкрнНрмХрнБ рмлрнНрм▓рм╛рмЧрнН рмХрм┐рморнНрммрм╛ рмПрмирнНрмнрм╛рмЗрм░рмирнНрморнЗрмгрнНрмЯ рмнрнЗрм░рм┐рмПрммрм▓рнНрмЧрнБрмбрм╝рм┐рмХ рм╕рм╣ рм╕рнНрмХрнНрм░рм┐рмкрнНрмЯ рмХрм░рм╛рмпрм╛рмЗрмкрм╛рм░рнЗ: ```bash omniroute setup --non-interactive --password "$OMNIROUTE_PASSWORD" omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY" omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY" --test-provider ``` рмбрнНрнЯрм╛рм╕рнНрммрнЛрм░рнНрмб рмирмЦрнЛрм▓рм┐ рм╕рнНрмерм╛рмирнАрнЯ рмбрм╛рмЗрмЧрнНрмирнЛрм╖рнНрмЯрм┐рмХрнНрм╕ рмЪрм▓рм╛рмирнНрмдрнБ: ```bash omniroute doctor omniroute doctor --json omniroute doctor --no-liveness ``` рмбрнНрнЯрм╛рм╕рнНрммрнЛрм░рнНрмб рмирмЦрнЛрм▓рм┐ SSH рмХрм┐рморнНрммрм╛ рм╕рнНрмХрнНрм░рм┐рмкрнНрмЯрм░рнБ рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнАрморм╛рмирмЩрнНрмХрнБ рмкрм░рм┐рмЪрм╛рм│рмирм╛ рмХрм░рмирнНрмдрнБ: ```bash omniroute providers available omniroute providers available --search openai omniroute providers available --category api-key omniroute providers list omniroute providers test omniroute providers test-all omniroute providers validate ``` --- ## CLI рмЯрнБрм▓рнН рммрм┐рмирнНрнЯрм╛рм╕ ### 1) рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнАрморм╛рмирмЩрнНрмХрнБ рм╕рмВрмпрнЛрмЧ рмХрм░рмирнНрмдрнБ рмПрммрмВ API рмХрнА рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рмирнНрмдрнБ 1. Dashboard тЖТ `Providers` рмЦрнЛрм▓рмирнНрмдрнБ рмПрммрмВ рмЕрмдрм┐ рмХрморм░рнЗ рмЧрнЛрмЯрм┐рмП рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнАрмХрнБ рм╕рмВрмпрнЛрмЧ рмХрм░рмирнНрмдрнБ (OAuth рмХрм┐рморнНрммрм╛ API рмХрнА)ред 2. Dashboard тЖТ `Endpoints` рмЦрнЛрм▓рмирнНрмдрнБ рмПрммрмВ рмЧрнЛрмЯрм┐рмП API рмХрнА рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рмирнНрмдрнБред 3. (рмЗрмЪрнНрмЫрм╛рмзрнАрми) Dashboard тЖТ `Combos` рмЦрнЛрм▓рмирнНрмдрнБ рмПрммрмВ рмЖрмкрмгрмЩрнНрмХрм░ рмлрм▓рнНрммрнНрнЯрм╛рмХрнН рм╢рнГрмЩрнНрмЦрм│ рм╕рнЗрмЯрнН рмХрм░рмирнНрмдрнБред ### 2) рмЖрмкрмгрмЩрнНрмХ рмХрнЛрмбрм┐рмВ рмЯрнБрм▓рнНрмХрнБ рмирм┐рм░рнНрмжрнНрмжрнЗрм╢ рмХрм░рмирнНрмдрнБ ```txt рморнВрм│ URL: http://localhost:20128/v1 API рмХрнА: [Endpoint рмкрнГрм╖рнНрмарм╛рм░рнБ рмХрмкрм┐ рмХрм░рмирнНрмдрнБ] рмормбрнЗрм▓рнН: if/qwen3.8-max-preview (рмХрм┐рморнНрммрм╛ рмпрнЗрмХрнМрмгрм╕рм┐ provider/model рмкрнНрм░рм┐рмлрм┐рмХрнНрм╕) ``` рмпрмжрм┐ рмЖрмкрмгрмЩрнНрмХ рмПрмбрм┐рмЯрм░рнН `Authorization: Bearer ...` рмкрмарм╛рмЗрмкрм╛рм░рнЗ рмирм╛рм╣рм┐рмБ, рмдрнЗрммрнЗ рмПрм╣рм╛ рмкрм░рм┐рммрм░рнНрмдрнНрмдрнЗ рмЯрнЛрмХрнЗрмирнНрмпрнБрмХрнНрмд рм╕рнБрм╕рмЩрнНрмЧрмдрмдрм╛ рмЖрмзрм╛рм░ рммрнНрнЯрммрм╣рм╛рм░ рмХрм░рмирнНрмдрнБ: ```txt рморнВрм│ URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/ рмормбрнЗрм▓рнНрмЧрнБрмбрм╝рм┐рмХрм░ URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/models рмЪрм╛рмЯрнН URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/chat/completions Ollama рмЯрнНрнЯрм╛рмЧрнНрмЧрнБрмбрм╝рм┐рмХрм░ URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/api/tags ``` Claude Code, Codex CLI, Cursor, Cline, OpenClaw, OpenCode рмПрммрмВ OpenAI-рм╕рнБрм╕рмЩрнНрмЧрмд SDKрмЧрнБрмбрм╝рм┐рмХ рм╕рм╣рм┐рмд рмХрм╛рмо рмХрм░рнЗред #### `setup-*` рм╕рм╣рм┐рмд рм╕рнНрн▒рнЯрмВрмЪрм╛рм│рм┐рмд рммрм┐рмирнНрнЯрм╛рм╕ рморнВрм│ URL рмПрммрмВ рмХрнАрмХрнБ рм╣рм╛рмдрм░рнЗ рмкрнЗрм╖рнНрмЯ рмХрм░рм┐рммрм╛ рмкрм░рм┐рммрм░рнНрмдрнНрмдрнЗ, рм▓рм╛рмЗрмнрнН рмормбрнЗрм▓рнН рмХрнНрнЯрм╛рмЯрм╛рм▓рмЧрнНрм░рнБ рмкрнНрм░рмдрнНрнЯрнЗрмХ рмЯрнБрм▓рнНрм░ рмирм┐рмЬрм╕рнНрн▒ рммрм┐рмирнНрнЯрм╛рм╕ OmniRouteрмХрнБ рм▓рнЗрмЦрм┐рммрм╛рмХрнБ рмжрм┐рмЕрмирнНрмдрнБред рмкрнНрм░рмдрнНрнЯрнЗрмХ рмЯрнБрм▓рнН рмкрм╛рмЗрмБ рмЧрнЛрмЯрм┐рмП рмХрморм╛рмгрнНрмб: ```bash omniroute setup-codex # ~/.codex/.config.toml рмкрнНрм░рнЛрмлрм╛рмЗрм▓рнНрмЧрнБрмбрм╝рм┐рмХ omniroute setup-claude # ~/.claude/profiles//settings.json omniroute setup-opencode # ~/.config/opencode/opencode.json (OpenAI-рм╕рнБрм╕рмЩрнНрмЧрмд) omniroute setup-cline # Cline CLI + VS Code рмПрмХрнНрм╕рмЯрнЗрмирнНрм╕рмирнН рм╕рнЗрмЯрм┐рмВрм╕рнН omniroute setup-kilo # Kilo Code omniroute setup-continue # ~/.continue/config.yaml (Continue / cn) omniroute setup-cursor # Cursorрм░ рмЖрмкрнН-рмормзрнНрнЯрм╕рнНрме рмкрмжрмХрнНрм╖рнЗрмкрмЧрнБрмбрм╝рм┐рмХ рмкрнНрм░рм┐рмгрнНрмЯ рмХрм░рнЗ omniroute setup-roo # Roo Code рмЗрморнНрмкрнЛрм░рнНрмЯ + autoImport рмкрмПрмгрнНрмЯрм░рнН omniroute setup-crush # ~/.config/crush/crush.json omniroute setup-zed # ~/.config/zed/settings.json (openai_compatible) omniroute setup-goose # ~/.config/goose/config.yaml omniroute setup-aider # ~/.aider.conf.yml omniroute setup-qwen # ~/.qwen/settings.json + ~/.qwen/.env ``` рмПрмХ рм╕рнНрмерм╛рмирнАрнЯ рмЯрнБрм▓рнНрмХрнБ рмПрмХ **рм░рм┐рморнЛрмЯрнН** OmniRoute рм╕рм╣рм┐рмд рммрм┐рмирнНрнЯрм╛рм╕ рмХрм░рм┐рммрм╛ рмкрм╛рмЗрмБ рмкрнНрм░рмдрнНрнЯрнЗрмХ рмХрморм╛рмгрнНрмб `--remote --api-key ` рмПрммрмВ рмкрнВрм░рнНрммрм╛рммрм▓рнЛрмХрми рмкрм╛рмЗрмБ `--dry-run` рмЧрнНрм░рм╣рмг рмХрм░рнЗред рм╕рмарм┐рмХрнН env рмЗрмЮрнНрмЬрнЗрмХрнНрмЯ рмХрм░рм┐ рмПрммрмВ рмХрнМрмгрм╕рм┐ рммрм┐рмирнНрнЯрм╛рм╕ рми рм▓рнЗрмЦрм┐ рмПрмХ CLI рмЖрм░рморнНрмн рмХрм░рм┐рммрм╛ рмкрм╛рмЗрмБ, рм╕рм╛рмзрм╛рм░рмг рм▓рмЮрнНрмЪрм░рнН `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini) рммрнНрнЯрммрм╣рм╛рм░ рмХрм░рмирнНрмдрнБ; рмкрнБрм░рнБрмгрм╛ рмкрнНрм░рмдрм┐-рмЯрнБрм▓рнН рм▓рмЮрнНрмЪрм░рнНрмЧрнБрмбрм╝рм┐рмХ `omniroute launch` (Claude Code) рмПрммрмВ `omniroute launch-codex` (Codex) рмПрммрнЗ рмормзрнНрнЯ рмЙрмкрм▓рммрнНрмз рмЕрмЫрм┐ред рм╕рморнНрмкрнВрм░рнНрмгрнНрмг рм╕рм╛рм░рмгрнА рмкрм╛рмЗрмБ (рмкрнНрм░рмдрнНрнЯрнЗрмХ рмХрморм╛рмгрнНрмб рмХтАЩрмг рм▓рнЗрмЦрнЗ, рмкрнНрм░рмдрнНрнЯрнЗрмХ рмлрнНрм▓рм╛рмЧрнН, рм╕рнНрмерм╛рмирнАрнЯ рммрмирм╛рмо рм░рм┐рморнЛрмЯрнН, рморнВрм│-URL `/v1` рмкрнНрм░рмерм╛рмЧрнБрмбрм╝рм┐рмХ), **[CLI рмЗрмгрнНрмЯрм┐рмЧрнНрм░рнЗрм╕рмирнНрмЧрнБрмбрм╝рм┐рмХ](./CLI-INTEGRATIONS.md)** рмжрнЗрмЦрмирнНрмдрнБред рмкрнНрм░рмдрнНрнЯрнЗрмХ рмЯрнБрм▓рнН рмкрм╛рмЗрмБ рммрм┐рм╕рнНрмдрнГрмд рммрм┐рмирнНрнЯрм╛рм╕ (Claude Code, Codex CLI, Cursor, Cline, OpenClaw, Kilo Code, Copilot рмПрммрмВ рмЕрмирнНрнЯрм╛рмирнНрнЯ) рмкрм╛рмЗрмБ, рмЙрмдрнНрм╕рм░рнНрмЧрнАрмХрнГрмд **[CLI рмЯрнБрм▓рнНрмЧрнБрмбрм╝рм┐рмХрм░ рмЧрм╛рмЗрмбрнН](../reference/CLI-TOOLS.md)** рмжрнЗрмЦрмирнНрмдрнБред --- ## рмкрнНрм░рнЛрмЯрнЛрмХрм▓рнН рм╕рнЗрмЯрмЕрмкрнН (MCP + A2A) ### MCP рм╕рнЗрмЯрмЕрмкрнН (рмормбрнЗрм▓рнН рмХрмгрнНрмЯрнЗрмХрнНрм╕рнНрмЯ рмкрнНрм░рнЛрмЯрнЛрмХрм▓рнН) stdio рморнЛрмбрнНрм░рнЗ MCP рмЯрнНрм░рм╛рмирнНрм╕рмкрнЛрм░рнНрмЯ рмЖрм░рморнНрмн рмХрм░рмирнНрмдрнБ: ```bash omniroute --mcp ``` рм╕рнБрмкрм╛рм░рм┐рм╕рнН рмХрм░рм╛рмпрм╛рмЗрмерм┐рммрм╛ рммрнИрмзрмдрм╛ рмпрм╛рмЮрнНрмЪ рмкрнНрм░рммрм╛рм╣: ```bash # 1. MCP рм╕рм░рнНрмнрм░рнН рмЖрм░рморнНрмн рмХрм░рмирнНрмдрнБ omniroute --mcp # 2. рмЖрмкрмгрмЩрнНрмХ MCP рмХрнНрм▓рм╛рмПрмгрнНрмЯрм░рнБ рмПрмЧрнБрмбрм╝рм┐рмХрнБ рмХрм▓рнН рмХрм░рмирнНрмдрнБ: omniroute_get_health # рм╕рм┐рм╖рнНрмЯрморнНрм░ рм╕рнНрн▒рм╛рм╕рнНрмернНрнЯ рм╕рнНрмерм┐рмдрм┐ рмлрнЗрм░рм╛рмЗрммрм╛ рмЙрмЪрм┐рмд omniroute_list_combos # рм╕рмХрнНрм░рм┐рнЯ рмХрморнНрммрнЛрмЧрнБрмбрм╝рм┐рмХ рмлрнЗрм░рм╛рмЗрммрм╛ рмЙрмЪрм┐рмд # 3. рмХрм┐рморнНрммрм╛ рм╕рморнНрмкрнВрм░рнНрмгрнНрмг E2E рм╕рнБрмЗрмЯрнН рмЪрм▓рм╛рмирнНрмдрнБ: npm run test:protocols:e2e ``` #### MCP рмХрнНрм▓рм╛рмПрмгрнНрмЯ рммрм┐рмирнНрнЯрм╛рм╕ **Claude Code:** ```bash claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream ``` **Cursor / Cline:** рмЖрмкрмгрмЩрнНрмХ MCP рм╕рнЗрмЯрм┐рмВрм╕рнНрм░рнЗ рмпрнЛрмбрм╝рмирнНрмдрнБ: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"], "env": {} } } } ``` **рм╕рморнНрмкрнВрм░рнНрмгрнНрмг MCP рмбрмХрнНрнЯрнБрморнЗрмгрнНрмЯрнЗрм╕рмирнН:** [MCP рм╕рм░рнНрмнрм░рнН README](../../open-sse/mcp-server/README.md) тАФ 110рмЯрм┐ рмЯрнБрм▓рнН, IDE рммрм┐рмирнНрнЯрм╛рм╕, Python/TS/Go рмХрнНрм▓рм╛рмПрмгрнНрмЯред ### A2A рм╕рнЗрмЯрмЕрмкрнН (рмПрмЬрнЗрмгрнНрмЯ-рмЯрнБ-рмПрмЬрнЗрмгрнНрмЯ рмкрнНрм░рнЛрмЯрнЛрмХрм▓рнН) Agent Card рмпрм╛рмЮрнНрмЪ рмХрм░рмирнНрмдрнБ: ```bash curl http://localhost:20128/.well-known/agent.json ``` рмЧрнЛрмЯрм┐рмП рмХрм╛рм░рнНрмпрнНрнЯ рмкрмарм╛рмирнНрмдрнБ: ```bash curl -X POST http://localhost:20128/a2a \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}' ``` **рм╕рморнНрмкрнВрм░рнНрмгрнНрмг A2A рмбрмХрнНрнЯрнБрморнЗрмгрнНрмЯрнЗрм╕рмирнН:** [A2A рм╕рм░рнНрмнрм░рнН README](../../src/lib/a2a/README.md) тАФ JSON-RPC 2.0, рмХрнМрм╢рм│, рм╖рнНрмЯрнНрм░рм┐рморм┐рмВ, рмХрм╛рм░рнНрмпрнНрнЯ рмЬрнАрммрмирмЪрмХрнНрм░ред --- ## рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН рммрм┐рмирнНрнЯрм╛рм╕ ### рморнМрм│рм┐рмХ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнНрмЧрнБрмбрм╝рм┐рмХ рмЕрмзрм┐рмХрм╛рмВрм╢ рмбрм┐рмкрнНрм▓рнЯрморнЗрмгрнНрмЯ рмкрм╛рмЗрмБ, рмЖрмкрмгрмЩрнНрмХрнБ рмХрнЗрммрм│ рмПрм╣рм┐ рмжрнБрмЗрмЯрм┐ рмнрнЗрм░рм┐рмПрммрм▓рнН рмЖрммрм╢рнНрнЯрмХ: | рмнрнЗрм░рм┐рмПрммрм▓рнН | рмбрм┐рмлрм▓рнНрмЯ | рмЙрмжрнНрмжрнЗрм╢рнНрнЯ | | ------------------------ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | `600000` | рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнН рмкрнНрм░рмдрм┐рмХрнНрм░рм┐рнЯрм╛ рмЖрм░рморнНрмн рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН, рм▓рнБрмХрнНрмХрм╛рнЯрм┐рмд Undici рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН, TLS рмлрм┐рмЩрнНрмЧрм░рмкрнНрм░рм┐рмгрнНрмЯ рмЕрмирнБрм░рнЛрмз рмПрммрмВ API рммрнНрм░рм┐рмЬрнН рмЕрмирнБрм░рнЛрмз/рмкрнНрм░рмХрнНрм╕рм┐ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН рмкрм╛рмЗрмБ рм╕рм╣рмнрм╛рмЧрнА рмЖрмзрм╛рм░рморм╛рми | | `STREAM_IDLE_TIMEOUT_MS` | `REQUEST_TIMEOUT_MS` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | OmniRoute рмжрнНрн▒рм╛рм░рм╛ SSE рм╖рнНрмЯрнНрм░рм┐рморнН рммрмирнНрмж рмХрм░рм╛рмпрм┐рммрм╛ рмкрнВрм░рнНрммрм░рнБ рм╖рнНрмЯрнНрм░рм┐рморм┐рмВ рмЪрмЩрнНрмХрнНрмЧрнБрмбрм╝рм┐рмХ рмормзрнНрнЯрм░рнЗ рм╕рм░рнНрммрм╛рмзрм┐рмХ рммрнНрнЯрммрмзрм╛рми | рмкрмЫрнБрмЖ рм╕рнБрм╕рмЩрнНрмЧрмдрмдрм╛ рм╕рмВрм░рмХрнНрм╖рм┐рмд рм░рм╣рм┐рмЫрм┐: рммрм┐рмжрнНрнЯрморм╛рми `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` рмПрммрмВ рмЕрмирнНрнЯ рмкрнНрм░рмдрм┐-рм╕рнНрмдрм░ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН рмнрнЗрм░рм┐рмПрммрм▓рнНрмЧрнБрмбрм╝рм┐рмХ рмПрммрнЗ рмормзрнНрнЯ рмХрм╛рмо рмХрм░рмирнНрмдрм┐ рмПрммрмВ рм╕рм╣рмнрм╛рмЧрнА рмЖрмзрм╛рм░рморм╛рмирмХрнБ рмУрмнрм░рнНрм░рм╛рмЗрмбрнН рмХрм░рмирнНрмдрм┐ред ### рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнА-рмирм┐рм░рнНрмжрнНрмжрм┐рм╖рнНрмЯ рмЯрм┐рмкрнНрмкрмгрнА Claude Code-рм╕рнБрм╕рмЩрнНрмЧрмд рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнНрмЧрнБрмбрм╝рм┐рмХ (`anthropic-compatible-cc-*`) рмкрм╛рмЗрмБ, OmniRoute рм╕рморм╛рмзрм╛рми рм╣рнЛрмЗрмерм┐рммрм╛ рмлрнЗрмЪрнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнНрм░рнБ рмЖрмЙрмЯрнНрммрм╛рмЙрмгрнНрмб `X-Stainless-Timeout` рм╣рнЗрмбрм░рнН рмирм┐рм░рнНрмжрнНрмзрм╛рм░рмг рмХрм░рнЗ, рмпрм╛рм╣рм╛рмжрнНрн▒рм╛рм░рм╛ рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнА-рмкрм╛рм░рнНрм╢рнНрн▒ рм░рм┐рмбрнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнНрмЧрнБрмбрм╝рм┐рмХ рмЖрмкрмгрмЩрнНрмХ env рммрм┐рмирнНрнЯрм╛рм╕ рм╕рм╣ рм╕рмормирнНрн▒рм┐рмд рм░рм╣рнЗред рмдрнГрмдрнАрнЯ-рмкрмХрнНрм╖ Claude Code-рм╕рнБрм╕рмЩрнНрмЧрмд рм░рм┐рмнрм░рнНрм╕ рмкрнНрм░рмХрнНрм╕рм┐рмЧрнБрмбрм╝рм┐рмХ рмкрм╛рмЗрмБ, OmniRoute рмбрм┐рмлрм▓рнНрмЯ `anthropic-beta` рм╕рнЗрмЯрнНрмХрнБ рм╕рмВрмпрморнА рм░рмЦрнЗ рмПрммрмВ, `Client Cache Control`рмХрнБ `Auto`рм░рнЗ рмЫрм╛рмбрм╝рм┐рмжрм┐рмЖрмЧрм▓рнЗ, рмХрнЗрммрм│ рмХрнНрм▓рм╛рмПрмгрнНрмЯ рмжрнНрн▒рм╛рм░рм╛ рмкрнНрм░рмжрм╛рми рмХрм░рм╛рмпрм╛рмЗрмерм┐рммрм╛ `cache_control` рморм╛рм░рнНрмХрм░рнНрмЧрнБрмбрм╝рм┐рмХрнБ рмлрм░рнНрн▒рм╛рм░рнНрмб рмХрм░рнЗред рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнНрмХрнБ рммрм┐рм╢рнЗрм╖ рмнрм╛рммрм░рнЗ рм╕рмВрм╢рнЛрмзрм┐рмд Claude рмЪрм┐рмирнНрмдрми рм╖рнНрмЯрнНрм░рм┐рморнН рмЖрммрм╢рнНрнЯрмХ рм╣рнЗрм▓рнЗ рморм╛рмдрнНрм░ рмкрнНрм░рмдрм┐-рм╕рмВрмпрнЛрмЧ "Enable redact-thinking beta" рмЯрмЧрм▓рнН рм╕рмХрнНрм╖рмо рмХрм░рмирнНрмдрнБред ### рмЙрмирнНрмирмд рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН рмУрмнрм░рнНрм░рм╛рмЗрмбрнНрмЧрнБрмбрм╝рм┐рмХ | рмнрнЗрм░рм┐рмПрммрм▓рнН | рмбрм┐рмлрм▓рнНрмЯ | рмЙрмжрнНрмжрнЗрм╢рнНрнЯ | | ---------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | | `FETCH_TIMEOUT_MS` | `REQUEST_TIMEOUT_MS` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | рмкрнНрм░рмдрм┐рмХрнНрм░рм┐рнЯрм╛ рм╣рнЗрмбрм░рнНрмЧрнБрмбрм╝рм┐рмХ рмкрм╣рмЮрнНрмЪрм┐рммрм╛ рмкрм░рнНрмпрнНрнЯрмирнНрмд рммрнНрнЯрммрм╣рнГрмд рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнН рмкрнНрм░рмдрм┐рмХрнНрм░рм┐рнЯрм╛ рмЖрм░рморнНрмн рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `FETCH_HEADERS_TIMEOUT_MS` | `FETCH_TIMEOUT_MS` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнН рмкрнНрм░рмдрм┐рмХрнНрм░рм┐рнЯрм╛ рм╣рнЗрмбрм░рнНрмЧрнБрмбрм╝рм┐рмХ рмкрнНрм░рм╛рмкрнНрмд рмХрм░рм┐рммрм╛ рмкрм╛рмЗрмБ Undici рм╕рморнЯ рм╕рнАрморм╛ | | `FETCH_BODY_TIMEOUT_MS` | `FETCH_TIMEOUT_MS` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнН рммрмбрм┐ рмЪрмЩрнНрмХрнНрмЧрнБрмбрм╝рм┐рмХ рмормзрнНрнЯрм░рнЗ Undici рм╕рморнЯ рм╕рнАрморм╛ (`0` рмПрм╣рм╛рмХрнБ рмЕрмХрнНрм╖рмо рмХрм░рнЗ) | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Undici TCP рм╕рмВрмпрнЛрмЧ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Undici рмирм┐рм╖рнНрмХрнНрм░рм┐рнЯ рмХрм┐рмкрнН-рмЕрм▓рм╛рмЗрмнрнН рм╕рмХрнЗрмЯрнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `TLS_CLIENT_TIMEOUT_MS` | `FETCH_TIMEOUT_MS` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | `wreq-js` рморм╛рмзрнНрнЯрморм░рнЗ рмХрм░рм╛рмпрм╛рмЗрмерм┐рммрм╛ TLS рмлрм┐рмЩрнНрмЧрм░рмкрнНрм░рм┐рмгрнНрмЯ рмЕрмирнБрм░рнЛрмзрмЧрнБрмбрм╝рм┐рмХ рмкрм╛рмЗрмБ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `REQUEST_TIMEOUT_MS` рмХрм┐рморнНрммрм╛ `600000` рм░рнБ рмЙрмдрнНрмдрм░рм╛рмзрм┐рмХрм╛рм░рм░рнЗ рмкрнНрм░рм╛рмкрнНрмд | API рмкрнЛрм░рнНрмЯрм░рнБ рмбрнНрнЯрм╛рм╢рнНрммрнЛрм░рнНрмб рмкрнЛрм░рнНрмЯрмХрнБ `/v1` рмкрнНрм░рмХрнНрм╕рм┐ рмлрм░рнНрн▒рм╛рм░рнНрмбрм┐рмВ рмкрм╛рмЗрмБ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | API рммрнНрм░рм┐рмЬрнН рм╕рм░рнНрмнрм░рнНрм░рнЗ рмЗрмирнНрмХрморм┐рмВ рмЕрмирнБрм░рнЛрмз рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | API рммрнНрм░рм┐рмЬрнН рм╕рм░рнНрмнрм░рнНрм░рнЗ рмЗрмирнНрмХрморм┐рмВ рм╣рнЗрмбрм░рнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | API рммрнНрм░рм┐рмЬрнН рм╕рм░рнНрмнрм░рнНрм░рнЗ рмХрм┐рмкрнН-рмЕрм▓рм╛рмЗрмнрнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | API рммрнНрм░рм┐рмЬрнН рм╕рм░рнНрмнрм░рнНрм░рнЗ рм╕рмХрнЗрмЯрнН рмирм┐рм╖рнНрмХрнНрм░рм┐рнЯрмдрм╛ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнН (`0` рмПрм╣рм╛рмХрнБ рмЕрмХрнНрм╖рмо рмХрм░рнЗ) | > **рмЯрм┐рмкрнНрмкрмгрнА:** рм╖рнНрмЯрнНрм░рм┐рморм┐рмВ рмЕрмирнБрм░рнЛрмзрмЧрнБрмбрм╝рм┐рмХ рмкрм╛рмЗрмБ, `FETCH_TIMEOUT_MS` рмХрнЗрммрм│ рм╕рмВрмпрнЛрмЧ рм╕рнЗрмЯрнНрмЕрмкрнН / рмкрнНрм░рмермо рмЕрмкрнНрм╖рнНрмЯрнНрм░рм┐рморнН рмкрнНрм░рмдрм┐рмХрнНрм░рм┐рнЯрм╛ рмкрм╛рмЗрмБ рмЕрмкрнЗрмХрнНрм╖рм╛ рмХрм░рм┐рммрм╛рмХрнБ рмЕрмирнНрмдрм░рнНрмнрнБрмХрнНрмд рмХрм░рнЗред рм╖рнНрмЯрнНрм░рм┐рморнН рм╕рмХрнНрм░рм┐рнЯ рм╣рнЛрмЗрмЧрм▓рм╛ рмкрм░рнЗ, OmniRoute рмХрнЗрммрм│ рмкрнНрм░рмХрнГрмд рм╕рнНрмермЧрм┐рмдрмдрм╛ (`STREAM_IDLE_TIMEOUT_MS`) рмХрм┐рморнНрммрм╛ Undici рммрмбрм┐ рмирм┐рм╖рнНрмХрнНрм░рм┐рнЯрмдрм╛ (`FETCH_BODY_TIMEOUT_MS`) рм╣рнЗрм▓рнЗ рмПрм╣рм╛рмХрнБ рммрмирнНрмж рмХрм░рм┐рммред ### рм░рм┐рмнрм░рнНрм╕ рмкрнНрм░рмХрнНрм╕рм┐ рм╕рнБрм╕рмЩрнНрмЧрмдрмдрм╛ рмпрмжрм┐ рмЖрмкрмг OmniRouteрмХрнБ Nginx, Caddy, Cloudflare рмХрм┐рморнНрммрм╛ рмЕрмирнНрнЯ рмХрнМрмгрм╕рм┐ рм░рм┐рмнрм░рнНрм╕ рмкрнНрм░рмХрнНрм╕рм┐ рмкрмЫрм░рнЗ рмЪрм▓рм╛рмирнНрмдрм┐, рмдрнЗрммрнЗ рмкрнНрм░рмХрнНрм╕рм┐ рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнНрмЧрнБрмбрм╝рм┐рмХ рмормзрнНрнЯ рмЖрмкрмгрмЩрнНрмХ OmniRoute рм╖рнНрмЯрнНрм░рм┐рморнН/рмлрнЗрмЪрнН рмЯрм╛рмЗрморнНрмЖрмЙрмЯрнНрмарм╛рм░рнБ рмЕрмзрм┐рмХ рмерм┐рммрм╛ рмирм┐рм╢рнНрмЪрм┐рмд рмХрм░рмирнНрмдрнБред --- ## рммрм┐рмнрмХрнНрмд-рмкрнЛрм░рнНрмЯ рморнЛрмбрнН рмЙрмирнНрмирмд рмкрм░рм┐рм╕рнНрмерм┐рмдрм┐рмЧрнБрмбрм╝рм┐рмХ рмкрм╛рмЗрмБ API рмПрммрмВ DashboardрмХрнБ рмкрнГрмермХ рмкрнЛрм░рнНрмЯрм░рнЗ рмЪрм▓рм╛рмирнНрмдрнБ (рм░рм┐рмнрм░рнНрм╕ рмкрнНрм░рмХрнНрм╕рм┐, рмХрмгрнНрмЯрнЗрмирм░ рмирнЗрмЯрн▒рм░рнНрмХрм┐рмВ): ```bash PORT=20128 DASHBOARD_PORT=20129 omniroute # API: http://localhost:20128/v1 # Dashboard: http://localhost:20129 ``` --- ## Void Linux (`xbps-src`) рмЯрнЗрморнНрмкрм▓рнЗрмЯрнН Void Linux рммрнНрнЯрммрм╣рм╛рм░рмХрм╛рм░рнАрморм╛рмирнЗ `xbps-src` рммрнНрнЯрммрм╣рм╛рм░ рмХрм░рм┐ рмПрмХ рмирнЗрмЯрм┐рмнрнН рмкрнНрнЯрм╛рмХрнЗрмЬрнН рммрм┐рм▓рнНрмб рмХрм░рм┐рмкрм╛рм░рм┐рммрнЗред рмПрм╣рм┐ рммрнНрм▓рмХрнНрмЯрм┐рмХрнБ `srcpkgs/omniroute/template` рмнрм╛рммрм░рнЗ рм╕рнЗрмнрнН рмХрм░рмирнНрмдрнБ: ```bash # 'omniroute' рмкрм╛рмЗрмБ рмЯрнЗрморнНрмкрм▓рнЗрмЯрнН рмлрм╛рмЗрм▓рнН pkgname=omniroute version=3.8.0 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="рмПрмХрм╛рмзрм┐рмХ LLM рмкрнНрм░рмжрм╛рмирмХрм╛рм░рнАрмЩрнНрмХ рмкрм╛рмЗрмБ рм╕рнНрморм╛рм░рнНрмЯ рм░рм╛рмЙрмЯрм┐рмВ рм╕рм╣рм┐рмд рм╕рм╛рм░рнНрммрмЬрмирнАрми AI рмЧрнЗрмЯрн▒рнЗ" maintainer="zenobit " license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" # рмкрнНрм░рмдрнНрнЯрнЗрмХ рм░рм┐рм▓рм┐рмЬрнН рмкрм╛рмЗрмБ рмЪрнЗрмХрнНрм╕рморнНрмХрнБ рмПрм╣рм╛ рм╕рм╣рм┐рмд рмкрнБрмирмГ рм╕рнГрм╖рнНрмЯрм┐ рмХрм░рмирнНрмдрнБ: # curl -L -o /tmp/omniroute.tar.gz "https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" && sha256sum /tmp/omniroute.tar.gz checksum=PLACEHOLDER_REGENERATE_PER_RELEASE system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false do_build() { local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac NODE_ENV=development npm ci --ignore-scripts npm run build cp -r .next/static .next/standalone/.next/static [ -d public ] && cp -r public .next/standalone/public || true local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js (cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch") local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release mkdir -p "$_bs3_release" cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/" rm -rf .next/standalone/node_modules/@img for _mod in pino-abstract-transport split2 process-warning; do cp -r "node_modules/$_mod" .next/standalone/node_modules/ done } do_check() { npm run test:unit } do_install() { vmkdir usr/lib/omniroute/.next vcopy .next/standalone/. usr/lib/omniroute/.next/standalone for _d in \ .next/standalone/.next/server/app/dashboard \ .next/standalone/.next/server/app/dashboard/settings \ .next/standalone/.next/server/app/dashboard/providers; do touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep" done cat > "${WRKDIR}/omniroute" <<'EOF' #!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" } post_install() { vlicense LICENSE } ``` --- ## рмЕрмирмЗрмирм╖рнНрмЯрм▓рнН рмХрм░рм┐рммрм╛ | рмХрморм╛рмгрнНрмбрнН | рмХрм╛рм░рнНрмпрнНрнЯ | | ------------------------ | ----------------------------------------------------------------------------------------- | | `npm run uninstall` | рм╕рм┐рм╖рнНрмЯрморнН рмЖрмкрнНрмХрнБ рм╣рмЯрм╛рмП, рмХрм┐рмирнНрмдрнБ `~/.omniroute`рм░рнЗ рмерм┐рммрм╛ **рмЖрмкрмгрмЩрнНрмХ DB рмПрммрмВ рмХрмирмлрм┐рмЧрм░рнЗрм╕рмирнНрмЧрнБрмбрм╝рм┐рмХрнБ рм░рмЦрнЗ**ред | | `npm run uninstall:full` | рмЖрмкрнНрмХрнБ рм╣рмЯрм╛рмП рмПрммрмВ **рм╕рморм╕рнНрмд рмХрмирмлрм┐рмЧрм░рнЗрм╕рмирнН, рмХрнА рмПрммрмВ рмбрм╛рмЯрм╛рммрнЗрм╕рнНрмХрнБ рм╕рнНрмерм╛рнЯрнА рмнрм╛рммрм░рнЗ рм▓рм┐рмнрм╛рмЗрмжрм┐рмП**ред | > рм╕рморм╕рнНрмд рмкрмжрнНрмзрмдрм┐ рмкрм╛рмЗрмБ рммрм┐рм╕рнНрмдрнГрмд рмЕрмирмЗрмирм╖рнНрмЯрм▓рнН рмирм┐рм░рнНрмжрнНрмжрнЗрм╢рм╛рммрм│рнА рмирм┐рмормирнНрмдрнЗ [UNINSTALL.md](./UNINSTALL.md) рмжрнЗрмЦрмирнНрмдрнБред