# CLI Tools — OmniRoute (Српски) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/CLI-TOOLS.md) · 🇪🇹 [am](../../../am/docs/reference/CLI-TOOLS.md) · 🇸🇦 [ar](../../../ar/docs/reference/CLI-TOOLS.md) · 🇦🇿 [az](../../../az/docs/reference/CLI-TOOLS.md) · 🇧🇬 [bg](../../../bg/docs/reference/CLI-TOOLS.md) · 🇧🇩 [bn](../../../bn/docs/reference/CLI-TOOLS.md) · 🇧🇦 [bs](../../../bs/docs/reference/CLI-TOOLS.md) · 🇨🇿 [cs](../../../cs/docs/reference/CLI-TOOLS.md) · 🇩🇰 [da](../../../da/docs/reference/CLI-TOOLS.md) · 🇩🇪 [de](../../../de/docs/reference/CLI-TOOLS.md) · 🇬🇷 [el](../../../el/docs/reference/CLI-TOOLS.md) · 🇪🇸 [es](../../../es/docs/reference/CLI-TOOLS.md) · 🇪🇪 [et](../../../et/docs/reference/CLI-TOOLS.md) · 🇮🇷 [fa](../../../fa/docs/reference/CLI-TOOLS.md) · 🇫🇮 [fi](../../../fi/docs/reference/CLI-TOOLS.md) · 🇫🇷 [fr](../../../fr/docs/reference/CLI-TOOLS.md) · 🇮🇪 [ga](../../../ga/docs/reference/CLI-TOOLS.md) · 🇮🇳 [gu](../../../gu/docs/reference/CLI-TOOLS.md) · 🇳🇬 [ha](../../../ha/docs/reference/CLI-TOOLS.md) · 🇮🇱 [he](../../../he/docs/reference/CLI-TOOLS.md) · 🇮🇳 [hi](../../../hi/docs/reference/CLI-TOOLS.md) · 🇭🇷 [hr](../../../hr/docs/reference/CLI-TOOLS.md) · 🇭🇺 [hu](../../../hu/docs/reference/CLI-TOOLS.md) · 🇦🇲 [hy](../../../hy/docs/reference/CLI-TOOLS.md) · 🇮🇩 [id](../../../id/docs/reference/CLI-TOOLS.md) · 🇳🇬 [ig](../../../ig/docs/reference/CLI-TOOLS.md) · 🇮🇹 [it](../../../it/docs/reference/CLI-TOOLS.md) · 🇯🇵 [ja](../../../ja/docs/reference/CLI-TOOLS.md) · 🇬🇪 [ka](../../../ka/docs/reference/CLI-TOOLS.md) · 🇰🇭 [km](../../../km/docs/reference/CLI-TOOLS.md) · 🇮🇳 [kn](../../../kn/docs/reference/CLI-TOOLS.md) · 🇰🇷 [ko](../../../ko/docs/reference/CLI-TOOLS.md) · 🇱🇹 [lt](../../../lt/docs/reference/CLI-TOOLS.md) · 🇱🇻 [lv](../../../lv/docs/reference/CLI-TOOLS.md) · 🇮🇳 [ml](../../../ml/docs/reference/CLI-TOOLS.md) · 🇮🇳 [mr](../../../mr/docs/reference/CLI-TOOLS.md) · 🇲🇾 [ms](../../../ms/docs/reference/CLI-TOOLS.md) · 🇲🇹 [mt](../../../mt/docs/reference/CLI-TOOLS.md) · 🇲🇲 [my](../../../my/docs/reference/CLI-TOOLS.md) · 🇳🇵 [ne](../../../ne/docs/reference/CLI-TOOLS.md) · 🇳🇱 [nl](../../../nl/docs/reference/CLI-TOOLS.md) · 🇳🇴 [no](../../../no/docs/reference/CLI-TOOLS.md) · 🇮🇳 [or](../../../or/docs/reference/CLI-TOOLS.md) · 🇮🇳 [pa](../../../pa/docs/reference/CLI-TOOLS.md) · 🇵🇭 [phi](../../../phi/docs/reference/CLI-TOOLS.md) · 🇵🇱 [pl](../../../pl/docs/reference/CLI-TOOLS.md) · 🇵🇹 [pt](../../../pt/docs/reference/CLI-TOOLS.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/CLI-TOOLS.md) · 🇷🇴 [ro](../../../ro/docs/reference/CLI-TOOLS.md) · 🇷🇺 [ru](../../../ru/docs/reference/CLI-TOOLS.md) · 🇱🇰 [si](../../../si/docs/reference/CLI-TOOLS.md) · 🇸🇰 [sk](../../../sk/docs/reference/CLI-TOOLS.md) · 🇸🇮 [sl](../../../sl/docs/reference/CLI-TOOLS.md) · 🇸🇪 [sv](../../../sv/docs/reference/CLI-TOOLS.md) · 🇰🇪 [sw](../../../sw/docs/reference/CLI-TOOLS.md) · 🇮🇳 [ta](../../../ta/docs/reference/CLI-TOOLS.md) · 🇮🇳 [te](../../../te/docs/reference/CLI-TOOLS.md) · 🇹🇭 [th](../../../th/docs/reference/CLI-TOOLS.md) · 🇹🇷 [tr](../../../tr/docs/reference/CLI-TOOLS.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/CLI-TOOLS.md) · 🇵🇰 [ur](../../../ur/docs/reference/CLI-TOOLS.md) · 🇺🇿 [uz](../../../uz/docs/reference/CLI-TOOLS.md) · 🇻🇳 [vi](../../../vi/docs/reference/CLI-TOOLS.md) · 🇳🇬 [yo](../../../yo/docs/reference/CLI-TOOLS.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/CLI-TOOLS.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/CLI-TOOLS.md) --- Последње ажурирање: 2026-08-23 OmniRoute се интегрише са три категорије CLI алата распоређених на три наменске странице контролне табле: | Страница | Рута | Концепт | Број | | -------------- | ----------------------- | --------------------------------------------------------------------------------------- | ------------------- | | **CLI кодови** | `/dashboard/cli-code` | Алати за кодирање које усмеравате на OmniRoute (клијент → CLI → OmniRoute → провајдер) | 26 | | **CLI агенти** | `/dashboard/cli-agents` | Аутономни агенти које усмеравате на OmniRoute (исти ток, шири опсег) | 10 | | **ACP агенти** | `/dashboard/acp-agents` | CLI алати које OmniRoute покреће као позадинске процесе преко stdio/ACP-а (обрнути ток) | погледајте регистар | Застареле руте се преусмеравају путем статуса 308: `/dashboard/cli-tools` → `/dashboard/cli-code`, `/dashboard/agents` → `/dashboard/acp-agents`. --- ## Како функционише ``` CLI кодови / CLI агенти (ток коришћења): Claude / Codex / OpenCode / Cline / KiloCode / Continue / Hermes Agent / Goose / ... │ ▼ (сви су усмерени на OmniRoute) http://YOUR_SERVER:20128/v1 │ ▼ (OmniRoute усмерава ка одговарајућем провајдеру) Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ... ACP агенти (обрнути ток покретања): Захтев клијента → OmniRoute → покреће CLI преко stdio/ACP-а → одговор ``` **Предности:** - Један API кључ за управљање свим алатима - Праћење трошкова за све CLI алате на контролној табли - Промена модела без поновног конфигурисања сваког алата - Ради локално и на удаљеним серверима (VPS, Docker, Akamai, Cloudflare Tunnel) --- ## Аутоматско конфигурисање помоћу `setup-*` Не морате ручно да пишете конфигурацију за сваки алат. OmniRoute испоручује по једну `setup-*` команду за сваки подржани CLI, која чита **актуелни** каталог модела из покренутог OmniRoute-а (локалног или удаљеног) и уписује сопствену конфигурацију алата на вашем рачунару: ```bash omniroute setup-codex omniroute setup-claude omniroute setup-opencode omniroute setup-cline omniroute setup-kilo omniroute setup-continue omniroute setup-cursor omniroute setup-roo omniroute setup-crush omniroute setup-goose omniroute setup-qwen omniroute setup-aider omniroute setup-5dive omniroute setup-zed ``` Свака прихвата `--remote --api-key ` (конфигурисање локалног алата за удаљени OmniRoute), `--dry-run` (преглед без уписивања) и `--port`. Алати без аутоматског откривања модела (Cline, Kilo, Roo, Goose, Aider, Qwen, 5dive) прихватају `--model ` (и `--yes` за неинтерактивно покретање). `setup-5dive` је једини поступак који не уписује испод `$HOME`: он конфигурише флоту 5dive агената тако што уписује аутентификациони профил у власништву root корисника на хосту флоте, па се поново извршава преко `sudo` и нема сопствени удаљени режим. Да бисте покренули CLI са убаченим одговарајућим променљивама окружења, без икаквог уписивања конфигурације, користите генерички покретач `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini — циљеви и алијаси потичу из `bin/cli/cli-manifest.mjs`); старији покретачи за појединачне алате `omniroute launch` (Claude Code) и `omniroute launch-codex` (Codex) и даље су доступни. Gemini CLI може само да се покрене: он је циљ команде `omniroute run`, али нема `setup-*`/`configure` поступак. > **Комплетна референца:** главна табела — шта свака команда уписује, све опције, > локални наспрам удаљеног режима и који алати захтевају суфикс `/v1` — налази се у > **[CLI интеграцијама](../guides/CLI-INTEGRATIONS.md)**. ### Покретање ових команди унутар контејнера Команда `setup-*` извршена унутар OmniRoute контејнера уписује податке у сопствени кориснички директоријум контејнера, који ниједан CLI на хосту не чита и који нестаје заједно са контејнером. OmniRoute то открива и завршава се кодом `2`, уз упутства, уместо да врши уписивање. Постоје два подржана начина да наставите — инсталирајте CLI на хосту и употребите `omniroute connect` за повезивање са контејнером или монтирајте директоријуме конфигурације помоћу bind mount-а и подесите `CLI_CONFIG_HOME` (compose профил `host`). Свака команда `setup-*`, као и `omniroute configure` и `omniroute config set`, прихвата `--allow-container-write` када заиста желите да конфигуришете CLI алате самог контејнера; `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true` ради исто за сервер. Погледајте [Водич за Docker → Конфигурисање CLI алата на хосту](../guides/DOCKER_GUIDE.md#configuring-host-cli-tools-when-omniroute-runs-in-docker). **Крајња тачка за примену** на контролној табли (`POST /api/cli-tools/apply`) примењује исту заштиту: у контејнеру, покушај уписивања чије одредиште није монтирано са хоста помоћу bind mount-а враћа **`422`** са `containerEphemeralTarget: true`, безбедним текстом грешке и — за алате који имају поступак за хост (claude, codex, opencode, cline, kilo, continue) — вредношћу `hostSetupCommand` (нпр. `omniroute setup-opencode`) коју треба покренути на хосту; ништа се не уписује. `dryRun: true` наставља да ради у контејнерском режиму и враћа редиговани преглед + путању одредишта без приступа диску. Садржај прегледа није конфигурација са акредитивима коју треба копирати или увести. Примените оригиналне уносе за алат/основни URL/API кључ/модел на хосту или користите назначену команду за подешавање на хосту. Погледајте [Безбедност CLI конфигурације](../security/CLI-CONFIGURATION.md) за заглавље прегледа и уговор захтева. Ово понашање је намерно и заштићено од регресија тестом `tests/unit/api/cli-tools/apply-container-guard.test.ts` — никада немојте „поправљати” 422 уклањањем заштите. --- ## Извор истине Обједињени каталог се налази у `src/shared/constants/cliTools.ts` као `CLI_TOOLS: Record`. Свака ставка има следећа поља (дефинисана у `src/shared/schemas/cliCatalog.ts`): | Поље | Тип | Опис | | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------- | | `category` | `"code" \| "agent"` | Страница на којој се алат приказује | | `vendor` | `string` | Порекло алата („Anthropic“, „OSS (P. Gauthier)“) | | `acpSpawnable` | `boolean` | Може се користити и као ACP агент (приказује се ознака) | | `baseUrlSupport` | `"full" \| "partial" \| "none"` | Ниво подршке за прилагођену крајњу тачку. `"none"` = MITM заостатак | | `configType` | `"env" \| "custom" \| "guide" \| "custom-builder" \| "mitm"` | Механизам конфигурације | | `id`, `name`, `color`, `description`, `docsUrl` | стандардно | Основна поља за приказ | Ставке са `baseUrlSupport: "none"` се **не приказују** на страницама контролне табле — регистроване су у MITM заостатку за план 11 (погледајте `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md`). ### Нивои могућности (каталогизовано × откривљиво × конфигурабилно × покретљиво) Није сваки каталогизовани алат могуће открити, конфигурисати или покренути. Сваки ниво има један извор који га декларише, а тест одступања одржава њихову усклађеност: | Ниво | Значење | Декларисано у | | ------------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | **Каталогизовано** | Појављује се у каталогу контролне табле (назив, добављач, документација, тип конфигурације) | `src/shared/constants/cliTools.ts` (`CLI_TOOLS`) | | **Откривљиво** | Откривање бинарне датотеке/конфигурације, провере исправности, путање конфигурације | `src/shared/services/cliRuntime.ts` (`CLI_TOOLS` каталог времена извршавања) | | **Конфигурабилно** | Подржано у `omniroute configure ` (постоји поступак подешавања) | `bin/cli/cli-manifest.mjs` (`configure: true`) | | **Покретљиво** | Подржано у `omniroute run ` (дефинисано убризгавање окружења/аргумената) | `bin/cli/cli-manifest.mjs` (`run: true`) | `bin/cli/cli-manifest.mjs` је канонски извршни манифест за површине CLI команди: `run`, `configure` и генератори довршавања команди у љусци из њега изводе своје листе циљева, разрешавање алијаса (на пример `kilocode`/`kilo-code`/`kilo_cli` → `kilo`) и повезивање заставице `--model`. Заштита од одступања `tests/unit/cli/cli-manifest-drift.test.ts` потврђује да манифест, каталог времена извршавања, UI каталог и свака корисничка површина остају усклађени — циљ додат на једну површину без осталих узрокује пад скупа тестова уместо неприметног одступања. --- ## 1. Каталог CLI Code-а (27 алата) Сви алати који се појављују у `/dashboard/cli-code`. Они са `baseUrlSupport: none` повезани су преко MITM-а или ручног упутства уместо преко прилагођеног основног URL-а: | id | name | vendor | baseUrlSupport | configType | acpSpawnable | | ------------ | ----------------------- | ------------------- | -------------- | -------------- | ------------ | | claude | Claude Code | Anthropic | full | env | true | | codex | OpenAI Codex CLI | OpenAI | full | custom | true | | zcode | ZCode (GLM Coding Plan) | Z.ai | none | custom | false | | cline | Cline | OSS (ex-Claude Dev) | full | custom | true | | kilo | Kilo Code | Kilo-Org | full | custom | false | | roo | Roo Code | Roo (OSS) | full | guide | false | | continue | Continue | continue.dev | full | guide | false | | aider | Aider | OSS (P. Gauthier) | full | guide | true | | forge | ForgeCode | Antinomy HQ | full | custom | true | | jcode | jcode | 1jehuang (OSS) | full | custom | false | | deepseek-tui | DeepSeek TUI | Hunter Bown (OSS) | full | custom | false | | codewhale | CodeWhale | Hmbown (OSS) | full | custom | false | | opencode | OpenCode | Anomaly (ex-SST) | full | guide | true | | droid | Factory Droid | Factory AI | partial | guide | false | | copilot | GitHub Copilot CLI | GitHub/MS | full | custom | false | | cursor-cli | Cursor CLI | Anysphere | partial | guide | true | | smelt | Smelt | leonardcser (OSS) | full | custom | false | | pi | Pi (pi-coding-agent) | M. Zechner (OSS) | full | custom | false | | grok-build | Grok Build | xAI | full | custom | false | | crush | Crush | OSS (Charm) | full | custom | false | | qwen | Qwen Code | Alibaba | full | guide | true | | zed | Zed | Zed Industries | full | guide | false | | cursor | Cursor | Anysphere | none | guide | false | | antigravity | Antigravity | Google | none | mitm | false | | hermes | Hermes | Nous Research | none | guide | false | | kiro | Kiro AI | Amazon | none | mitm | false | | custom | Custom CLI | — | full | custom-builder | false | Алати са `baseUrlSupport: "partial"` приказују значку „⚠ Делимичан основни URL“ на картици контролне табле. --- ## 2. Каталог CLI агената (10 алата) Аутономни агенти који се појављују у `/dashboard/cli-agents`: | id | назив | добављач | подршка за baseUrl | могуће ACP покретање | | ------------ | ---------------- | ------------------------ | ------------------ | -------------------- | | hermes-agent | Hermes Agent | Nous Research | full | false | | openclaw | OpenClaw | OSS (P. Steinberger) | full | true | | goose | Goose | Block / Linux Foundation | full | true | | interpreter | Open Interpreter | OSS | full | true | | warp | Warp AI | Warp Inc. | partial | true | | agent-deck | Agent Deck | asheshgoplani (OSS) | full | false | | omp | Oh My Pi | OSS | full | true | | letta | Letta CLI | Letta | full | false | | prime-agent | Prime Agent | Prime Intellect (OSS) | full | false | | 5dive | 5dive | OSS (5dive-ai) | full | false | --- ## 3. ACP агенти (/dashboard/acp-agents) Ова страница (преименована из `/dashboard/agents`) приказује CLI алате које OmniRoute може да **покрене** као позадинске механизме за извршавање преко stdio/ACP протокола. Каталог се одржава засебно у `src/lib/acp/registry.ts` и **није** исти као `CLI_TOOLS`. --- ## 4. MITM заостатак (није приказан на контролној табли) Следећи CLI алати изворно не подржавају прилагођени основни URL и **нису наведени** на страницама CLI Code или CLI Agents. Они су кандидати за MITM пресретање у плану 11: | CLI | Разлог | | ------------------- | -------------------------------------------------------------------- | | windsurf | BYOK је ограничен на одабране Claude моделе + корпоративни URL/токен | | amp | Затворени екосистем (Sourcegraph) | | amazon-q / kiro-cli | AWS SSO аутентификација, без прилагођеног URL-а | | cowork | Anthropic Desktop, без подесиве крајње тачке | Погледајте `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md` за потпуне унакрсне референце. --- ## 5. API за групну детекцију Сва детекција алата обједињена је преко једне крајње тачке: **`GET /api/cli-tools/all-statuses`** - Аутентификација: `requireCliToolsAuth(request)` (исто као код осталих `/api/cli-tools/` рута) - Враћа: `Record` (тип: `src/shared/types/cliBatchStatus.ts`) - Стратегија: `Promise.all` над свим алатима, временско ограничење од 5 секунди по алату - Кеш: LRU у меморији, индексиран према `mtime` конфигурационе датотеке. Кеш се поништава када се `mtime` промени. Ресетује се при поновном покретању сервера. Структура одговора за сваки алат: ```ts interface ToolBatchStatus { detection: { installed: boolean; runnable: boolean; version?: string; command?: string; commandPath?: string; reason?: string; }; config: { status: "configured" | "not_configured" | "not_installed" | "unknown" | "other"; endpoint?: string | null; lastConfiguredAt?: string | null; }; error?: string; // пречишћено, без трагова стека } ``` --- ## 6. Obrađivači podešavanja za nove alate Novi alati sa `configType: "custom"` imaju namenske API rute za podešavanja: | Ruta | Alat | | ------------------------------------------- | ---------------------------------------------------------------------------------- | | `POST /api/cli-tools/forge-settings` | ForgeCode (.forge.toml) | | `POST /api/cli-tools/jcode-settings` | jcode (opcija --base-url) | | `POST /api/cli-tools/deepseek-tui-settings` | DeepSeek TUI (OPENAI_BASE_URL, zastarelo) | | `POST /api/cli-tools/codewhale-settings` | CodeWhale (OPENAI_BASE_URL, primarno + sinhronizacija sa zastarelim `~/.deepseek`) | | `POST /api/cli-tools/smelt-settings` | Smelt | | `POST /api/cli-tools/pi-settings` | Pi agent za programiranje | | `POST /api/cli-tools/grok-build-settings` | Grok Build (~/.grok/config.toml, `[model.omniroute]`) | | `POST /api/cli-tools/qwen-settings` | Qwen Code (`~/.qwen/settings.json` + namenski `.env` ključ) | Sve rute koriste `sanitizeErrorMessage()` za odgovore o greškama (strogo pravilo br. 12). --- ## 7. Arhitektura stranica kontrolne table ### CLI kodovi (`/dashboard/cli-code`) - `src/app/(dashboard)/dashboard/cli-code/page.tsx` — serverska komponenta - `src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx` — klijentska mreža - `src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx` — stranica sa detaljima alata - `src/app/(dashboard)/dashboard/cli-code/components/` — 12 specijalizovanih kartica alata + `ToolDetailClient.tsx` ### CLI agenti (`/dashboard/cli-agents`) - `src/app/(dashboard)/dashboard/cli-agents/page.tsx` — serverska komponenta - `src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx` — klijentska mreža - `src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx` — ponovo koristi `ToolDetailClient` ### ACP agenti (`/dashboard/acp-agents`) - `src/app/(dashboard)/dashboard/acp-agents/page.tsx` — serverska komponenta (premeštena iz `agents/`) ### Deljene UI komponente (`src/shared/components/cli/`) | Datoteka | Namena | | ----------------------- | ------------------------------------------------------------------- | | `CliToolCard.tsx` | Pametna kartica statusa (detekcija + konfiguracija + krajnja tačka) | | `CliConceptCard.tsx` | Kartica sa objašnjenjem koncepta za svaku stranicu | | `CliComparisonCard.tsx` | Poređenje tipova CLI-ja u tri kolone | | `BaseUrlSelect.tsx` | Padajući meni krajnjih tačaka (lokalna/oblak/prilagođena) | | `ApiKeySelect.tsx` | Birač API ključa | | `ManualConfigModal.tsx` | Modalni prozor sa isečkom konfiguracije koji se može kopirati | ### Deljena kuka (`src/shared/hooks/cli/`) | Datoteka | Namena | | ------------------------- | ------------------------------------------------------------------------------- | | `useToolBatchStatuses.ts` | Dobavlja `/api/cli-tools/all-statuses`, upravlja stanjem učitavanja/osvežavanja | --- ## 8. i18n Нови именски простори додати у плану 14 F9: | Именски простор | Намена | | --------------- | ----------------------------------------------------------------------------------------- | | `cliCommon` | Дељени нискови (ознаке картица, текстови концепата/поређења, ознаке странице са детаљима) | | `cliCode` | Ниске странице CLI Code | | `cliAgents` | Ниске странице CLI Agents | | `acpAgents` | Ниске странице ACP Agents | Обезбеђени су комплетни PT-BR и EN преводи. 39 других локализација аутоматски користи EN као резервни језик путем спајања на нивоу именског простора у `src/i18n/request.ts`. --- ## 9. Брзи почетак ### Корак 1 — Набавите OmniRoute API кључ 1. Отворите `/dashboard/api-manager` → **Креирај API кључ** 2. Дајте му назив (нпр. `cli-tools`) и изаберите све дозволе 3. Копирајте кључ — биће вам потребан за сваки CLI у наставку > Ваш кључ изгледа овако: `sk-xxxxxxxxxxxxxxxx-xxxxxxxxx` --- ### Корак 2 — Инсталирајте CLI алате Сви алати засновани на npm-у захтевају Node.js 22.22.2+ или 24.x: ```bash # Claude Code (Anthropic) npm install -g @anthropic-ai/claude-code # OpenAI Codex npm install -g @openai/codex # OpenCode npm install -g opencode-ai # Cline npm install -g cline # KiloCode npm install -g kilocode # Qwen Code npm install -g @qwen-code/qwen-code # Google Gemini CLI (може се покренути помоћу `omniroute run gemini` → /v1beta површина) npm install -g @google/gemini-cli # Aider pip install aider-chat # Smelt cargo install smelt # Заснован на Rust-у # Pi агент за програмирање # погледајте https://github.com/zechnerj/pi-coding-agent за инсталацију # jcode # погледајте https://github.com/1jehuang/jcode за инсталацију ``` --- ### Корак 3 — Конфигуришите преко контролне табле 1. Идите на `http://localhost:20128/dashboard/cli-code` 2. Пронађите свој алат у мрежи 3. Кликните на картицу да бисте отворили страницу са детаљима алата 4. Изаберите свој API кључ и основни URL 5. Кликните на **Примени конфигурацију** или копирајте исечак за ручну конфигурацију --- ### Корак 4 — Подесите глобалне променљиве окружења ```bash # OmniRoute универзална крајња тачка export OPENAI_BASE_URL="http://localhost:20128/v1" export OPENAI_API_KEY="sk-your-omniroute-key" export ANTHROPIC_BASE_URL="http://localhost:20128" export ANTHROPIC_AUTH_TOKEN="sk-your-omniroute-key" # Gemini CLI чита GOOGLE_GEMINI_BASE_URL у КОРЕНУ (његов SDK сам додаје /v1beta/...) export GOOGLE_GEMINI_BASE_URL="http://localhost:20128" export GEMINI_API_KEY="sk-your-omniroute-key" ``` > За **удаљени сервер**, замените `localhost:20128` IP адресом или доменом сервера, > нпр. `http://:20128`. --- ### Корак 4 — Конфигуришите сваки алат #### Claude Code ```bash # Направите ~/.claude/settings.json: mkdir -p ~/.claude && cat > ~/.claude/settings.json << EOF { "env": { "ANTHROPIC_BASE_URL": "http://localhost:20128", "ANTHROPIC_AUTH_TOKEN": "sk-your-omniroute-key" } } EOF ``` Користите корен обједињеног Anthropic мрежног пролаза за Claude Code. Овде немојте додавати `/v1`. **Тест:** `claude "say hello"` --- #### OpenAI Codex Савремени Codex (v0.137+) чита само `~/.codex/config.toml` — стари `config.yaml` припада застарелом npm CLI-ју и занемарује се без обавештења. API кључ остаје у променљивој окружења `OMNIROUTE_API_KEY` (`env_key`), никада унутар датотеке: ```bash mkdir -p ~/.codex && cat > ~/.codex/config.toml << EOF model_provider = "omniroute" [model_providers.omniroute] name = "OmniRoute" base_url = "http://localhost:20128/v1" env_key = "OMNIROUTE_API_KEY" requires_openai_auth = false EOF export OMNIROUTE_API_KEY="sk-your-omniroute-key" ``` Комплетна референца (профили, `wire_api`, контекстни прозори): [CODEX-CLI-CONFIGURATION.md](../guides/CODEX-CLI-CONFIGURATION.md). **Тест:** `codex "what is 2+2?"` --- #### OpenCode ```bash mkdir -p ~/.config/opencode && cat > ~/.config/opencode/opencode.json << EOF { "\$schema": "https://opencode.ai/config.json", "provider": { "omniroute": { "npm": "@ai-sdk/openai-compatible", "name": "OmniRoute", "options": { "baseURL": "http://localhost:20128/v1", "apiKey": "sk-your-omniroute-key" }, "models": { "claude-sonnet-4-5": { "name": "claude-sonnet-4-5" }, "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" }, "gemini-3-flash": { "name": "gemini-3-flash" } } } } } EOF ``` **Тест:** `opencode` > Користите `opencode run "your prompt" --model omniroute/claude-sonnet-4-5-thinking --variant high` > за слање варијанти са размишљањем. --- #### Cline (CLI или VS Code) **CLI режим:** ```bash mkdir -p ~/.cline/data && cat > ~/.cline/data/globalState.json << EOF { "apiProvider": "openai", "openAiBaseUrl": "http://localhost:20128/v1", "openAiApiKey": "sk-your-omniroute-key" } EOF ``` **VS Code режим:** Подешавања проширења Cline → API добављач: `OpenAI Compatible` → Основни URL: `http://localhost:20128/v1` Или користите OmniRoute контролну таблу → **CLI алати → Cline → Примени конфигурацију**. --- #### KiloCode (CLI или VS Code) **CLI режим:** ```bash kilocode --api-base http://localhost:20128/v1 --api-key sk-your-omniroute-key ``` **VS Code подешавања:** ```json { "kilo-code.openAiBaseUrl": "http://localhost:20128/v1", "kilo-code.apiKey": "sk-your-omniroute-key" } ``` Или користите OmniRoute контролну таблу → **CLI алати → KiloCode → Примени конфигурацију**. --- #### Continue (VS Code проширење) Уредите `~/.continue/config.yaml`: ```yaml models: - name: OmniRoute provider: openai model: auto apiBase: http://localhost:20128/v1 apiKey: sk-your-omniroute-key default: true ``` Поново покрените VS Code након уређивања. --- #### VS Code Insiders (`chatLanguageModels.json`) Користите ово када је VS Code Insiders конфигурисан за моделе са прилагођених крајњих тачака и желите да OmniRoute ради без прилагођеног поља заглавља. **Препоручена локација:** - Linux: `~/.config/Code - Insiders/User/chatLanguageModels.json` - Windows: `%APPDATA%/Code - Insiders/User/chatLanguageModels.json` **Пример коришћења токенизованог OmniRoute алијаса:** ```json [ { "vendor": "customendpoint", "id": "auto", "name": "OmniRoute Auto", "family": "gpt-4", "version": "1.0.0", "url": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/chat/completions", "modelsUrl": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/models", "requestFormat": "openai-chat-completions", "contextWindow": 256000, "maxOutputTokens": 32768, "auth": { "type": "none" } } ] ``` **Напомене:** - Замените `sk-your-omniroute-key` API кључем креираним у OmniRoute-у. - Поље `url` треба да упућује на `/api/v1/vscode/{token}/chat/completions`. - Поље `modelsUrl` треба да упућује на `/api/v1/vscode/{token}/models`. - Када клијент подржава прилагођена заглавља, предност дајте стандардном току са `/v1` и Bearer заглављем. - Токени уграђени у URL представљају резервну опцију ради компатибилности и могу се појавити у евиденцијама уређивача или историји проксија. --- #### Kiro CLI (Amazon) ```bash # Пријавите се на свој AWS/Kiro налог: kiro-cli login # CLI користи сопствену аутентификацију — OmniRoute није потребан као позадински систем за сам Kiro CLI. # Користите kiro-cli уз OmniRoute за друге алате. kiro-cli status ``` За десктоп апликацију **Kiro IDE** користите MITM крајњу тачку коју OmniRoute излаже у оквиру `/dashboard/cli-tools → Kiro`. --- ## 10. Интерни OmniRoute CLI Бинарна датотека `omniroute` пружа команде за управљање животним циклусом сервера, подешавање, дијагностику и управљање провајдерима. Улазна тачка: `bin/omniroute.mjs`. ```bash omniroute # Покрени сервер (подразумевани порт 20128) omniroute setup # Интерактивни чаробњак за подешавање omniroute doctor # Провери конфигурацију, базу података, портове и извршно окружење omniroute providers list # Конфигурисане везе са провајдерима omniroute providers test-all # Тестирај сваку активну везу omniroute reset-password # Ресетуј администраторску лозинку omniroute logs # Приказуј евиденцију захтева у реалном времену omniroute health # Детаљно стање (прекидачи, кеш, меморија) omniroute --version # Прикажи верзију omniroute --help # Прикажи све команде ``` ### Подешавање и иницијализација ```bash omniroute setup # Интерактивни чаробњак за подешавање omniroute setup --non-interactive # Режим за CI/аутоматизацију (чита променљиве окружења + опције) omniroute setup --password '' # Директно постави администраторску лозинку omniroute setup --add-provider \ --provider openai \ --api-key '' \ --test-provider # Додај и тестирај провајдера у једном кораку ``` Препознате променљиве окружења за неинтерактивно подешавање: | Променљива | Намена | | ------------------- | --------------------------------------------------------------------- | | `OMNIROUTE_API_KEY` | API кључ провајдера (повезан са `--api-key` преко Commander `.env()`) | | `DATA_DIR` | Замена директоријума за OmniRoute податке | Сви остали неинтерактивни уноси прослеђују се као опције, а не као променљиве окружења: `--password`, `--provider`, `--provider-name`, `--provider-base-url`, `--default-model` (погледајте горенаведене опције за `omniroute setup`). ### Дијагностика ```bash omniroute doctor # Провери конфигурацију, базу података, портове, извршно окружење, меморију и доступност omniroute doctor --json # Машински читљив JSON omniroute doctor --no-liveness # Прескочи HTTP проверу стања omniroute doctor --host 0.0.0.0 # Замени хост за проверу доступности omniroute doctor --liveness-url # Замени пуни URL крајње тачке за проверу стања ``` Команда doctor извршава следеће провере: `Config`, `Database`, `Storage/encryption`, `Port availability`, `Node runtime`, `Native binary` (better-sqlite3), `Memory` и `Server liveness`. Завршава се кодом различитим од нуле ако било која провера има статус `fail`. ### Управљање провајдерима ```bash omniroute providers available # OmniRoute каталог провајдера omniroute providers available --search openai # Филтрирај каталог према ID-у/називу/алијасу/категорији omniroute providers available --category api-key # Филтрирај према категорији (api-key, oauth, free, ...) omniroute providers available --json # Машински читљив JSON omniroute providers list # Конфигурисане везе са провајдерима omniroute providers list --json omniroute providers test # Тестирај једну конфигурисану везу omniroute providers test-all # Тестирај сваку активну везу omniroute providers validate # Само локална структурна валидација omniroute providers add --credential-env PROVIDER_KEY omniroute providers import ./providers.json --dry-run --json omniroute providers auth # Постојећи OAuth ток omniroute providers edit --default-model omniroute providers remove --yes ``` `providers add/import/auth/edit/remove` првенствено користе API и зато раде над активним локалним или удаљеним контекстом. За унос акредитива треба користити `--credential-stdin` или `--credential-env`; `--dry-run --json` приказује само редиговано присуство/структуру. `providers available` чита OmniRoute каталог; `providers list/test/test-all/validate` задржавају своје локално SQLite понашање и не захтевају да сервер буде покренут. За прилагођени чвор компатибилан са OpenAI или Anthropic, придружите акредитиве ID-у чвора који враћа `omniroute nodes add`, користећи `omniroute keys add "$NODE_ID" --stdin`. Ово захтева покренут сервер и аутентификацију за управљање у активном контексту. CLI користи `POST /api/providers`, који валидира чвор и копира подешавања његове крајње тачке у везу. Непостојећи чвор, неуспела ауторизација или недоступан сервер враћају грешку без креирања резервног локалног акредитива. `nodes add --base-url` поставља крајњу тачку чвора; она се разликује од адресе сервера у `OMNIROUTE_BASE_URL`. За OpenAPI датотеке користите `omniroute openapi dump --format json --out ./openapi.json`; глобална опција `--output` бира формат приказа CLI-ја, а не назив одредишне датотеке. ### Опоравак и ресетовање ```bash omniroute reset-password # Ресетуј администраторску лозинку (такође: omniroute-reset-password) omniroute reset-encrypted-columns # Прикажи упозорење + пробно извршавање ресетовања шифрованих акредитива omniroute reset-encrypted-columns --force # Заиста постави шифроване акредитиве у SQLite-у на null ``` ### Извоз акредитива (⚠ поступајте опрезно) ```bash omniroute auth export # Прикажи упозорење + захтев за потврду — без приступа бази података omniroute auth export --force # Извези ДЕШИФРОВАНЕ акредитиве СВИХ веза у stdout као JSON omniroute auth export --force --id # Извези само одговарајућу везу omniroute auth export --force --format env # Испиши редове OMNIROUTE__= omniroute auth export --force --out creds.json # Упиши у датотеку (креирану са дозволама 0600) ``` `auth export` ради **искључиво локално** (директно читање SQLite базе, без HTTP руте) и намерно исписује/уписује вредности `apiKey`/`accessToken`/`refreshToken`/`idToken` као **обичан текст** — то је функционалност, а не грешка. Ништа се не чита из базе података и ништа се не дешифрује без опције `--force`. Банер са упозорењем се увек исписује на stderr пре него што се прикаже било какав обичан текст. Захтева да `STORAGE_ENCRYPTION_KEY` буде постављен. Поље које не може да се дешифрује (застарели кључ, оштећен шифрат) пријављује се као `DecryptFailed: true`, уместо да се прекине цео извоз или открије основна грешка. ### Остале поткоманде Оне подразумевају да је OmniRoute сервер покренут, осим ако није другачије наведено: ```bash omniroute status # Свеобухватан статус током извршавања omniroute logs # Стримовање евиденције захтева (--json, --search, --follow) omniroute config list # Приказ конфигурисаних CLI алата omniroute provider list # Листа доступних провајдера (алијас за providers list) omniroute provider add # Регистровање OmniRoute-а као провајдера у алату omniroute keys add | list | remove # Управљање API кључевима omniroute models [provider] # Листа модела (--json, --search) omniroute combo list | switch | create | delete omniroute backup # Снимак конфигурације + базе података omniroute restore # Враћање из претходног снимка omniroute health # Детаљно стање (прекидачи, кеш, меморија) omniroute quota # Искоришћеност квоте провајдера omniroute cache # Статус кеша omniroute cache clear # Брисање семантичког кеша и кеша потписа omniroute mcp status | restart # Статус / поновно покретање MCP сервера omniroute a2a status | card # Статус A2A сервера / картица агента omniroute tunnel list | create | stop # Управљање тунелима (cloudflare/tailscale/ngrok) omniroute env show | get | set # Преглед / постављање променљивих окружења (привремено) omniroute test # Основни тест повезивости са провајдером omniroute update # Провера доступности ажурирања omniroute completion # Генерисање довршавања команди за љуску ``` ### Уобичајене опције | Опција | Опис | | ------------------- | --------------------------------------------------- | | `--no-open` | Не отварај аутоматски прегледач при покретању | | `--port ` | Замени API порт (подразумевано 20128) | | `--mcp` | Покрени као MCP сервер преко stdio-а (за IDE-ове) | | `--non-interactive` | CI режим (без упита; чита из окружења/опција) | | `--json` | Машински читљив JSON излаз (doctor, providers итд.) | | `--help`, `-h` | Прикажи помоћ специфичну за команду | | `--version`, `-v` | Испиши инсталирану верзију | --- ## Доступне API крајње тачке | Крајња тачка | Опис | Користи се за | | -------------------------- | ----------------------------------- | ------------------------------------ | | `/v1/chat/completions` | Стандардно ћаскање (сви провајдери) | Све модерне алате | | `/v1/responses` | Responses API (OpenAI формат) | Codex, агентске токове рада | | `/v1/completions` | Застарела довршавања текста | Старије алате који користе `prompt:` | | `/v1/embeddings` | Текстуалне уградње | RAG, претрагу | | `/v1/images/generations` | Генерисање слика | GPT-Image, Flux итд. | | `/v1/audio/speech` | Претварање текста у говор | ElevenLabs, OpenAI TTS | | `/v1/audio/transcriptions` | Претварање говора у текст | Deepgram, AssemblyAI | Примери спремни за лепљење са токенизованим OmniRoute URL-ом: ```txt Пример токена: sk-a3ab3c080beaee3a-69f4a4-070d71af Стандардна OpenAI основа: http://localhost:20128/v1 VS Code модели: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/models VS Code ћаскање: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/chat/completions VS Code одговори: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/responses Ollama ознаке: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/tags Ollama ћаскање: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/chat ``` --- ## Решавање проблема | Грешка | Узрок | Решење | | ---------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------- | | `Connection refused` | OmniRoute није покренут | `omniroute serve` | | `401 Unauthorized` | Погрешан API кључ | Проверите у `/dashboard/api-manager` | | `No combo configured` | Нема активне комбинације рутирања | Подесите је у `/dashboard/combos` | | CLI приказује „not installed“ | Бинарна датотека није у PATH-у | Проверите `which ` | | Контролна табла приказује „not detected“ након инсталације | Кеш је застарео | Кликните на „⟳ Refresh detection“ на контролној табли | | Стара веза `/dashboard/cli-tools` | Обележивач из периода пре v3.8.6 | Аутоматски се преусмерава на `/dashboard/cli-code` (308) | | Стара веза `/dashboard/agents` | Обележивач из периода пре v3.8.6 | Аутоматски се преусмерава на `/dashboard/acp-agents` (308) | ## Управљање смерницама кључа за инференцију помоћу OmniRoute CLI-ја Користите аутентификовани контекст за управљање (погледајте [Удаљени режим](../guides/REMOTE-MODE.md)) да бисте прегледали или ажурирали постојећи кључ за инференцију према његовом ID-у: ```bash omniroute --output json keys policy show KEY_ID omniroute keys policy set KEY_ID --unrestricted omniroute --output json keys policy show KEY_ID ``` `--unrestricted` је псеудоним за `--model-access-mode all`. Ажурирањем се брише листа дозвољених модела. Опсези, правила везе, блокирани модели, ограничења брзине и ограничења трошкова остају сачувани, тако да те друге контроле и даље могу да одбију захтев. Изричито `--allowed-models ""` такође бира `all`; комбинујте га са `--model-access-mode restricted` да бисте задржали ограничени кључ без дозвољених модела. Непразна листа раздвојена зарезима бира `restricted`, осим ако није изричито другачије наведено. Противречна комбинација `all` и непразне листе дозвољених модела одбија се пре слања захтева. `--rate-limit 30` поставља број захтева у минути и задржава правила за друге временске периоде. `--max-cost 5` омогућава дневно ограничење у USD без промене недељног ограничења; `--max-cost 0` уклања дневно ограничење и задржава постојећи прекидач ограничења употребе и недељно ограничење. Изостављена поља смерница остају непромењена. Промене брзине прво читају тренутне смернице; избегавајте истовремено уређивање низа ограничења брзине истог кључа. Команде за смернице користе аутентификоване `GET`/`PATCH /api/keys/{id}` захтеве и поштују активни контекст и глобалну опцију `--api-key`. JSON излаз садржи само поља смерница, без сачуваног кључа или његовог маскираног приказа. Акредитив намењен искључиво инференцији не може да одобри измене за управљање. Одговор 401/403 захтева проверу акредитива и контекста за управљање; он не указује на грешку локалног CLI токена или соли. Погледајте [CLI токен](../security/CLI_TOKEN.md) за засебан уговор локалне аутентификације.