# CLI Tools — OmniRoute (Bosanski) 🌐 **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) · 🇨🇿 [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) · 🇷🇸 [sr](../../../sr/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) --- Posljednje ažuriranje: 2026-08-23 OmniRoute se integrira s tri kategorije CLI alata raspoređenih na tri namjenske stranice kontrolne ploče: | Stranica | Ruta | Koncept | Broj | | -------------- | ----------------------- | ------------------------------------------------------------------------------------------- | ------------------- | | **CLI kodovi** | `/dashboard/cli-code` | Alati za programiranje koje usmjeravate na OmniRoute (Klijent → CLI → OmniRoute → Pružalac) | 26 | | **CLI agenti** | `/dashboard/cli-agents` | Autonomni agenti koje usmjeravate na OmniRoute (isti tok, širi opseg) | 10 | | **ACP agenti** | `/dashboard/acp-agents` | CLI alati koje OmniRoute pokreće kao pozadinske procese putem stdio/ACP-a (obrnuti tok) | pogledajte registar | Zastarjele rute preusmjeravaju putem statusa 308: `/dashboard/cli-tools` → `/dashboard/cli-code`, `/dashboard/agents` → `/dashboard/acp-agents`. --- ## Kako funkcionira ``` CLI kodovi / CLI agenti (tok korištenja): Claude / Codex / OpenCode / Cline / KiloCode / Continue / Hermes Agent / Goose / ... │ ▼ (svi su usmjereni na OmniRoute) http://YOUR_SERVER:20128/v1 │ ▼ (OmniRoute usmjerava prema odgovarajućem pružaocu) Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ... ACP agenti (obrnuti tok pokretanja): Zahtjev klijenta → OmniRoute → pokreće CLI putem stdio/ACP-a → odgovor ``` **Prednosti:** - Jedan API ključ za upravljanje svim alatima - Praćenje troškova svih CLI alata na kontrolnoj ploči - Promjena modela bez ponovnog konfiguriranja svakog alata - Radi lokalno i na udaljenim serverima (VPS, Docker, Akamai, Cloudflare Tunnel) --- ## Automatska konfiguracija pomoću `setup-*` Ne morate ručno pisati konfiguraciju svakog alata. OmniRoute isporučuje po jednu naredbu `setup-*` za svaki podržani CLI, koja čita **aktuelni** katalog modela iz pokrenutog OmniRoutea (lokalnog ili udaljenog) i zapisuje vlastitu konfiguraciju alata na vaš računar: ```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 ``` Svaka prihvata `--remote --api-key ` (konfigurira lokalni alat za udaljeni OmniRoute), `--dry-run` (pregled bez zapisivanja) i `--port`. Alati bez automatskog otkrivanja modela (Cline, Kilo, Roo, Goose, Aider, Qwen, 5dive) prihvataju `--model ` (i `--yes` za neinteraktivna pokretanja). `setup-5dive` je jedini recept koji ne zapisuje unutar `$HOME`: konfigurira flotu 5dive agenata zapisivanjem autentifikacijskog profila u vlasništvu root korisnika na hostu flote, pa se ponovo izvršava putem `sudo` i nema vlastiti udaljeni način rada. Za pokretanje CLI-ja s ispravno postavljenim varijablama okruženja, bez ikakvog zapisivanja konfiguracije, koristite generički pokretač `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini — ciljevi i aliasi dolaze iz `bin/cli/cli-manifest.mjs`); stari pokretači za pojedinačne alate `omniroute launch` (Claude Code) i `omniroute launch-codex` (Codex) i dalje su dostupni. Gemini CLI podržava samo pokretanje: on je cilj za `omniroute run`, ali nema recept `setup-*`/`configure`. > **Potpuna referenca:** glavna tabela — šta svaka naredba zapisuje, sve opcije, > lokalni naspram udaljenog načina rada i koji alati zahtijevaju sufiks `/v1` — > nalazi se u dokumentu > **[CLI integracije](../guides/CLI-INTEGRATIONS.md)**. ### Pokretanje ovih naredbi unutar kontejnera Naredba `setup-*` izvršena unutar OmniRoute kontejnera zapisuje podatke u vlastiti početni direktorij kontejnera, koji nijedan CLI na hostu ne čita i koji nestaje zajedno s kontejnerom. OmniRoute to otkriva i završava s kodom `2`, prikazujući upute umjesto zapisivanja. Postoje dva podržana načina za nastavak — instalirajte CLI na hostu i koristite `omniroute connect` za povezivanje s kontejnerom ili povežite direktorije konfiguracije putem bind mounta i postavite `CLI_CONFIG_HOME` (compose profil `host`). Svaka naredba `setup-*`, kao i `omniroute configure` i `omniroute config set`, prihvata `--allow-container-write` kada zaista želite konfigurirati CLI-jeve unutar samog kontejnera; `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true` čini isto za server. Pogledajte [Docker vodič → Konfiguriranje CLI alata na hostu](../guides/DOCKER_GUIDE.md#configuring-host-cli-tools-when-omniroute-runs-in-docker). **Krajnja tačka za primjenu** na nadzornoj ploči (`POST /api/cli-tools/apply`) primjenjuje istu zaštitu: u kontejneru, zahtjev za zapisivanje čije odredište nije povezano s hosta putem bind mounta odgovara statusom **`422`** uz `containerEphemeralTarget: true`, siguran tekst greške i — za alate koji imaju recept za host (claude, codex, opencode, cline, kilo, continue) — `hostSetupCommand` (npr. `omniroute setup-opencode`) koji treba pokrenuti na hostu; ništa se ne zapisuje. `dryRun: true` nastavlja raditi u načinu rada kontejnera i vraća redigovani pregled + odredišnu putanju bez pristupa disku. Sadržaj pregleda nije konfiguracija s vjerodajnicama koju treba kopirati ili uvesti. Primijenite konfiguraciju s izvornim ulaznim vrijednostima za alat/osnovni URL/API ključ/model na hostu ili koristite naznačenu naredbu za postavljanje na hostu. Pogledajte [Sigurnost CLI konfiguracije](../security/CLI-CONFIGURATION.md) za zaglavlje pregleda i ugovor zahtjeva. Ovo ponašanje je namjerno i zaštićeno od regresija testom `tests/unit/api/cli-tools/apply-container-guard.test.ts` — nikada nemojte „popravljati“ 422 uklanjanjem zaštite. --- ## Izvor istine Objedinjeni katalog nalazi se u `src/shared/constants/cliTools.ts` kao `CLI_TOOLS: Record`. Svaki unos ima sljedeća polja (definirana u `src/shared/schemas/cliCatalog.ts`): | Polje | Tip | Opis | | ----------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------- | | `category` | `"code" \| "agent"` | Na kojoj se stranici alat prikazuje | | `vendor` | `string` | Porijeklo alata ("Anthropic", "OSS (P. Gauthier)") | | `acpSpawnable` | `boolean` | Može se koristiti i kao ACP agent (prikazuje se značka) | | `baseUrlSupport` | `"full" \| "partial" \| "none"` | Nivo podrške za prilagođenu krajnju tačku. `"none"` = MITM zaostatak | | `configType` | `"env" \| "custom" \| "guide" \| "custom-builder" \| "mitm"` | Mehanizam konfiguracije | | `id`, `name`, `color`, `description`, `docsUrl` | standard | Osnovna polja za prikaz | Unosi s `baseUrlSupport: "none"` se **ne prikazuju** na stranicama kontrolne ploče — registrirani su u MITM zaostatku za plan 11 (pogledajte `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md`). ### Nivoi mogućnosti (katalogizirano × prepoznatljivo × podesivo × pokretljivo) Nije svaki katalogizirani alat moguće prepoznati, podesiti ili pokrenuti. Svaki nivo ima jedan izvor deklaracije, a test odstupanja osigurava njihovu usklađenost: | Nivo | Značenje | Deklarirano u | | ------------------ | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | **Katalogizirano** | Pojavljuje se u katalogu kontrolne ploče (naziv, dobavljač, dokumentacija, tip konfiguracije) | `src/shared/constants/cliTools.ts` (`CLI_TOOLS`) | | **Prepoznatljivo** | Prepoznavanje binarne datoteke/konfiguracije, provjere ispravnosti, putanje konfiguracije | `src/shared/services/cliRuntime.ts` (`CLI_TOOLS` katalog izvršnog okruženja) | | **Podesivo** | Podržano putem `omniroute configure ` (postoji recept za postavljanje) | `bin/cli/cli-manifest.mjs` (`configure: true`) | | **Pokretljivo** | Podržano putem `omniroute run ` (definirano umetanje varijabli okruženja/argumenata) | `bin/cli/cli-manifest.mjs` (`run: true`) | `bin/cli/cli-manifest.mjs` je kanonski izvršni manifest za površine CLI naredbi: `run`, `configure` i generatori automatskog dovršavanja u ljusci iz njega izvode svoje liste ciljeva, razrješavanje aliasa (naprimjer `kilocode`/`kilo-code`/`kilo_cli` → `kilo`) i povezivanje zastavice `--model`. Zaštita od odstupanja `tests/unit/cli/cli-manifest-drift.test.ts` potvrđuje da manifest, katalog izvršnog okruženja, UI katalog i svaka potrošačka površina ostaju usklađeni — cilj dodan na jednu površinu bez ostalih uzrokuje pad testnog skupa umjesto tihog odstupanja. --- ## 1. Katalog CLI Codea (27 alata) Svi alati koji se pojavljuju u `/dashboard/cli-code`. Oni s vrijednošću `baseUrlSupport: none` povezani su putem MITM-a ili ručnog vodiča umjesto prilagođenog osnovnog URL-a: | 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 | Alati s vrijednošću `baseUrlSupport: "partial"` prikazuju oznaku "⚠ Djelimični osnovni URL" na kartici kontrolne ploče. --- ## 2. Katalog CLI agenata (10 alata) Autonomni agenti koji se pojavljuju na `/dashboard/cli-agents`: | id | naziv | dobavljač | podrška za baseUrl | moguće pokretanje putem ACP-a | | ------------ | ---------------- | ------------------------ | ------------------ | ----------------------------- | | 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 agenti (/dashboard/acp-agents) Ova stranica (preimenovana iz `/dashboard/agents`) prikazuje CLI-je koje OmniRoute može **pokrenuti** kao pozadinske izvršne mehanizme putem stdio/ACP protokola. Katalog se zasebno održava u `src/lib/acp/registry.ts` i **nije** isti kao `CLI_TOOLS`. --- ## 4. MITM lista neriješenih stavki (nije prikazana na kontrolnoj tabli) Sljedeći CLI-jevi izvorno ne podržavaju prilagođeni osnovni URL i **nisu navedeni** na stranicama CLI Code ili CLI Agents. Oni su kandidati za MITM presretanje u planu 11: | CLI | Razlog | | ------------------- | -------------------------------------------------------------------- | | windsurf | BYOK je ograničen na odabrane Claude modele + korporativni URL/token | | amp | Zatvoreni ekosistem (Sourcegraph) | | amazon-q / kiro-cli | AWS SSO autentifikacija, bez prilagođenog URL-a | | cowork | Anthropic Desktop, bez podesive krajnje tačke | Za potpunu unakrsnu referencu pogledajte `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md`. --- ## 5. API za grupnu detekciju Detekcija svih alata objedinjena je putem jedne krajnje tačke: **`GET /api/cli-tools/all-statuses`** - Autentifikacija: `requireCliToolsAuth(request)` (isto kao i za druge `/api/cli-tools/` rute) - Vraća: `Record` (tip: `src/shared/types/cliBatchStatus.ts`) - Strategija: `Promise.all` nad svim alatima, vremensko ograničenje od 5 s po alatu - Keš: LRU u memoriji indeksiran prema `mtime` konfiguracijske datoteke. Keš se poništava kada se `mtime` promijeni. Resetuje se pri ponovnom pokretanju servera. Struktura odgovora za svaki alat: ```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; // sanitizirano, bez praćenja steka } ``` --- ## 6. Rukovatelji postavkama za nove alate Novi alati sa `configType: "custom"` imaju namjenske API rute za postavke: | 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, zastarjelo) | | `POST /api/cli-tools/codewhale-settings` | CodeWhale (OPENAI_BASE_URL, primarno + zastarjela `~/.deepseek` sinhronizacija) | | `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` + namjenski `.env` ključ) | Sve rute koriste `sanitizeErrorMessage()` za odgovore o greškama (strogo pravilo br. 12). --- ## 7. Arhitektura stranica kontrolne ploče ### 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 s detaljima alata - `src/app/(dashboard)/dashboard/cli-code/components/` — 12 specijaliziranih 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 (premještena iz `agents/`) ### Zajedničke UI komponente (`src/shared/components/cli/`) | Datoteka | Namjena | | ----------------------- | --------------------------------------------------------------------- | | `CliToolCard.tsx` | Pametna statusna kartica (otkrivanje + konfiguracija + krajnja tačka) | | `CliConceptCard.tsx` | Kartica s objašnjenjem koncepta za svaku stranicu | | `CliComparisonCard.tsx` | Poređenje u tri kolone između CLI tipova | | `BaseUrlSelect.tsx` | Padajući meni krajnjih tačaka (lokalna/oblak/prilagođena) | | `ApiKeySelect.tsx` | Selektor API ključa | | `ManualConfigModal.tsx` | Modalni prozor s isječkom konfiguracije koji se može kopirati | ### Zajednički hook (`src/shared/hooks/cli/`) | Datoteka | Namjena | | ------------------------- | ------------------------------------------------------------------------------- | | `useToolBatchStatuses.ts` | Dohvata `/api/cli-tools/all-statuses`, upravlja stanjem učitavanja/osvježavanja | --- ## 8. i18n Novi imenski prostori dodani u planu 14 F9: | Imenski prostor | Namjena | | --------------- | --------------------------------------------------------------------------------------------- | | `cliCommon` | Zajednički nizovi (oznake kartica, tekstovi koncepata/poređenja, oznake stranice s detaljima) | | `cliCode` | Nizovi stranice CLI Code | | `cliAgents` | Nizovi stranice CLI Agents | | `acpAgents` | Nizovi stranice ACP Agents | Dostupni su potpuni prijevodi za PT-BR i EN. Ostalih 39 lokalizacija automatski koristi EN kao rezervni jezik putem spajanja na nivou imenskog prostora u `src/i18n/request.ts`. --- ## 9. Brzi početak ### Korak 1 — Nabavite OmniRoute API ključ 1. Otvorite `/dashboard/api-manager` → **Kreiraj API ključ** 2. Dodijelite mu naziv (npr. `cli-tools`) i odaberite sve dozvole 3. Kopirajte ključ — trebat će vam za svaki CLI u nastavku > Vaš ključ izgleda ovako: `sk-xxxxxxxxxxxxxxxx-xxxxxxxxx` --- ### Korak 2 — Instalirajte CLI alate Svi alati zasnovani na npm-u zahtijevaju Node.js 22.22.2+ ili 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 (može se pokrenuti putem `omniroute run gemini` → /v1beta sučelje) npm install -g @google/gemini-cli # Aider pip install aider-chat # Smelt cargo install smelt # Zasnovan na Rustu # Pi agent za programiranje # pogledajte https://github.com/zechnerj/pi-coding-agent za instalaciju # jcode # pogledajte https://github.com/1jehuang/jcode za instalaciju ``` --- ### Korak 3 — Konfigurišite putem kontrolne ploče 1. Idite na `http://localhost:20128/dashboard/cli-code` 2. Pronađite svoj alat u mreži 3. Kliknite karticu da otvorite stranicu s detaljima alata 4. Odaberite svoj API ključ i osnovni URL 5. Kliknite **Primijeni konfiguraciju** ili kopirajte isječak za ručnu konfiguraciju --- ### Korak 4 — Postavite globalne varijable okruženja ```bash # Univerzalna krajnja tačka OmniRoutea 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 čita GOOGLE_GEMINI_BASE_URL u KORIJENU (njegov SDK sam dodaje /v1beta/...) export GOOGLE_GEMINI_BASE_URL="http://localhost:20128" export GEMINI_API_KEY="sk-your-omniroute-key" ``` > Za **udaljeni server** zamijenite `localhost:20128` IP adresom ili domenom servera, > npr. `http://:20128`. --- ### Korak 4 — Konfigurišite svaki alat #### Claude Code ```bash # Kreirajte ~/.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 ``` Koristite korijen objedinjenog Anthropic pristupnika za Claude Code. Ovdje nemojte dodavati `/v1`. **Test:** `claude "say hello"` --- #### OpenAI Codex Moderni Codex (v0.137+) čita samo `~/.codex/config.toml` — stari `config.yaml` pripada zastarjelom npm CLI-ju i zanemaruje se bez upozorenja. API ključ ostaje u varijabli okruženja `OMNIROUTE_API_KEY` (`env_key`), nikada unutar datoteke: ```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" ``` Potpuna referenca (profili, `wire_api`, kontekstni prozori): [CODEX-CLI-CONFIGURATION.md](../guides/CODEX-CLI-CONFIGURATION.md). **Test:** `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 ``` **Test:** `opencode` > Koristite `opencode run "your prompt" --model omniroute/claude-sonnet-4-5-thinking --variant high` > za slanje varijanti s razmišljanjem. --- #### Cline (CLI ili VS Code) **CLI način rada:** ```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 način rada:** Postavke proširenja Cline → API Provider: `OpenAI Compatible` → Base URL: `http://localhost:20128/v1` Ili koristite kontrolnu ploču OmniRoute → **CLI alati → Cline → Primijeni konfiguraciju**. --- #### KiloCode (CLI ili VS Code) **CLI način rada:** ```bash kilocode --api-base http://localhost:20128/v1 --api-key sk-your-omniroute-key ``` **VS Code postavke:** ```json { "kilo-code.openAiBaseUrl": "http://localhost:20128/v1", "kilo-code.apiKey": "sk-your-omniroute-key" } ``` Ili koristite kontrolnu ploču OmniRoute → **CLI alati → KiloCode → Primijeni konfiguraciju**. --- #### Continue (VS Code proširenje) Uredite `~/.continue/config.yaml`: ```yaml models: - name: OmniRoute provider: openai model: auto apiBase: http://localhost:20128/v1 apiKey: sk-your-omniroute-key default: true ``` Ponovo pokrenite VS Code nakon uređivanja. --- #### VS Code Insiders (`chatLanguageModels.json`) Koristite ovo kada je VS Code Insiders konfigurisan za modele prilagođenih krajnjih tačaka i želite da OmniRoute radi bez prilagođenog polja zaglavlja. **Preporučena lokacija:** - Linux: `~/.config/Code - Insiders/User/chatLanguageModels.json` - Windows: `%APPDATA%/Code - Insiders/User/chatLanguageModels.json` **Primjer korištenja tokeniziranog OmniRoute aliasa:** ```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" } } ] ``` **Napomene:** - Zamijenite `sk-your-omniroute-key` API ključem kreiranim u OmniRouteu. - Polje `url` treba upućivati na `/api/v1/vscode/{token}/chat/completions`. - Polje `modelsUrl` treba upućivati na `/api/v1/vscode/{token}/models`. - Dajte prednost standardnom toku `/v1` + Bearer zaglavlje kada klijent podržava prilagođena zaglavlja. - Tokeni ugrađeni u URL predstavljaju rezervno rješenje za kompatibilnost i mogu se pojaviti u zapisnicima uređivača ili historiji proxyja. --- #### Kiro CLI (Amazon) ```bash # Prijavite se na svoj AWS/Kiro račun: kiro-cli login # CLI koristi vlastitu autentifikaciju — OmniRoute nije potreban kao pozadinski sistem za sam Kiro CLI. # Koristite kiro-cli uz OmniRoute za druge alate. kiro-cli status ``` Za desktop aplikaciju **Kiro IDE** koristite MITM krajnju tačku koju OmniRoute izlaže na `/dashboard/cli-tools → Kiro`. --- ## 10. Interni OmniRoute CLI Binarna datoteka `omniroute` pruža komande za životni ciklus servera, postavljanje, dijagnostiku i upravljanje pružaocima usluga. Ulazna tačka: `bin/omniroute.mjs`. ```bash omniroute # Pokreni server (zadani port 20128) omniroute setup # Interaktivni čarobnjak za postavljanje omniroute doctor # Provjeri konfiguraciju, bazu podataka, portove i okruženje za izvršavanje omniroute providers list # Konfigurirane veze s pružaocima usluga omniroute providers test-all # Testiraj svaku aktivnu vezu omniroute reset-password # Ponovo postavi administratorsku lozinku omniroute logs # Prati zapisnike zahtjeva omniroute health # Detaljno stanje (prekidači, keš, memorija) omniroute --version # Prikaži verziju omniroute --help # Prikaži sve komande ``` ### Postavljanje i inicijalizacija ```bash omniroute setup # Interaktivni čarobnjak za postavljanje omniroute setup --non-interactive # Režim za CI/automatizaciju (čita varijable okruženja + zastavice) omniroute setup --password '' # Direktno postavi administratorsku lozinku omniroute setup --add-provider \ --provider openai \ --api-key '' \ --test-provider # Dodaj i testiraj pružaoca usluga u jednom koraku ``` Prepoznate varijable okruženja za neinteraktivno postavljanje: | Varijabla | Namjena | | ------------------- | -------------------------------------------------------------------------- | | `OMNIROUTE_API_KEY` | API ključ pružaoca (povezan s `--api-key` putem Commander metode `.env()`) | | `DATA_DIR` | Nadjačava direktorij podataka za OmniRoute | Svi ostali neinteraktivni ulazni podaci prosljeđuju se kao zastavice, a ne kao varijable okruženja: `--password`, `--provider`, `--provider-name`, `--provider-base-url`, `--default-model` (pogledajte opcije za `omniroute setup` iznad). ### Dijagnostika ```bash omniroute doctor # Provjeri konfiguraciju, bazu podataka, portove, okruženje za izvršavanje, memoriju i dostupnost omniroute doctor --json # Mašinski čitljiv JSON omniroute doctor --no-liveness # Preskoči HTTP provjeru stanja omniroute doctor --host 0.0.0.0 # Nadjačaj host za provjeru dostupnosti omniroute doctor --liveness-url # Nadjačaj puni URL krajnje tačke stanja ``` Doctor izvršava sljedeće provjere: `Config`, `Database`, `Storage/encryption`, `Port availability`, `Node runtime`, `Native binary` (better-sqlite3), `Memory` i `Server liveness`. Završava s izlaznim kodom različitim od nule ako je bilo koja provjera označena kao `fail`. ### Upravljanje pružaocima usluga ```bash omniroute providers available # Katalog OmniRoute pružalaca usluga omniroute providers available --search openai # Filtriraj katalog prema ID-u/nazivu/aliasu/kategoriji omniroute providers available --category api-key # Filtriraj prema kategoriji (api-key, oauth, free, ...) omniroute providers available --json # Mašinski čitljiv JSON omniroute providers list # Konfigurirane veze s pružaocima usluga omniroute providers list --json omniroute providers test # Testiraj jednu konfiguriranu vezu omniroute providers test-all # Testiraj svaku aktivnu vezu omniroute providers validate # Strukturna validacija samo lokalno omniroute providers add --credential-env PROVIDER_KEY omniroute providers import ./providers.json --dry-run --json omniroute providers auth # Postojeći OAuth tok omniroute providers edit --default-model omniroute providers remove --yes ``` `providers add/import/auth/edit/remove` prvenstveno koriste API i stoga rade s aktivnim lokalnim ili udaljenim kontekstom. Za unos vjerodajnica treba koristiti `--credential-stdin` ili `--credential-env`; `--dry-run --json` prikazuje samo redigirane podatke o prisutnosti/strukturi. `providers available` čita OmniRoute katalog; `providers list/test/test-all/validate` zadržavaju svoje lokalno SQLite ponašanje i ne zahtijevaju da server bude pokrenut. Za prilagođeni čvor kompatibilan s OpenAI ili Anthropic sistemom, pridružite vjerodajnice ID-u čvora koji vrati `omniroute nodes add`, koristeći `omniroute keys add "$NODE_ID" --stdin`. Ovo zahtijeva pokrenut server i autentifikaciju za upravljanje aktivnim kontekstom. CLI koristi `POST /api/providers`, koji validira čvor i kopira njegove postavke krajnje tačke u vezu. Nepostojeći čvor, neuspjela autorizacija ili nedostupan server vraćaju grešku bez kreiranja rezervne lokalne vjerodajnice. `nodes add --base-url` postavlja krajnju tačku čvora; ona se razlikuje od adrese servera u `OMNIROUTE_BASE_URL`. Za OpenAPI datoteke koristite `omniroute openapi dump --format json --out ./openapi.json`; globalna opcija `--output` odabire format prikaza CLI-ja, a ne naziv odredišne datoteke. ### Oporavak i ponovno postavljanje ```bash omniroute reset-password # Ponovo postavi administratorsku lozinku (također: omniroute-reset-password) omniroute reset-encrypted-columns # Prikaži upozorenje + probno izvršavanje za ponovno postavljanje šifriranih vjerodajnica omniroute reset-encrypted-columns --force # Zaista postavi šifrirane vjerodajnice u SQLite-u na null ``` ### Izvoz vjerodajnica (⚠ rukujte pažljivo) ```bash omniroute auth export # Prikaži upozorenje + zahtjev za potvrdu — bez pristupa bazi podataka omniroute auth export --force # Izvezi DEŠIFRIRANE vjerodajnice SVIH veza u stdout kao JSON omniroute auth export --force --id # Izvezi samo odgovarajuću vezu omniroute auth export --force --format env # Ispiši redove OMNIROUTE__= omniroute auth export --force --out creds.json # Zapiši u datoteku (kreiranu s dozvolama 0600) ``` `auth export` je **isključivo lokalna** operacija (direktno čitanje SQLite baze, bez HTTP rute) i namjerno ispisuje/zapisuje vrijednosti `apiKey`/`accessToken`/`refreshToken`/`idToken` kao **otvoreni tekst** — to je funkcionalnost, a ne greška. Ništa se ne čita iz baze podataka i ništa se ne dešifrira bez opcije `--force`. Baner s upozorenjem uvijek se ispisuje na stderr prije emitovanja bilo kakvog otvorenog teksta. Zahtijeva da `STORAGE_ENCRYPTION_KEY` bude postavljen. Polje čije dešifriranje ne uspije (zastarjeli ključ, oštećen šifrirani tekst) prijavljuje se kao `DecryptFailed: true` umjesto prekidanja cijelog izvoza ili otkrivanja osnovne greške. ### Ostale potkomande One podrazumijevaju pokrenut OmniRoute server, osim ako nije drugačije navedeno: ```bash omniroute status # Sveobuhvatan status izvršavanja omniroute logs # Prati zapisnike zahtjeva (--json, --search, --follow) omniroute config list # Prikaži konfigurirane CLI alate omniroute provider list # Prikaži dostupne pružaoce (pseudonim za providers list) omniroute provider add # Registruj OmniRoute kao pružaoca u alatu omniroute keys add | list | remove # Upravljaj API ključevima omniroute models [provider] # Prikaži modele (--json, --search) omniroute combo list | switch | create | delete omniroute backup # Napravi snimak konfiguracije + baze podataka omniroute restore # Obnovi iz prethodnog snimka omniroute health # Detaljno stanje (prekidači, keš, memorija) omniroute quota # Iskorištenost kvote pružaoca omniroute cache # Status keša omniroute cache clear # Očisti semantički keš + keš potpisa omniroute mcp status | restart # Status / ponovno pokretanje MCP servera omniroute a2a status | card # Status A2A servera / kartica agenta omniroute tunnel list | create | stop # Upravljaj tunelima (cloudflare/tailscale/ngrok) omniroute env show | get | set # Pregledaj / postavi varijable okruženja (privremeno) omniroute test # Brzi test povezivosti pružaoca omniroute update # Provjeri postoje li ažuriranja omniroute completion # Generiši dovršavanje naredbi ljuske ``` ### Uobičajene opcije | Opcija | Opis | | ------------------- | ---------------------------------------------------- | | `--no-open` | Ne otvaraj automatski preglednik pri pokretanju | | `--port ` | Promijeni API port (zadano 20128) | | `--mcp` | Pokreni kao MCP server putem stdio (za IDE-ove) | | `--non-interactive` | CI način rada (bez upita; čita iz okruženja/opcija) | | `--json` | Mašinski čitljiv JSON izlaz (doctor, providers itd.) | | `--help`, `-h` | Prikaži pomoć specifičnu za naredbu | | `--version`, `-v` | Ispiši instaliranu verziju | --- ## Dostupne API krajnje tačke | Krajnja tačka | Opis | Koristi se za | | -------------------------- | ------------------------------ | ------------------------------------ | | `/v1/chat/completions` | Standardni chat (svi pružaoci) | Sve moderne alate | | `/v1/responses` | Responses API (OpenAI format) | Codex, agentske radne tokove | | `/v1/completions` | Zastarjelo dovršavanje teksta | Starije alate koji koriste `prompt:` | | `/v1/embeddings` | Ugrađivanje teksta | RAG, pretragu | | `/v1/images/generations` | Generisanje slika | GPT-Image, Flux itd. | | `/v1/audio/speech` | Pretvaranje teksta u govor | ElevenLabs, OpenAI TTS | | `/v1/audio/transcriptions` | Pretvaranje govora u tekst | Deepgram, AssemblyAI | Primjeri spremni za lijepljenje s tokeniziranim OmniRoute URL-om: ```txt Primjer tokena: sk-a3ab3c080beaee3a-69f4a4-070d71af Standardna OpenAI baza: http://localhost:20128/v1 VS Code modeli: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/models VS Code chat: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/chat/completions VS Code odgovori: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/responses Ollama oznake: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/tags Ollama chat: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/chat ``` --- ## Rješavanje problema | Greška | Uzrok | Rješenje | | ---------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- | | `Connection refused` | OmniRoute nije pokrenut | `omniroute serve` | | `401 Unauthorized` | Pogrešan API ključ | Provjerite u `/dashboard/api-manager` | | `No combo configured` | Nema aktivne kombinacije usmjeravanja | Postavite je u `/dashboard/combos` | | CLI prikazuje "not installed" | Binarna datoteka nije u PATH-u | Provjerite `which ` | | Kontrolna ploča prikazuje "not detected" nakon instalacije | Keš je zastario | Kliknite "⟳ Refresh detection" na kontrolnoj ploči | | Stari link `/dashboard/cli-tools` | Oznaka prije v3.8.6 | Automatski preusmjereno na `/dashboard/cli-code` (308) | | Stari link `/dashboard/agents` | Oznaka prije v3.8.6 | Automatski preusmjereno na `/dashboard/acp-agents` (308) | ## Upravljanje pravilima ključa za zaključivanje pomoću OmniRoute CLI-ja Koristite autentificirani kontekst upravljanja (pogledajte [Udaljeni način rada](../guides/REMOTE-MODE.md)) da biste pregledali ili ažurirali postojeći ključ za zaključivanje prema njegovom ID-u: ```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` je alias za `--model-access-mode all`. Ažuriranjem se briše lista dozvoljenih modela. Opsezi, pravila povezivanja, blokirani modeli, ograničenja stope i ograničenja troškova ostaju sačuvani, pa te druge kontrole i dalje mogu odbiti zahtjev. Eksplicitno `--allowed-models ""` također odabire `all`; kombinujte ga s `--model-access-mode restricted` da biste zadržali ograničeni ključ bez dozvoljenih modela. Neprazna lista odvojena zarezima odabire `restricted`, osim ako nije eksplicitno navedeno drugačije. Kontradiktorna kombinacija `all` i neprazne liste dozvoljenih modela odbija se prije slanja zahtjeva. `--rate-limit 30` postavlja broj zahtjeva po minuti i čuva pravila za druge vremenske periode. `--max-cost 5` omogućava dnevno ograničenje u USD bez mijenjanja sedmičnog ograničenja; `--max-cost 0` uklanja dnevno ograničenje i čuva postojeću postavku ograničenja korištenja i sedmično ograničenje. Izostavljena polja pravila ostaju nepromijenjena. Promjene stope prvo čitaju trenutna pravila; izbjegavajte istovremeno uređivanje niza ograničenja stope za isti ključ. Komande za pravila koriste autentificirane `GET`/`PATCH /api/keys/{id}` zahtjeve i poštuju aktivni kontekst i globalnu opciju `--api-key`. JSON izlaz sadrži samo polja pravila, bez pohranjenog ključa ili njegovog maskiranog prikaza. Vjerodajnica namijenjena samo za zaključivanje ne može autorizovati promjene upravljanja. Odgovor 401/403 zahtijeva provjeru upravljačke vjerodajnice i konteksta; on ne potvrđuje grešku lokalnog CLI tokena ili salta. Pogledajte [CLI token](../security/CLI_TOKEN.md) za zaseban ugovor lokalne autentifikacije.