# CLI Tools — OmniRoute (Suomi) 🌐 **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) · 🇫🇷 [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) --- Päivitetty viimeksi: 2026-08-23 OmniRoute integroituu kolmeen CLI-työkaluluokkaan, jotka on jaettu kolmelle erilliselle hallintapaneelin sivulle: | Sivu | Reitti | Konsepti | Määrä | | --------------- | ----------------------- | -------------------------------------------------------------------------------------------- | --------------- | | **CLI-koodit** | `/dashboard/cli-code` | Koodaustyökalut, jotka osoitat OmniRouteen (asiakas → CLI → OmniRoute → palveluntarjoaja) | 26 | | **CLI-agentit** | `/dashboard/cli-agents` | Autonomiset agentit, jotka osoitat OmniRouteen (sama kulku, laajempi käyttöalue) | 10 | | **ACP-agentit** | `/dashboard/acp-agents` | CLI:t, jotka OmniRoute käynnistää taustajärjestelmäksi stdio/ACP:n kautta (käänteinen kulku) | katso rekisteri | Vanhat reitit uudelleenohjataan 308-vastauksella: `/dashboard/cli-tools` → `/dashboard/cli-code`, `/dashboard/agents` → `/dashboard/acp-agents`. --- ## Toimintaperiaate ``` CLI-koodit / CLI-agentit (käyttökulku): Claude / Codex / OpenCode / Cline / KiloCode / Continue / Hermes Agent / Goose / ... │ ▼ (kaikki osoittavat OmniRouteen) http://YOUR_SERVER:20128/v1 │ ▼ (OmniRoute reitittää oikealle palveluntarjoajalle) Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ... ACP-agentit (käänteinen käynnistyskulku): Asiakaspyyntö → OmniRoute → käynnistää CLI:n stdio/ACP:n kautta → vastaus ``` **Hyödyt:** - Yksi API-avain kaikkien työkalujen hallintaan - Kaikkien CLI:iden kustannusseuranta hallintapaneelissa - Mallin vaihtaminen ilman jokaisen työkalun uudelleenmääritystä - Toimii paikallisesti ja etäpalvelimilla (VPS, Docker, Akamai, Cloudflare Tunnel) --- ## Automaattinen määritys `setup-*`-komennoilla Sinun ei tarvitse kirjoittaa jokaisen työkalun määrityksiä käsin. OmniRoute sisältää tuettua CLI:tä kohden `setup-*`-komennon, joka lukee **reaaliaikaisen** malliluettelon käynnissä olevasta OmniRoute-instanssista (paikallisesta tai etäpalvelimella olevasta) ja kirjoittaa työkalun oman määrityksen koneellesi: ```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 ``` Jokainen niistä hyväksyy valinnat `--remote --api-key ` (paikallisen työkalun määritys etäpalvelimella olevaa OmniRoutea varten), `--dry-run` (esikatselu ilman kirjoittamista) ja `--port`. Työkalut, joissa ei ole automaattista mallien tunnistusta (Cline, Kilo, Roo, Goose, Aider, Qwen, 5dive), hyväksyvät valinnan `--model ` (sekä `--yes`-valinnan ei-interaktiivisia suorituksia varten). `setup-5dive` on ainoa määritys, joka ei kirjoita `$HOME`-hakemiston alle: se määrittää 5dive-agenttijoukon kirjoittamalla pääkäyttäjän omistaman todennusprofiilin joukon isäntäkoneelle, joten se suorittaa itsensä uudelleen `sudo`-komennolla eikä sisällä omaa etätilaa. Jos haluat käynnistää CLI:n siten, että oikeat ympäristömuuttujat lisätään eikä määrityksiä kirjoiteta lainkaan, käytä yleistä `omniroute run `-käynnistintä (claude, codex, aider, goose, opencode, qwen, gemini — kohteet ja aliakset tulevat tiedostosta `bin/cli/cli-manifest.mjs`); vanhat työkalukohtaiset käynnistimet `omniroute launch` (Claude Code) ja `omniroute launch-codex` (Codex) ovat edelleen käytettävissä. Gemini CLI voidaan vain käynnistää: se on `omniroute run`-kohde, mutta sille ei ole `setup-*`/`configure`-määritystä. > **Täydellinen viite:** päätaulukko — mitä kukin komento kirjoittaa, kaikki valinnat, > paikallinen ja etäkäyttö sekä mitkä työkalut edellyttävät `/v1`-päätettä — löytyy oppaasta > **[CLI-integraatiot](../guides/CLI-INTEGRATIONS.md)**. ### Näiden suorittaminen säilössä OmniRoute-säilössä suoritettu `setup-*`-komento kirjoittaa säilön omaan kotihakemistoon, jota mikään isäntäkoneen CLI ei lue ja joka katoaa säilön mukana. OmniRoute tunnistaa tämän ja lopettaa tilakoodilla `2` sekä näyttää ohjeet kirjoittamisen sijaan. Tuettuja etenemistapoja on kaksi — asenna CLI isäntäkoneelle ja muodosta yhteys säilöön komennolla `omniroute connect`, tai liitä määrityshakemistot bind-liitoksina ja aseta `CLI_CONFIG_HOME` (Compose-profiili `host`). Jokainen `setup-*`-komento sekä `omniroute configure` ja `omniroute config set` hyväksyvät valinnan `--allow-container-write`, kun tarkoituksena on todella määrittää säilön omat CLI:t; `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true` tekee saman palvelimelle. Katso [Docker-opas → Isäntäkoneen CLI-työkalujen määrittäminen](../guides/DOCKER_GUIDE.md#configuring-host-cli-tools-when-omniroute-runs-in-docker). Hallintapaneelin **käyttöönottopäätepiste** (`POST /api/cli-tools/apply`) käyttää samaa suojausta: jos kirjoituskohdetta ei ole säilössä liitetty bind-liitoksena isäntäkoneelta, pyyntöön vastataan tilakoodilla **`422`**, arvolla `containerEphemeralTarget: true`, turvallisella virhetekstillä sekä — niiden työkalujen kohdalla, joille on isäntäkoneen määritys (claude, codex, opencode, cline, kilo, continue) — isäntäkoneella suoritettavalla `hostSetupCommand`-komennolla (esim. `omniroute setup-opencode`); mitään ei kirjoiteta. `dryRun: true` toimii edelleen säilötilassa ja palauttaa peitetyn esikatselun sekä kohdepolun koskematta levyyn. Esikatselun sisältö ei ole tunnistetietoja sisältävä määritys, jota voisi kopioida tai tuoda. Ota määritys käyttöön isäntäkoneella alkuperäisillä työkalu-, perus-URL-, API-avain- ja mallisyötteillä tai käytä ilmoitettua isäntäkoneen määrityskomentoa. Katso esikatseluotsikko ja pyyntösopimus kohdasta [CLI-määritysten tietoturva](../security/CLI-CONFIGURATION.md). Tämä toiminta on tarkoituksellista, ja sitä suojataan regressioilta testillä `tests/unit/api/cli-tools/apply-container-guard.test.ts` — älä koskaan "korjaa" 422-vastausta poistamalla suojausta. --- ## Totuuden lähde Yhtenäinen luettelo sijaitsee tiedostossa `src/shared/constants/cliTools.ts` nimellä `CLI_TOOLS: Record`. Jokaisella merkinnällä on seuraavat kentät (määritelty tiedostossa `src/shared/schemas/cliCatalog.ts`): | Kenttä | Tyyppi | Kuvaus | | ----------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------- | | `category` | `"code" \| "agent"` | Sivu, jolla työkalu näkyy | | `vendor` | `string` | Työkalun alkuperä ("Anthropic", "OSS (P. Gauthier)") | | `acpSpawnable` | `boolean` | Käytettävissä myös ACP-agenttina (tunnus näytetään) | | `baseUrlSupport` | `"full" \| "partial" \| "none"` | Mukautetun päätepisteen tuen taso. `"none"` = MITM-jono | | `configType` | `"env" \| "custom" \| "guide" \| "custom-builder" \| "mitm"` | Määritysmekanismi | | `id`, `name`, `color`, `description`, `docsUrl` | standard | Näytettävät ydinkentät | Merkintöjä, joiden `baseUrlSupport: "none"`, **ei näytetä** hallintapaneelin sivuilla — ne on rekisteröity suunnitelman 11 MITM-jonoon (katso `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md`). ### Ominaisuustasot (luetteloitu × tunnistettava × määritettävä × käynnistettävä) Kaikki luetteloidut työkalut eivät ole tunnistettavissa, määritettävissä tai käynnistettävissä. Kullakin tasolla on yksi määrittävä lähde, ja poikkeamatesti pitää ne yhdenmukaisina: | Taso | Merkitys | Määrittelypaikka | | ------------------ | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | **Luetteloitu** | Näkyy hallintapaneelin luettelossa (nimi, toimittaja, ohjeet, määritystyyppi) | `src/shared/constants/cliTools.ts` (`CLI_TOOLS`) | | **Tunnistettava** | Binääri-/määritystunnistus, kuntotarkistukset, määrityspolut | `src/shared/services/cliRuntime.ts` (`CLI_TOOLS`-ajonaikainen luettelo) | | **Määritettävä** | Komennon `omniroute configure ` tukema (asennusresepti on olemassa) | `bin/cli/cli-manifest.mjs` (`configure: true`) | | **Käynnistettävä** | Komennon `omniroute run ` tukema (ympäristö-/argumenttisyöttö määritelty) | `bin/cli/cli-manifest.mjs` (`run: true`) | `bin/cli/cli-manifest.mjs` on CLI-komentorajapintojen ensisijainen suoritettava manifesti: `run`, `configure` ja komentotulkkien täydennysgeneraattorit johtavat kaikki kohdeluettelonsa, aliasten selvityksen (esimerkiksi `kilocode`/`kilo-code`/`kilo_cli` → `kilo`) ja `--model`-lipun kytkennät siitä. Poikkeamavahti `tests/unit/cli/cli-manifest-drift.test.ts` varmistaa, että manifesti, ajonaikainen luettelo, käyttöliittymäluettelo ja kaikki kuluttavat rajapinnat pysyvät synkronoituina — yhdelle rajapinnalle ilman muita lisätty kohde aiheuttaa testikokonaisuuden epäonnistumisen sen sijaan, että järjestelmät ajautuisivat huomaamatta erilleen. --- ## 1. CLI Coden työkaluluettelo (26 työkalua) Kaikki työkalut, jotka näkyvät sivulla `/dashboard/cli-code`. Työkalut, joiden `baseUrlSupport: none`, on yhdistetty MITM:n tai manuaalisen oppaan avulla mukautetun perus-URL-osoitteen sijaan: | 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 | | 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 | Mukautettu CLI | — | full | custom-builder | false | Työkaluissa, joiden `baseUrlSupport: "partial"`, näkyy hallintapaneelin kortissa tunnus "⚠ Osittainen perus-URL". --- ## 2. CLI-agenttien luettelo (10 työkalua) Autonomiset agentit, jotka näkyvät sivulla `/dashboard/cli-agents`: | id | name | vendor | baseUrlSupport | acpSpawnable | | ------------ | ---------------- | ------------------------ | -------------- | ------------ | | 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-agentit (/dashboard/acp-agents) Tällä sivulla (aiemmin `/dashboard/agents`) näkyvät CLI:t, jotka OmniRoute voi **käynnistää** taustajärjestelmän suorituskoneina stdio/ACP-protokollan kautta. Luetteloa ylläpidetään erikseen tiedostossa `src/lib/acp/registry.ts`, eikä se ole sama kuin `CLI_TOOLS`. --- ## 4. MITM-tehtäväjono (ei näy hallintapaneelissa) Seuraavat CLI:t eivät tue mukautettua perus-URL-osoitetta natiivisti, eikä niitä ole **lueteltu** CLI Coden tai CLI Agentsin sivuilla. Ne ovat ehdokkaita MITM-välitykseen suunnitelmassa 11: | CLI | Syy | | ------------------- | -------------------------------------------------------------------------------------- | | windsurf | BYOK rajoittuu valittuihin Claude-malleihin sekä yrityksen URL-osoitteeseen/tunnukseen | | amp | Suljettu ekosysteemi (Sourcegraph) | | amazon-q / kiro-cli | AWS SSO -todennus, ei mukautettua URL-osoitetta | | cowork | Anthropic Desktop, ei määritettävää päätepistettä | Täydellinen ristiviittaus on tiedostossa `_tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md`. --- ## 5. Erätunnistuksen API Kaikkien työkalujen tunnistus on koottu yhteen päätepisteeseen: **`GET /api/cli-tools/all-statuses`** - Todennus: `requireCliToolsAuth(request)` (sama kuin muilla `/api/cli-tools/`-reiteillä) - Palauttaa: `Record` (tyyppi: `src/shared/types/cliBatchStatus.ts`) - Strategia: `Promise.all` kaikille työkaluille, 5 sekunnin aikakatkaisu työkalua kohden - Välimuisti: muistissa oleva LRU, joka on indeksoitu määritystiedoston `mtime`-arvon mukaan. Välimuisti mitätöidään, kun mtime muuttuu. Nollataan palvelimen uudelleenkäynnistyksen yhteydessä. Työkalukohtaisen vastauksen rakenne: ```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; // puhdistettu, ei pinonjäljityksiä } ``` --- ## 6. Uusien työkalujen asetusten käsittelijät Uusilla työkaluilla, joiden `configType: "custom"`, on omat asetusten API-reitit: | Reitti | Työkalu | | ------------------------------------------- | ---------------------------------------------------------------------------------------- | | `POST /api/cli-tools/forge-settings` | ForgeCode (.forge.toml) | | `POST /api/cli-tools/jcode-settings` | jcode (--base-url-lippu) | | `POST /api/cli-tools/deepseek-tui-settings` | DeepSeek TUI (OPENAI_BASE_URL, vanha) | | `POST /api/cli-tools/codewhale-settings` | CodeWhale (OPENAI_BASE_URL, ensisijainen + vanhan `~/.deepseek`-hakemiston synkronointi) | | `POST /api/cli-tools/smelt-settings` | Smelt | | `POST /api/cli-tools/pi-settings` | Pi-koodausagentti | | `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` + erillinen `.env`-avain) | Kaikki reitit käyttävät virhevastauksissa `sanitizeErrorMessage()`-funktiota (ehdoton sääntö #12). --- ## 7. Hallintapaneelin sivujen arkkitehtuuri ### CLI-koodit (`/dashboard/cli-code`) - `src/app/(dashboard)/dashboard/cli-code/page.tsx` — palvelinkomponentti - `src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx` — asiakaspuolen ruudukko - `src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx` — työkalun tietosivu - `src/app/(dashboard)/dashboard/cli-code/components/` — 12 erikoistunutta työkalukorttia + `ToolDetailClient.tsx` ### CLI-agentit (`/dashboard/cli-agents`) - `src/app/(dashboard)/dashboard/cli-agents/page.tsx` — palvelinkomponentti - `src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx` — asiakaspuolen ruudukko - `src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx` — käyttää uudelleen `ToolDetailClient`-komponenttia ### ACP-agentit (`/dashboard/acp-agents`) - `src/app/(dashboard)/dashboard/acp-agents/page.tsx` — palvelinkomponentti (siirretty `agents/`-hakemistosta) ### Jaetut käyttöliittymäkomponentit (`src/shared/components/cli/`) | Tiedosto | Tarkoitus | | ----------------------- | ---------------------------------------------------------- | | `CliToolCard.tsx` | Älykäs tilakortti (tunnistus + määritys + päätepiste) | | `CliConceptCard.tsx` | Sivukohtainen käsitteen selityskortti | | `CliComparisonCard.tsx` | Kolmen sarakkeen vertailu eri CLI-tyyppien välillä | | `BaseUrlSelect.tsx` | Päätepisteen pudotusvalikko (paikallinen/pilvi/mukautettu) | | `ApiKeySelect.tsx` | API-avaimen valitsin | | `ManualConfigModal.tsx` | Kopioitavan määrityskatkelman modaali-ikkuna | ### Jaettu hook (`src/shared/hooks/cli/`) | Tiedosto | Tarkoitus | | ------------------------- | ------------------------------------------------------------------------------------ | | `useToolBatchStatuses.ts` | Hakee `/api/cli-tools/all-statuses`-reitin tiedot ja hallitsee lataus-/päivitystilaa | --- ## 8. i18n Suunnitelmassa 14 F9 lisätyt uudet nimiavaruudet: | Nimiavaruus | Tarkoitus | | ----------- | ------------------------------------------------------------------------------------------- | | `cliCommon` | Jaetut merkkijonot (korttien otsikot, käsite- ja vertailutekstit sekä tietosivujen otsikot) | | `cliCode` | CLI Coden sivujen merkkijonot | | `cliAgents` | CLI Agents -sivun merkkijonot | | `acpAgents` | ACP Agents -sivun merkkijonot | Täydelliset PT-BR- ja EN-käännökset sisältyvät toimitukseen. 39 muuta kielialuetta käyttävät automaattisesti EN-käännöksiä nimiavaruustason yhdistämisen kautta tiedostossa `src/i18n/request.ts`. --- ## 9. Pika-aloitus ### Vaihe 1 — Hanki OmniRoute-API-avain 1. Avaa `/dashboard/api-manager` → **Luo API-avain** 2. Anna sille nimi (esim. `cli-tools`) ja valitse kaikki käyttöoikeudet 3. Kopioi avain — tarvitset sitä kaikissa alla olevissa CLI-työkaluissa > Avaimesi näyttää tältä: `sk-xxxxxxxxxxxxxxxx-xxxxxxxxx` --- ### Vaihe 2 — Asenna CLI-työkalut Kaikki npm-pohjaiset työkalut edellyttävät Node.js-versiota 22.22.2+ tai 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 (käynnistettävissä komennolla `omniroute run gemini` → /v1beta-rajapinta) npm install -g @google/gemini-cli # Aider pip install aider-chat # Smelt cargo install smelt # Rust-pohjainen # Pi-koodausagentti # katso asennusohjeet osoitteesta https://github.com/zechnerj/pi-coding-agent # jcode # katso asennusohjeet osoitteesta https://github.com/1jehuang/jcode ``` --- ### Vaihe 3 — Määritä hallintapaneelin kautta 1. Siirry osoitteeseen `http://localhost:20128/dashboard/cli-code` 2. Etsi työkalusi ruudukosta 3. Avaa työkalun tietosivu napsauttamalla korttia 4. Valitse API-avaimesi ja perus-URL-osoite 5. Napsauta **Ota määritykset käyttöön** tai kopioi manuaalinen määrityskatkelma --- ### Vaihe 4 — Aseta yleiset ympäristömuuttujat ```bash # OmniRouten yleinen päätepiste 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 lukee GOOGLE_GEMINI_BASE_URL-arvon JUURESTA (sen SDK lisää itse /v1beta/...-osan) export GOOGLE_GEMINI_BASE_URL="http://localhost:20128" export GEMINI_API_KEY="sk-your-omniroute-key" ``` > Jos käytät **etäpalvelinta**, korvaa `localhost:20128` palvelimen IP-osoitteella tai verkkotunnuksella, > esimerkiksi `http://:20128`. --- ### Vaihe 4 — Määritä kukin työkalu #### Claude Code ```bash # Luo ~/.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 ``` Käytä Claude Codessa yhdistetyn Anthropic-yhdyskäytävän juuriosoitetta. Älä lisää tähän `/v1`-osaa. **Testi:** `claude "say hello"` --- #### OpenAI Codex Moderni Codex (v0.137+) lukee ainoastaan tiedoston `~/.codex/config.toml` — vanha `config.yaml` kuuluu aiemmalle npm CLI -versiolle, ja se ohitetaan ilman ilmoitusta. API-avain säilytetään `OMNIROUTE_API_KEY`-ympäristömuuttujassa (`env_key`), eikä koskaan tiedoston sisällä: ```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" ``` Täydellinen viite (profiilit, `wire_api`, konteksti-ikkunat): [CODEX-CLI-CONFIGURATION.md](../guides/CODEX-CLI-CONFIGURATION.md). **Testi:** `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 ``` **Testi:** `opencode` > Lähetä päättelyvariantteja komennolla `opencode run "your prompt" --model omniroute/claude-sonnet-4-5-thinking --variant high`. --- #### Cline (CLI tai VS Code) **CLI-tila:** ```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 -tila:** Cline-laajennuksen asetukset → API Provider: `OpenAI Compatible` → Base URL: `http://localhost:20128/v1` Vaihtoehtoisesti käytä OmniRoute-hallintapaneelia → **CLI-työkalut → Cline → Ota määritykset käyttöön**. --- #### KiloCode (CLI tai VS Code) **CLI-tila:** ```bash kilocode --api-base http://localhost:20128/v1 --api-key sk-your-omniroute-key ``` **VS Code -asetukset:** ```json { "kilo-code.openAiBaseUrl": "http://localhost:20128/v1", "kilo-code.apiKey": "sk-your-omniroute-key" } ``` Vaihtoehtoisesti käytä OmniRoute-hallintapaneelia → **CLI-työkalut → KiloCode → Ota määritykset käyttöön**. --- #### Continue (VS Code -laajennus) Muokkaa tiedostoa `~/.continue/config.yaml`: ```yaml models: - name: OmniRoute provider: openai model: auto apiBase: http://localhost:20128/v1 apiKey: sk-your-omniroute-key default: true ``` Käynnistä VS Code uudelleen muokkaamisen jälkeen. --- #### VS Code Insiders (`chatLanguageModels.json`) Käytä tätä, kun VS Code Insiders on määritetty käyttämään mukautettuja päätepistemalleja ja haluat OmniRouten toimivan ilman mukautettua otsakekenttää. **Suositeltu sijainti:** - Linux: `~/.config/Code - Insiders/User/chatLanguageModels.json` - Windows: `%APPDATA%/Code - Insiders/User/chatLanguageModels.json` **Esimerkki tokenisoidun OmniRoute-aliaksen käytöstä:** ```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" } } ] ``` **Huomautukset:** - Korvaa `sk-your-omniroute-key` OmniRoutessa luodulla API-avaimella. - `url`-kentän tulee osoittaa osoitteeseen `/api/v1/vscode/{token}/chat/completions`. - `modelsUrl`-kentän tulee osoittaa osoitteeseen `/api/v1/vscode/{token}/models`. - Suosi tavallista `/v1` + Bearer-otsake -menetelmää, kun asiakasohjelma tukee mukautettuja otsakkeita. - URL-osoitteeseen upotetut tokenit ovat yhteensopivuutta varten tarkoitettu vararatkaisu, ja ne saattavat näkyä editorin lokeissa tai välityspalvelimen historiassa. --- #### Kiro CLI (Amazon) ```bash # Kirjaudu AWS/Kiro-tilillesi: kiro-cli login # CLI käyttää omaa todennustaan — OmniRoutea ei tarvita itse Kiro CLI:n taustapalveluksi. # Käytä kiro-cli:tä OmniRouten rinnalla muita työkaluja varten. kiro-cli status ``` Käytä **Kiro IDE** -työpöytäsovelluksessa OmniRouten tarjoamaa MITM-päätepistettä kohdassa `/dashboard/cli-tools → Kiro`. --- ## 10. Sisäinen OmniRoute CLI `omniroute`-suoritettava tiedosto tarjoaa komennot palvelimen elinkaaren hallintaan, määritykseen, diagnostiikkaan ja palveluntarjoajien hallintaan. Aloituspiste: `bin/omniroute.mjs`. ```bash omniroute # Käynnistä palvelin (oletusportti 20128) omniroute setup # Vuorovaikutteinen ohjattu määritys omniroute doctor # Tarkista määritykset, tietokanta, portit ja suoritusympäristö omniroute providers list # Määritetyt palveluntarjoajayhteydet omniroute providers test-all # Testaa jokainen aktiivinen yhteys omniroute reset-password # Nollaa järjestelmänvalvojan salasana omniroute logs # Suoratoista pyyntölokeja omniroute health # Yksityiskohtainen toimintatila (katkaisijat, välimuisti, muisti) omniroute --version # Tulosta versio omniroute --help # Näytä kaikki komennot ``` ### Määritys ja alustus ```bash omniroute setup # Vuorovaikutteinen ohjattu määritys omniroute setup --non-interactive # CI-/automaatiotila (lukee ympäristömuuttujia ja valitsimia) omniroute setup --password '' # Aseta järjestelmänvalvojan salasana suoraan omniroute setup --add-provider \ --provider openai \ --api-key '' \ --test-provider # Lisää ja testaa palveluntarjoaja yhdellä kertaa ``` Ei-vuorovaikutteisen määrityksen tunnistetut ympäristömuuttujat: | Muuttuja | Tarkoitus | | ------------------- | ------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_API_KEY` | Palveluntarjoajan API-avain (sidottu `--api-key`-valitsimeen Commander-kirjaston `.env()`-toiminnolla) | | `DATA_DIR` | Ohita OmniRoute-datihakemiston oletusarvo | Kaikki muut ei-vuorovaikutteiset syötteet välitetään valitsimina, eivät ympäristömuuttujina: `--password`, `--provider`, `--provider-name`, `--provider-base-url`, `--default-model` (katso edellä olevat `omniroute setup`-valinnat). ### Diagnostiikka ```bash omniroute doctor # Tarkista määritykset, tietokanta, portit, suoritusympäristö, muisti ja palvelimen toimivuus omniroute doctor --json # Koneluettava JSON omniroute doctor --no-liveness # Ohita HTTP-toimintatilatarkistus omniroute doctor --host 0.0.0.0 # Ohita toimivuustarkistuksen isäntä omniroute doctor --liveness-url # Ohita toimintilatarkistuksen URL kokonaan ``` Doctor suorittaa seuraavat tarkistukset: `Config`, `Database`, `Storage/encryption`, `Port availability`, `Node runtime`, `Native binary` (better-sqlite3), `Memory` ja `Server liveness`. Se päättyy nollasta poikkeavalla tilakoodilla, jos minkä tahansa tarkistuksen tulos on `fail`. ### Palveluntarjoajien hallinta ```bash omniroute providers available # OmniRoute-palveluntarjoajaluettelo omniroute providers available --search openai # Suodata luetteloa tunnuksen/nimen/aliaksen/luokan perusteella omniroute providers available --category api-key # Suodata luokan mukaan (api-key, oauth, free, ...) omniroute providers available --json # Koneluettava JSON omniroute providers list # Määritetyt palveluntarjoajayhteydet omniroute providers list --json omniroute providers test # Testaa yksi määritetty yhteys omniroute providers test-all # Testaa jokainen aktiivinen yhteys omniroute providers validate # Vain paikallinen rakenteellinen validointi omniroute providers add --credential-env PROVIDER_KEY omniroute providers import ./providers.json --dry-run --json omniroute providers auth # Olemassa oleva OAuth-työnkulku omniroute providers edit --default-model omniroute providers remove --yes ``` `providers add/import/auth/edit/remove` käyttävät ensisijaisesti APIa ja toimivat siksi aktiivisessa paikallisessa tai etäkontekstissa. Tunnistetiedot tulee syöttää käyttäen `--credential-stdin`- tai `--credential-env`-valitsinta; `--dry-run --json` raportoi vain peitetyn olemassaolon ja rakenteen. `providers available` lukee OmniRoute-luetteloa; `providers list/test/test-all/validate` säilyttävät paikallisen SQLite-toimintansa eivätkä edellytä palvelimen olevan käynnissä. Mukautetussa OpenAI- tai Anthropic-yhteensopivassa solmussa tunnistetiedot liitetään `omniroute nodes add` -komennon palauttamaan solmutunnukseen komennolla `omniroute keys add "$NODE_ID" --stdin`. Tämä edellyttää käynnissä olevaa palvelinta ja aktiivisen kontekstin hallintatason todennusta. CLI käyttää `POST /api/providers` -pyyntöä, joka validoi solmun ja kopioi sen päätepisteen asetukset yhteyteen. Puuttuva solmu, valtuutusvirhe tai tavoittamaton palvelin palauttaa virheen luomatta paikallista varatunnistetietoa. `nodes add --base-url` määrittää solmun päätepisteen; se on eri asia kuin palvelimen osoite muuttujassa `OMNIROUTE_BASE_URL`. Käytä OpenAPI-tiedostoille komentoa `omniroute openapi dump --format json --out ./openapi.json`; yleinen `--output` valitsee CLI-tulosteen muotoilun, ei kohdetiedoston nimeä. ### Palautus ja nollaus ```bash omniroute reset-password # Nollaa järjestelmänvalvojan salasana (myös: omniroute-reset-password) omniroute reset-encrypted-columns # Näytä varoitus ja kuivaharjoittelu salattujen tunnistetietojen nollaamisesta omniroute reset-encrypted-columns --force # Aseta salatut tunnistetiedot SQLite-tietokannassa null-arvoon ``` ### Tunnistetietojen vienti (⚠ käsittele varoen) ```bash omniroute auth export # Näytä varoitus ja vahvistusvaihe — ei tietokannan käyttöä omniroute auth export --force # Vie KAIKKIEN yhteyksien SALAAMATTOMAT tunnistetiedot vakiotulosteeseen JSON-muodossa omniroute auth export --force --id # Vie vain täsmäävä yhteys omniroute auth export --force --format env # Tulosta OMNIROUTE__=-rivit omniroute auth export --force --out creds.json # Kirjoita tiedostoon (luodaan käyttöoikeuksilla 0600) ``` `auth export` on **vain paikallinen** (suora SQLite-luku, ei HTTP-reittiä), ja se tulostaa/kirjoittaa tarkoituksellisesti `apiKey`-/`accessToken`-/`refreshToken`-/`idToken`-arvot **selväkielisinä** — se on ominaisuus, ei virhe. Tietokannasta ei lueta mitään eikä mitään pureta salauksesta ilman `--force`-valitsinta. Stderr-virtaan tulostetaan aina varoitus ennen selväkielisten tietojen lähettämistä. Edellyttää, että `STORAGE_ENCRYPTION_KEY` on asetettu. Kenttä, jonka salauksen purkaminen epäonnistuu (vanhentunut avain, vioittunut salateksti), ilmoitetaan muodossa `DecryptFailed: true` sen sijaan, että koko vienti keskeytettäisiin tai taustalla oleva virhe paljastettaisiin. ### Muut alikomennot Nämä edellyttävät käynnissä olevaa OmniRoute-palvelinta, ellei toisin mainita: ```bash omniroute status # Kattava suorituksenaikainen tila omniroute logs # Suoratoista pyyntölokeja (--json, --search, --follow) omniroute config list # Näytä määritetyt komentorivityökalut omniroute provider list # Luettele käytettävissä olevat palveluntarjoajat (providers list -komennon alias) omniroute provider add # Rekisteröi OmniRoute palveluntarjoajaksi työkaluun omniroute keys add | list | remove # Hallitse API-avaimia omniroute models [provider] # Luettele mallit (--json, --search) omniroute combo list | switch | create | delete omniroute backup # Luo tilannevedos määrityksistä ja tietokannasta omniroute restore # Palauta aiemmasta tilannevedoksesta omniroute health # Yksityiskohtaiset kuntotiedot (katkaisimet, välimuisti, muisti) omniroute quota # Palveluntarjoajan kiintiön käyttö omniroute cache # Välimuistin tila omniroute cache clear # Tyhjennä semanttiset välimuistit ja allekirjoitusvälimuistit omniroute mcp status | restart # MCP-palvelimen tila / uudelleenkäynnistys omniroute a2a status | card # A2A-palvelimen tila / agenttikortti omniroute tunnel list | create | stop # Hallitse tunneleita (cloudflare/tailscale/ngrok) omniroute env show | get | set # Tarkastele / aseta ympäristömuuttujia (väliaikaisesti) omniroute test # Palveluntarjoajan yhteyden toimivuustesti omniroute update # Tarkista päivitykset omniroute completion # Luo komentotulkin täydennysmääritykset ``` ### Yleiset valitsimet | Valitsin | Kuvaus | | ------------------- | ---------------------------------------------------------------------- | | `--no-open` | Älä avaa selainta automaattisesti käynnistettäessä | | `--port ` | Ohita API-portti (oletus 20128) | | `--mcp` | Suorita MCP-palvelimena stdio-yhteyden kautta (IDE-ympäristöjä varten) | | `--non-interactive` | CI-tila (ei kehotteita; lukee ympäristömuuttujista/valitsimista) | | `--json` | Koneluettava JSON-tuloste (doctor, providers jne.) | | `--help`, `-h` | Näytä komentokohtainen ohje | | `--version`, `-v` | Tulosta asennettu versio | --- ## Käytettävissä olevat API-päätepisteet | Päätepiste | Kuvaus | Käyttötarkoitus | | -------------------------- | ------------------------------------------------ | ----------------------------------------------------- | | `/v1/chat/completions` | Tavallinen keskustelu (kaikki palveluntarjoajat) | Kaikki nykyaikaiset työkalut | | `/v1/responses` | Responses API (OpenAI-muoto) | Codex, agenttipohjaiset työnkulut | | `/v1/completions` | Vanha tekstintäydennysrajapinta | Vanhemmat työkalut, jotka käyttävät `prompt:`-kenttää | | `/v1/embeddings` | Tekstiupotukset | RAG, haku | | `/v1/images/generations` | Kuvien generointi | GPT-Image, Flux jne. | | `/v1/audio/speech` | Tekstistä puheeksi | ElevenLabs, OpenAI TTS | | `/v1/audio/transcriptions` | Puheesta tekstiksi | Deepgram, AssemblyAI | Valmiit kopioitavat esimerkit tokenin sisältävällä OmniRoute-URL-osoitteella: ```txt Token-esimerkki: sk-a3ab3c080beaee3a-69f4a4-070d71af OpenAI-vakioperusosoite: http://localhost:20128/v1 VS Code -mallit: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/models VS Code -keskustelu: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/chat/completions VS Code -vastaukset: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/responses Ollama-tunnisteet: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/tags Ollama-keskustelu: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/chat ``` --- ## Vianmääritys | Virhe | Syy | Korjaus | | ----------------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------- | | `Connection refused` | OmniRoute ei ole käynnissä | `omniroute serve` | | `401 Unauthorized` | Väärä API-avain | Tarkista osoitteessa `/dashboard/api-manager` | | `No combo configured` | Ei aktiivista reititysyhdistelmää | Määritä osoitteessa `/dashboard/combos` | | CLI näyttää tekstin "not installed" | Binääritiedosto ei ole PATH-muuttujassa | Tarkista komennolla `which ` | | Hallintapaneeli näyttää asennuksen jälkeen tekstin "not detected" | Välimuisti on vanhentunut | Napsauta hallintapaneelissa "⟳ Refresh detection" | | Vanha linkki `/dashboard/cli-tools` | Versiota v3.8.6 edeltävä kirjanmerkki | Uudelleenohjataan automaattisesti osoitteeseen `/dashboard/cli-code` (308) | | Vanha linkki `/dashboard/agents` | Versiota v3.8.6 edeltävä kirjanmerkki | Uudelleenohjataan automaattisesti osoitteeseen `/dashboard/acp-agents` (308) | ## Päätelmäavaimen käytännön hallinta OmniRoute CLI:llä Käytä todennettua hallintakontekstia (katso [Etätila](../guides/REMOTE-MODE.md)) tarkastellaksesi tai päivittääksesi olemassa olevaa päätelmäavainta sen tunnuksen perusteella: ```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` on valitsimen `--model-access-mode all` alias. Päivitys tyhjentää mallien sallittujen luettelon. Se säilyttää käyttöoikeusalueet, yhteyssäännöt, estetyt mallit, nopeusrajoitukset ja kustannusrajat, joten nämä muut hallintakeinot voivat edelleen estää pyynnön. Myös eksplisiittinen `--allowed-models ""` valitsee arvon `all`; yhdistä se valitsimeen `--model-access-mode restricted`, jos haluat säilyttää rajoitetun avaimen ilman sallittuja malleja. Ei-tyhjä pilkuilla eroteltu luettelo valitsee arvon `restricted`, ellei sitä ole määritetty eksplisiittisesti. Ristiriitainen yhdistelmä `all` ja ei-tyhjä sallittujen luettelo hylätään ennen pyynnön lähettämistä. `--rate-limit 30` asettaa pyyntöjen määrän minuutissa ja säilyttää muiden aikajaksojen säännöt. `--max-cost 5` ottaa käyttöön päivittäisen USD-rajan muuttamatta viikoittaista rajaa; `--max-cost 0` poistaa päivittäisen rajan ja säilyttää nykyisen käyttörajoituksen valitsimen sekä viikoittaisen rajan. Pois jätetyt käytäntökentät pysyvät muuttumattomina. Nopeusrajoitusten muutokset lukevat ensin nykyisen käytännön; vältä saman avaimen nopeusrajoitustaulukon samanaikaista muokkaamista. Käytäntökomennot käyttävät todennettuja `GET`/`PATCH /api/keys/{id}` -pyyntöjä ja noudattavat aktiivista kontekstia sekä yleistä `--api-key`-valitsinta. JSON-tuloste sisältää vain käytäntökentät ilman tallennettua avainta tai sen peitettyä esitystä. Vain päätelmäkäyttöön tarkoitettu tunnistetieto ei voi valtuuttaa hallintamuutoksia. 401/403 edellyttää hallinnan tunnistetiedon ja kontekstin tarkistamista; se ei osoita paikallisen CLI-tokenin tai suolan virhettä. Katso erillinen paikallisen todennuksen sopimus kohdasta [CLI-token](../security/CLI_TOKEN.md).