# ๐Ÿ“– 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) ยท ๐Ÿ‡ฐ๐Ÿ‡ญ [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) ยท ๐Ÿ‡ฎ๐Ÿ‡ณ [or](../../../or/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-แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:** `--allow-build` แƒแƒšแƒแƒ›แƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ `better-sqlite3`-แƒ˜แƒกแƒ แƒ“แƒ `@swc/core`-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒขแƒ˜แƒฃแƒ แƒ˜ แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒแƒ แƒ—แƒแƒ•แƒแƒ“. `pnpm approve-builds -g` แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ pnpm v11-แƒจแƒ˜ แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก. ### 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-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:** แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, OmniRoute แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก `%APPDATA%\omniroute`-แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒซแƒ•แƒ”แƒšแƒ˜ `%USERPROFILE%\.omniroute` แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒแƒกแƒแƒ แƒฉแƒ”แƒ•แƒแƒ“ แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— `DATA_DIR`. > **แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ:** แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก `npm install` แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒฅแƒ›แƒœแƒ˜แƒก `.env`-แƒก `.env.example`-แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”. แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš `.env`-แƒก แƒแƒ  แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ“แƒ”แƒ‘แƒ. แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒฌแƒแƒจแƒแƒšแƒ”แƒ— `.env`. ### Docker Docker-แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, Compose แƒžแƒ แƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ Caddy HTTPS-แƒ˜แƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ—, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— [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 ``` แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ—แƒแƒœ (`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 (แƒแƒœ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ˜แƒก/แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜) ``` แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒก แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ `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 Tags-แƒ˜แƒก 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 ``` แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก `--remote --api-key ` แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ—แƒ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒ **แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ ** OmniRoute-แƒ–แƒ” แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ“ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒก, แƒแƒกแƒ”แƒ•แƒ” `--dry-run`-แƒก แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ แƒ˜ แƒ“แƒแƒ—แƒ•แƒแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. 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-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (Model Context Protocol) แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— MCP แƒขแƒ แƒแƒœแƒกแƒžแƒแƒ แƒขแƒ˜ stdio แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜: ```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-to-Agent Protocol) แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— 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` แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ fetch-แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ˜แƒ“แƒแƒœ แƒ˜แƒฆแƒ”แƒ‘แƒก, แƒ แƒแƒ—แƒ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ‘แƒแƒจแƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒก. แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ›แƒฎแƒแƒ แƒ˜แƒก Claude Code-แƒ—แƒแƒœ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜ แƒฃแƒ™แƒฃแƒžแƒ แƒแƒฅแƒกแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก OmniRoute แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• `anthropic-beta` แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒกแƒ”แƒ แƒ•แƒแƒขแƒ˜แƒฃแƒšแƒแƒ“ แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒก แƒ“แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช `Client Cache Control` แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒ–แƒ” `Auto`, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒš `cache_control` แƒ›แƒแƒ แƒ™แƒ”แƒ แƒ”แƒ‘แƒก แƒ’แƒแƒ“แƒแƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก. แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ˜ โ€žEnable redact-thinking betaโ€œ แƒฉแƒแƒ แƒ—แƒ”แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ–แƒ”แƒ“แƒ แƒ“แƒแƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก Claude-แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ–แƒ แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒก. ### แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ | แƒชแƒ•แƒšแƒแƒ“แƒ˜ | แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ | แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ | | ---------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | | `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-แƒ˜แƒก แƒฃแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ keep-alive แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ˜ | | `TLS_CLIENT_TIMEOUT_MS` | แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒ˜แƒ— แƒ˜แƒฆแƒ”แƒ‘แƒก `FETCH_TIMEOUT_MS`-แƒก | `wreq-js`-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ TLS-แƒแƒœแƒแƒ‘แƒ”แƒญแƒ“แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ˜ | | `API_BRIDGE_PROXY_TIMEOUT_MS` | แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒ˜แƒ— แƒ˜แƒฆแƒ”แƒ‘แƒก `REQUEST_TIMEOUT_MS`-แƒก แƒแƒœ `600000` | `/v1` แƒžแƒ แƒแƒฅแƒกแƒ˜-แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ˜ API แƒžแƒแƒ แƒขแƒ˜แƒ“แƒแƒœ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒžแƒแƒ แƒขแƒ–แƒ” | | `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` | keep-alive แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ˜ 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-แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก/fetch-แƒ˜แƒก แƒขแƒแƒ˜แƒ›แƒแƒฃแƒขแƒ”แƒ‘แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜แƒ. --- ## แƒ’แƒแƒœแƒชแƒแƒšแƒ™แƒ”แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒชแƒ”แƒœแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒฃแƒ™แƒฃ แƒžแƒ แƒแƒฅแƒกแƒ˜, แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜) แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— 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="Universal AI gateway with smart routing for multiple LLM providers" 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` | แƒจแƒšแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒฃแƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› **แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก DB-แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก** `~/.omniroute`-แƒจแƒ˜. | | `npm run uninstall:full` | แƒจแƒšแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒกแƒแƒ›แƒฃแƒ“แƒแƒ›แƒแƒ“ **แƒจแƒšแƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก**. | > แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ”แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— [UNINSTALL.md](./UNINSTALL.md)-แƒจแƒ˜.