# 📖 Setup Guide — OmniRoute (Yorùbá) 🌐 **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) · 🇮🇳 [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) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/SETUP_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/SETUP_GUIDE.md) --- > Ìtọ́kasí ìṣètò pípé fún OmniRoute. Fún ẹ̀yà kúkúrú, wo [Ìbẹ̀rẹ̀ Kíákíá nínú README](../README.md#-quick-start). ## Àkójọ Àwọn Àkóónú - [Àwọn Ọ̀nà Ìfi Sórí Ẹ̀rọ](#install-methods) - [Ìṣètò Irinṣẹ́ CLI](#cli-tool-configuration) - [Ìṣètò Prótókọ́lù (MCP + A2A)](#protocol-setup-mcp--a2a) - [Ìṣètò Àkókò Ìdádúró](#timeout-configuration) - [Ìpo Pípa Pọ́ọ̀tù](#split-port-mode) - [Void Linux (xbps-src)](#void-linux-xbps-src-template) - [Yíyọ Kúrò Lórí Ẹ̀rọ](#uninstalling) --- ## Àwọn Ọ̀nà Ìfi Sórí Ẹ̀rọ ### npm (a ṣe ìṣeduro rẹ̀) ```bash npm install -g omniroute omniroute ``` Dashboard yóò ṣí ní `http://localhost:20128`, URL ìpìlẹ̀ API sì jẹ́ `http://localhost:20128/v1`. ### pnpm ```bash pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core omniroute ``` > **Àwọn olùlò pnpm:** àsìá `--allow-build` jẹ́ dandan láti mú àwọn skripti ìkọ́lé abinibi ṣiṣẹ́ fún `better-sqlite3` àti `@swc/core`. A kò ṣe àtìlẹ́yìn fún àṣẹ `pnpm approve-builds -g` fún ìfísórí-ẹ̀rọ àgbáyé lórí pnpm v11. ### Arch Linux (AUR) ```bash yay -S omniroute-bin systemctl --user enable --now omniroute.service ``` [Package AUR](https://aur.archlinux.org/packages/omniroute-bin) náà ń fi OmniRoute sórí ẹ̀rọ, ó sì pèsè iṣẹ́ onílò systemd. ### Láti Kóòdù Orísun ```bash npm install PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev ``` > **Àkíyèsí Windows:** Ní àìyẹsẹ̀, OmniRoute máa ń lo `%APPDATA%\omniroute` nígbà tí fódà àtijọ́ `%USERPROFILE%\.omniroute` kò bá sí. Ṣètò `DATA_DIR` láti yan ibi mìíràn fún fódà dátà. > **Àkíyèsí:** `npm install` máa ń dá `.env` sílẹ̀ láti inú `.env.example` ní àkókò ìṣiṣẹ́ àkọ́kọ́. Àwọn ìfísórí-ẹ̀rọ tó tẹ̀lé kò ní kọ lé `.env` tó ti wà, nítorí náà àwọn àtúnṣe rẹ yóò dúró. Láti tún un ṣe láti ìbẹ̀rẹ̀, pa `.env` rẹ́ kí o tó tún ṣiṣẹ́. ### Docker Wo [Ìtọ́sọ́nà Docker](./DOCKER_GUIDE.md) fún ìṣètò Docker pípé, pẹ̀lú àwọn prófáìlì Compose àti Caddy HTTPS. ### Ètò Orí Dẹ́sítọ́ọ̀bù (Electron) OmniRoute ní àpò dìde dẹ́sítọ́ọ̀bù tí a kọ́ lórí Electron 41 + electron-builder 26.10. Àwọn skripti tó wà (ní gbòǹgbò workspace): ```bash npm run electron:dev # Ṣi dẹ́sítọ́ọ̀bù pẹ̀lú àtúnrù-gbóná npm run electron:build # Kọ́ fún OS tó ń ṣiṣẹ́ lọ́wọ́ (a máa ṣàwárí rẹ̀ fúnra rẹ̀) npm run electron:build:win # Ẹ̀rọ ìfísórí Windows (NSIS + portable) npm run electron:build:mac # macOS (dmg + zip, arm64+x64) npm run electron:build:linux # Linux (AppImage + deb + rpm) npm run electron:smoke:packaged # Ṣe àdánwò-smoke fún ìkọ́lé tí a ti dì ``` Àwọn ẹ̀yà ìtújáde ẹ̀rọ ìfísórí dẹ́sítọ́ọ̀bù wà gẹ́gẹ́ bí asomọ́ sí GitHub Releases. Fún àlàyé Electron ní kíkún (fífi àmì sí, afárá IPC, àwọn distro), wo [`ELECTRON_GUIDE.md`](./ELECTRON_GUIDE.md) _(tí a ṣẹ̀dá ní ìpele tó tẹ̀lé)_. ### Sẹ́fà aláìní ojú-ìwò (CI/àìfọwọ́ṣe) Fún àwọn ìṣètò tí kò nílò ẹni láti bójú tó (Docker, Kubernetes, CI), lo: ```bash omniroute setup --non-interactive omniroute providers test-batch ``` Nípa lílò èyí papọ̀ pẹ̀lú àwọn env vars (`INITIAL_PASSWORD`, `OMNIROUTE_WS_BRIDGE_SECRET`, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ), o lè mú instance OmniRoute kan ṣiṣẹ́ tí a lè darí ní kíkún pẹ̀lú skripti. ### Àwọn Àṣàyàn CLI | Àṣẹ | Àpèjúwe | | ----------------------- | -------------------------------------------------------------------- | | `omniroute` | Bẹ̀rẹ̀ sẹ́fà (`PORT=20128`, API àti dashboard lórí pọ́ọ̀tù kan náà) | | `omniroute setup` | Ìtọ́sọ́nà ìbẹ̀rẹ̀ CLI fún ọ̀rọ̀ aṣínà àti provider àkọ́kọ́ | | `omniroute doctor` | Ṣe àwọn àyẹ̀wò ìlera agbègbè láì bẹ̀rẹ̀ sẹ́fà | | `omniroute providers` | Ṣàwárí, ṣe àkójọ, fìdí múlẹ̀, kí o sì dán àwọn provider wò láti CLI | | `omniroute config` | Ìṣètò irinṣẹ́ CLI — ṣe àkójọ, gbà, ṣètò, kí o sì fìdí àwọn ìṣètò múlẹ̀ | | `omniroute status` | Dashboard ipò àìsílóníforíkorí — ẹ̀yà, DB, irinṣẹ́, ìṣètò | | `omniroute logs` | Ṣàgbéjáde àwọn àkọsílẹ̀ lílò láti API (ó ṣe àtìlẹ́yìn fún `--follow`) | | `omniroute update` | Ṣàyẹ̀wò tàbí lo àwọn ìmúdójúìwọ̀n OmniRoute | | `omniroute provider` | Ṣàkóso àwọn àsopọ̀ provider — ṣàfikún, ṣe àkójọ, yọ, dán wò, àìyẹsẹ̀ | | `omniroute --port 3000` | Ṣètò pọ́ọ̀tù àṣẹ/API sí 3000 | | `omniroute --mcp` | Bẹ̀rẹ̀ sẹ́fà MCP (ìgbékalẹ̀ stdio) | | `omniroute --no-open` | Má ṣe ṣí browser fúnra rẹ̀ | | `omniroute --help` | Fi ìrànlọ́wọ́ hàn | A lè lo skripti ṣe ìṣètò aláìní ojú-ìwò pẹ̀lú àwọn àsìá tàbí àwọn oníyí àyíká: ```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 ``` Ṣe àwọn àyẹ̀wò àṣìṣe agbègbè láì ṣí dashboard: ```bash omniroute doctor omniroute doctor --json omniroute doctor --no-liveness ``` Ṣàkóso àwọn provider láti SSH tàbí àwọn skripti láì ṣí dashboard: ```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 ``` --- ## Ìṣètò Ohun Èlò CLI ### 1) So Àwọn Olùpèsè pọ̀ kí o sì Ṣẹ̀dá API Key 1. Ṣí Dashboard → `Providers` kí o sì so ó kéré tán mọ́ olùpèsè kan (OAuth tàbí API key). 2. Ṣí Dashboard → `Endpoints` kí o sì ṣẹ̀dá API key kan. 3. (Àṣàyàn) Ṣí Dashboard → `Combos` kí o sì ṣètò ẹ̀wọ̀n ìpadà-sẹ́yìn rẹ. ### 2) Darí Ohun Èlò Ìkọ Kóòdù Rẹ ```txt URL Ìpìlẹ̀: http://localhost:20128/v1 API Key: [dà á kọ láti ojú-ìwé Endpoint] Módẹ́lì: if/qwen3.8-max-preview (tàbí ìpele ìbẹ̀rẹ̀ olùpèsè/módẹ́lì èyíkéyìí) ``` Tí olóòtú rẹ kò bá lè fi `Authorization: Bearer ...` ránṣẹ́, lo ìpìlẹ̀ ìbámu tí a fi token sí dípò rẹ: ```txt URL Ìpìlẹ̀: http://localhost:20128/api/v1/vscode/YOUR_KEY/ URL Àwọn Módẹ́lì: http://localhost:20128/api/v1/vscode/YOUR_KEY/models URL Ìfọ̀rọ̀wérọ̀: http://localhost:20128/api/v1/vscode/YOUR_KEY/chat/completions URL Àwọn Tags Ollama: http://localhost:20128/api/v1/vscode/YOUR_KEY/api/tags ``` Ó ń ṣiṣẹ́ pẹ̀lú Claude Code, Codex CLI, Cursor, Cline, OpenClaw, OpenCode, àti àwọn SDK tó bá OpenAI mu. #### Ṣètò rẹ̀ láìfọwọ́ṣe pẹ̀lú `setup-*` Dípò lílẹ URL ìpìlẹ̀ àti kọ́kọ́rọ́ náà mọ́lẹ̀ lọ́wọ́, jẹ́ kí OmniRoute kọ ìṣètò ohun èlò kọ̀ọ̀kan láti inú àkójọ àwọn módẹ́lì tó ń ṣiṣẹ́. Àṣẹ kan fún ohun èlò kọ̀ọ̀kan: ```bash omniroute setup-codex # àwọn prófáìlì ~/.codex/.config.toml omniroute setup-claude # ~/.claude/profiles//settings.json omniroute setup-opencode # ~/.config/opencode/opencode.json (ó bá OpenAI mu) omniroute setup-cline # Àwọn ìṣètò Cline CLI + àfikún VS Code omniroute setup-kilo # Kilo Code omniroute setup-continue # ~/.continue/config.yaml (Continue / cn) omniroute setup-cursor # ń tẹ àwọn ìgbésẹ̀ inú ètò Cursor jáde omniroute setup-roo # Ìgbéwọlé Roo Code + atọ́ka 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 ``` Ọ̀kọ̀ọ̀kan gba `--remote --api-key ` láti ṣètò ohun èlò agbègbè kan láti ṣiṣẹ́ pẹ̀lú OmniRoute **jíjìnnà**, àti `--dry-run` láti wo àgbéyẹ̀wò. Láti bẹ̀rẹ̀ CLI kan pẹ̀lú env tó tọ́ tí a ti fi sínú rẹ̀ láìkọ ìṣètò kankan rárá, lo olùbẹ̀rẹ̀ gbogbogbò `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini); àwọn olùbẹ̀rẹ̀ ohun èlò kọ̀ọ̀kan ti àtijọ́ `omniroute launch` (Claude Code) àti `omniroute launch-codex` (Codex) ṣì wà fún lílò. Fún tábìlì kíkún (ohun tí àṣẹ kọ̀ọ̀kan ń kọ, gbogbo flag, agbègbè sí jíjìnnà, àwọn àṣà URL ìpìlẹ̀ `/v1`), wo **[Àwọn Ìṣọ̀kan CLI](./CLI-INTEGRATIONS.md)**. Fún ìṣètò alálàyé ohun èlò kọ̀ọ̀kan (Claude Code, Codex CLI, Cursor, Cline, OpenClaw, Kilo Code, Copilot, àti àwọn mìíràn), wo **[Ìtọ́sọ́nà Àwọn Ohun Èlò CLI](../reference/CLI-TOOLS.md)** tí a yà sọ́tọ̀. --- ## Ìṣètò Ìlànà Ìbánisọ̀rọ̀ (MCP + A2A) ### Ìṣètò MCP (Ìlànà Àyíká Ọ̀rọ̀ Àwòṣe) Bẹ̀rẹ̀ ìrìnàjò MCP ní ipò stdio: ```bash omniroute --mcp ``` Ìṣàn ìmúdájú tí a dámọ̀ràn: ```bash # 1. Bẹ̀rẹ̀ olupin MCP omniroute --mcp # 2. Láti inú oníbàárà MCP rẹ, pe: omniroute_get_health # Ó yẹ kí ó dá ìlera ẹ̀rọ padà omniroute_list_combos # Ó yẹ kí ó dá àwọn combo tó ń ṣiṣẹ́ padà # 3. Tàbí ṣiṣẹ́ gbogbo àkójọpọ̀ E2E: npm run test:protocols:e2e ``` #### Ìṣètò Oníbàárà MCP **Claude Code:** ```bash claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream ``` **Cursor / Cline:** Ṣàfikún sí àwọn ààtò MCP rẹ: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"], "env": {} } } } ``` **Ìwé MCP kíkún:** [README Olupin MCP](../../open-sse/mcp-server/README.md) — ohun èlò 110, àwọn àtòpọ̀ IDE, àti àwọn oníbàárà Python/TS/Go. ### Ìṣètò A2A (Ìlànà Aṣojú-sí-Aṣojú) Ṣàrídájú Káàdì Aṣojú náà: ```bash curl http://localhost:20128/.well-known/agent.json ``` Fi iṣẹ́ kan ránṣẹ́: ```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."}]}}' ``` **Ìwé A2A kíkún:** [README Olupin A2A](../../src/lib/a2a/README.md) — JSON-RPC 2.0, àwọn ọgbọ́n, ìṣànwọ́lé, àti ìgbésí-ayé iṣẹ́. --- ## Ìṣètò Àkókò Ìdádúró ### Àwọn Àkókò Ìdádúró Ìpìlẹ̀ Fún ọ̀pọ̀ jù lọ àwọn ìmúṣiṣẹ́, àwọn àyípadà méjì yìí nìkan ni o nílò: | Àyípadà | Àìyípadà | Ète | | ------------------------ | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | `600000` | Ìwọ̀n ìpìlẹ̀ tí a pín fún àkókò ìdádúró ìbẹ̀rẹ̀-ìdáhùn láti upstream, àwọn àkókò ìdádúró Undici tí a fi pamọ́, àwọn ìbéèrè ìdánimọ̀ TLS, àti àwọn àkókò ìdádúró ìbéèrè/proxy afárá API | | `STREAM_IDLE_TIMEOUT_MS` | jogún `REQUEST_TIMEOUT_MS` | Àlàfo tó pọ̀ jù láàárín àwọn ẹ̀ka ṣiṣàn kí OmniRoute tó fòpin sí ṣiṣàn SSE | Ìbámu sẹ́yìn ṣì wà: `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS`, àti àwọn àyípadà àkókò ìdádúró mìíràn fún ìpele kọ̀ọ̀kan tí ó ti wà tẹ́lẹ̀ ṣì ń ṣiṣẹ́, wọ́n sì máa borí ìwọ̀n ìpìlẹ̀ tí a pín. ### Àwọn Àkíyèsí Pàtó Fún Olùpèsè Fún àwọn upstream tó bá Claude Code mu (`anthropic-compatible-cc-*`), OmniRoute máa ń ṣe àkọlé àbájáde `X-Stainless-Timeout` láti inú àkókò ìdádúró fetch tí a ti yanjú, kí àwọn àkókò ìdádúró kíkà ní ẹ̀gbẹ́ olùpèsè lè wà ní ìbámu pẹ̀lú ìṣètò env rẹ. Fún àwọn reverse proxy ẹnikẹta tó bá Claude Code mu, OmniRoute máa ń jẹ́ kí àkójọpọ̀ `anthropic-beta` àìyípadà jẹ́ ti ìṣọ́ra, àti nígbà tí a bá fi `Client Cache Control` sílẹ̀ lórí `Auto`, ó máa ń fi àwọn àmì `cache_control` tí oníbàárà pèsè nìkan ránṣẹ́ síwájú. Mu aṣàyàn "Mú redact-thinking beta ṣiṣẹ́" fún àsopọ̀ kọ̀ọ̀kan ṣiṣẹ́ kìkì nígbà tí upstream bá béèrè pàtó fún àwọn ṣiṣàn ìrònú Claude tí a ti ṣàtúnṣe láti fi àṣírí pamọ́. ### Àwọn Àtúnṣe Àkókò Ìdádúró Onípele-gíga | Àyípadà | Àìyípadà | Ète | | ---------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------ | | `FETCH_TIMEOUT_MS` | jogún `REQUEST_TIMEOUT_MS` | Àkókò ìdádúró ìbẹ̀rẹ̀-ìdáhùn upstream tí a ń lò títí àwọn àkọlé ìdáhùn yóò fi dé | | `FETCH_HEADERS_TIMEOUT_MS` | jogún `FETCH_TIMEOUT_MS` | Ààlà àkókò Undici fún gbígba àwọn àkọlé ìdáhùn upstream | | `FETCH_BODY_TIMEOUT_MS` | jogún `FETCH_TIMEOUT_MS` | Ààlà àkókò Undici láàárín àwọn ẹ̀ka ara upstream (`0` máa ń pa á) | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Àkókò ìdádúró àsopọ̀ TCP Undici | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Àkókò ìdádúró socket keep-alive Undici nígbà àìṣiṣẹ́ | | `TLS_CLIENT_TIMEOUT_MS` | jogún `FETCH_TIMEOUT_MS` | Àkókò ìdádúró fún àwọn ìbéèrè ìdánimọ̀ TLS tí a ṣe nípasẹ̀ `wreq-js` | | `API_BRIDGE_PROXY_TIMEOUT_MS` | jogún `REQUEST_TIMEOUT_MS` tàbí `600000` | Àkókò ìdádúró fún fífi proxy `/v1` ránṣẹ́ láti port API sí port dashboard | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Àkókò ìdádúró ìbéèrè tó ń wọlé lórí server afárá API | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Àkókò ìdádúró àkọlé tó ń wọlé lórí server afárá API | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Àkókò ìdádúró keep-alive lórí server afárá API | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Àkókò ìdádúró àìṣiṣẹ́ socket lórí server afárá API (`0` máa ń pa á) | > **Àkíyèsí:** Fún àwọn ìbéèrè ṣiṣàn, `FETCH_TIMEOUT_MS` bo ìṣètò àsopọ̀ / dídúró de ìdáhùn upstream àkọ́kọ́ nìkan. Ní kété tí ṣiṣàn bá ti ń ṣiṣẹ́, OmniRoute yóò fòpin sí i kìkì nígbà ìdúró gidi (`STREAM_IDLE_TIMEOUT_MS`) tàbí àìṣiṣẹ́ ara Undici (`FETCH_BODY_TIMEOUT_MS`). ### Ìbámu Reverse Proxy Tí o bá ń ṣiṣẹ́ OmniRoute lẹ́yìn Nginx, Caddy, Cloudflare, tàbí reverse proxy mìíràn, rí i dájú pé àwọn àkókò ìdádúró proxy náà ga ju àwọn àkókò ìdádúró ṣiṣàn/fetch OmniRoute rẹ lọ. --- ## Ipo Èbúté Pínyà Ṣàgbékalẹ̀ API àti Dashboard lórí àwọn èbúté ọ̀tọ̀ọ̀tọ̀ fún àwọn ìlò tó ní ìlọsíwájú (reverse proxy, ìṣètò nẹ́tíwọ́ọ̀kì container): ```bash PORT=20128 DASHBOARD_PORT=20129 omniroute # API: http://localhost:20128/v1 # Dashboard: http://localhost:20129 ``` --- ## Àdàkọ Void Linux (xbps-src) Fún àwọn olùlò Void Linux, ẹ lè kọ́ package abínibí nípa lílo `xbps-src`. Fi ìdíwọ̀n yìí pamọ́ gẹ́gẹ́ bí `srcpkgs/omniroute/template`: ```bash # Fáìlì àdàkọ fún '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" # Ṣe àtúnṣẹ̀dá checksum fún ìtújáde kọ̀ọ̀kan pẹ̀lú: # 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 } ``` --- ## Yíyọ Kúrò | Àṣẹ | Ìgbésẹ̀ | | ------------------------ | ------------------------------------------------------------------------------------- | | `npm run uninstall` | Yọ app inú ẹ̀rọ náà kúrò ṣùgbọ́n ó **pa DB àti àwọn ìṣètò yín mọ́** sínú `~/.omniroute`. | | `npm run uninstall:full` | Yọ app náà kúrò, ó sì **pa gbogbo ìṣètò, kọ́kọ́rọ́, àti ibi ìpamọ́ dátà rẹ́ ráúráú**. | > Fún àwọn ìtọ́ni yíyọ-kúrò tó kúnrẹ́rẹ́ nípasẹ̀ gbogbo àwọn ọ̀nà, ẹ wo [UNINSTALL.md](./UNINSTALL.md).