Files
OmniRoute/docs/i18n/id/docs/reference/CLI-TOOLS.md
Diego Rodrigues de Sa e Souza 7db430a352 Release v3.8.14 (#3340)
* chore(release): open v3.8.14 development cycle

Version bump 3.8.13 -> 3.8.14 (root + electron + open-sse + openapi + lockfiles).
Seed the v3.8.14 changelog with the four post-tag hotfixes that shipped to
Docker/Electron in v3.8.13 but missed the immutable npm 3.8.13 (#3336 SSRF /
CodeQL #323, #3334/#3335/#3339 Electron packaging). i18n CHANGELOG mirrors get
the in-progress placeholder section.

* feat: add per-provider custom headers support for OpenAI/Anthropic-compatible nodes (#3338)

Integrated into release/v3.8.14

* fix: Kiro Builder ID token import fails with Bad credentials (#3333)

Integrated into release/v3.8.14 — adds Builder ID cached-creds + OIDC refresh path for Kiro token import, with regression tests (#3333).

* Improve code quality: auto-pr/docstrings-1780792063 (#3337)

Integrated into release/v3.8.14 — docstring for context analytics route re-export.

* fix(catalog): remove minimaxai/minimax-m3 from NVIDIA NIM tier (404 upstream) (#3329) (#3341)

NVIDIA NIM does not host minimaxai/minimax-m3 — every request returns
404 page not found, while sibling minimaxai/minimax-m2.7 on the same provider
works. Advertising a model that 404s is a catalog bug; remove it from the nvidia
tier (it remains on the tiers that actually serve MiniMax M3). Re-add only once
NVIDIA serves it.

Co-authored-by: mikmaneggahommie <mikmaneggahommie@users.noreply.github.com>

* fix(cli): write OpenCode config to ~/.config on all platforms incl. Windows (#3330) (#3343)

resolveOpencodeConfigDir used %APPDATA% on Windows, but OpenCode reads its
config from XDG ~/.config/opencode/ on every platform (on Windows:
%USERPROFILE%\.config\opencode\, NOT %APPDATA%). So a Windows user who
configured OpenCode via the dashboard had the file written where OpenCode never
looks — it silently had no effect.

Use the XDG path (XDG_CONFIG_HOME || ~/.config) unconditionally. Update the UI
note + route JSDoc, and flip the three tests that encoded the old %APPDATA%
behavior (t40 per-platform + card-note, cli-runtime-extended getCliConfigPaths).

Co-authored-by: abdulkadirozyurt <abdulkadirozyurt@users.noreply.github.com>

* fix(proxy): make auto-selection fallback opt-in (#3332) (#3344)

selectWorkingProxyFallback (Step 11 of resolveProxyForConnection) listed ALL
registry proxies, ignoring assignments and per-connection proxy_enabled, and
returned the first working one with level:'autoSelect'. So a single proxy added
to the registry silently became a global fallback for every connection's traffic.

Gate it behind a new PROXY_AUTO_SELECT_ENABLED feature flag (default off): the
fallback now no-ops unless the operator opts in. No registry proxy becomes a
silent global default anymore.

Co-authored-by: hertznsk <hertznsk@users.noreply.github.com>

* fix(sse): treat MiniMax M3 as multimodal so vision isn't stripped (#3328) (#3342)

MiniMax M3 via the opencode provider (oc/minimax-m3-free) appeared blind:
image inputs didn't reach the model, while the same model in Cline could
see them. Verified empirically that MiniMax M3 on the opencode upstream IS
multimodal -- a base64 image is described correctly (it returns 403 only
for remote image URLs, which it doesn't accept).

Root cause: OmniRoute treated MiniMax M3 as a non-vision model in two
places, so when compression was active the image was replaced with a text
placeholder before dispatch:
- compression's modelSupportsVision() heuristic (lite.ts) only matched
  gpt-4/4o/claude-3/gemini/vision -- minimax was absent -> replaceImageUrls
  stripped the image.
- the opencode minimax-m3-free catalog entry lacked supportsVision, so the
  combo vision-capability gate could also exclude/mishandle it.

Add 'minimax-m3' to the vision heuristic and supportsVision: true to the
opencode minimax-m3-free entry. TDD: a failing-then-passing test in
compression/lite.test.ts proves replaceImageUrls now keeps images for
minimax-m3 ids, plus a registry assertion mirroring the #2822 qwen test.

Reported-by: @mikmaneggahommie

* docs(i18n): translate 25 core documentation files to Indonesian (#3348)

Integrated into release/v3.8.14 — Indonesian i18n docs.

* fix(review): resolve /review-reviews battery findings (LEDGER-1..11) on v3.8.14 (#3350)

Integrated into release/v3.8.14 — /review-reviews battery hardening (LEDGER-1..11) for #3338 custom-headers + #3333 kiro, plus cycle-test drift fixes (#3329/#3330/#3332).

* fix(provider-proxy): honor per-account proxy toggles (#3349)

Integrated into release/v3.8.14 — honor per-account proxy toggles + auto-fallback opt-in via PROXY_AUTO_SELECT_ENABLED.

* fix(dashboard): remove duplicate Distribute Proxies button on provider page (#3352)

* fix(providers): reduce proxy label noise (#3346)

Integrated into release/v3.8.14 — reduce proxy label noise + a11y (aria-label/sr-only).

* fix(duckduckgo): restore bare Response contract and rebase onto release/v3.8.14 (#3323)

Integrated into release/v3.8.14 — browser-backed cookie providers (duckduckgo/claude-web) with restored executor contract + unit tests.

* fix(noauth): expose only usable model aliases (#3345)

Integrated into release/v3.8.14 — noauth usable-alias filtering + registry alias plumbing (veo-free).

* fix(dashboard): stop infinite config-load loop on Hermes Agent detail page (#3353)

* fix(electron): tree-kill the server on exit/update to release the omniroute.exe lock (#3347) (#3354)

* chore(release): finalize v3.8.14 changelog + clear release-gate drift

- CHANGELOG: finalize the v3.8.14 section (date, full New Features/Bug Fixes/
  Maintenance coverage of all 16 cycle commits, Contributors hall of 12).
- docs: document OMNIROUTE_BROWSER_POOL + WEB_COOKIE_USE_BROWSER (#3323) in
  .env.example + ENVIRONMENT.md; regenerate the id/llm.txt strict mirror (#3348
  had translated it; llm.txt mirrors must match root).
- test(proxy-fetch): #3323 made tlsClient.available a computed getter — stub it
  via Object.defineProperty instead of assignment (5 tests were red on the base).

* fix(translator): coerce Gemini functionDeclaration parameters to an OBJECT schema (#3357) (#3360)

* fix(gemini): resolve truncation/suppression of false positive textual tool call markers in backticks (#3358)

Integrated into release/v3.8.14 — Gemini/Antigravity textual tool-call marker normalization (no false-positive suppression + split-chunk buffering).

* docs(changelog): add #3358 Gemini textual tool-call normalization to v3.8.14

* fix(dashboard): surface real analytics error instead of generic placeholder (#3356) (#3361)

The Analytics page discarded the server's error body on a non-OK response and
rendered a generic "An error occurred", so users (and maintainers) could not see
why /api/usage/analytics 500'd after an upgrade. Now the route returns the real
reason via buildErrorBody (sanitized, Hard Rule #12) and the page surfaces it via
a new readFetchErrorMessage helper that handles both the OpenAI-style and legacy
error shapes.

Reported-by: @superti4r

---------

Co-authored-by: PizzaV <103120356+pizzav-xyz@users.noreply.github.com>
Co-authored-by: Someres <168349709+quanturbo@users.noreply.github.com>
Co-authored-by: Dong Mengzhe <154944819+Lang-Qiu@users.noreply.github.com>
Co-authored-by: mikmaneggahommie <mikmaneggahommie@users.noreply.github.com>
Co-authored-by: abdulkadirozyurt <abdulkadirozyurt@users.noreply.github.com>
Co-authored-by: hertznsk <hertznsk@users.noreply.github.com>
Co-authored-by: Krisna Santosa <54174372+KrisnaSantosa15@users.noreply.github.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Wilson <pedbookmed@gmail.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Ardem2025 <ardemb22@gmail.com>
2026-06-07 07:20:02 -03:00

14 KiB

Panduan Pengaturan Alat CLI — OmniRoute (Bahasa Indonesia)

🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇮🇳 mr · 🇲🇾 ms · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN


Panduan ini menjelaskan cara menginstal dan mengonfigurasi semua alat CLI coding AI yang didukung untuk menggunakan OmniRoute sebagai backend terpadu, memberikan manajemen kunci terpusat, pelacakan biaya, pergantian model, dan pencatatan permintaan di semua alat.


Cara Kerjanya

Claude / Codex / OpenCode / Cline / KiloCode / Continue / Kiro / Cursor / Copilot
           │
           ▼  (semua mengarah ke OmniRoute)
    http://YOUR_SERVER:20128/v1
           │
           ▼  (OmniRoute meneruskan ke penyedia yang tepat)
    Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ...

Manfaat:

  • Satu API key untuk mengelola semua alat
  • Pelacakan biaya di semua CLI melalui dashboard
  • Pergantian model tanpa mengonfigurasi ulang setiap alat
  • Berjalan secara lokal maupun di server jarak jauh (VPS)

Alat yang Didukung (Sumber Kebenaran Dashboard)

Kartu dashboard di /dashboard/cli-tools dibuat dari src/shared/constants/cliTools.ts. Daftar saat ini (v3.0.0-rc.16):

Alat ID Perintah Mode Pengaturan Metode Instalasi
Claude Code claude claude env npm
OpenAI Codex codex codex custom npm
Factory Droid droid droid custom bundled/CLI
OpenClaw openclaw openclaw custom bundled/CLI
Cursor cursor app guide desktop app
Cline cline cline custom npm
Kilo Code kilo kilocode custom npm
Continue continue extension guide VS Code
Antigravity antigravity internal mitm OmniRoute
GitHub Copilot copilot extension custom VS Code
OpenCode opencode opencode guide npm
Kiro AI kiro app/cli mitm desktop/CLI
Qwen Code qwen qwen custom npm

Sinkronisasi fingerprint CLI (Agents + Pengaturan)

/dashboard/agents dan Settings > CLI Fingerprint menggunakan src/shared/constants/cliCompatProviders.ts. Ini menjaga ID penyedia tetap selaras dengan kartu CLI dan ID lama.

CLI ID ID Penyedia Fingerprint
kilo kilocode
copilot github
claude / codex / antigravity / kiro / cursor / cline / opencode / droid / openclaw same ID

ID lama yang masih diterima untuk kompatibilitas: copilot, kimi-coding, qwen.


Langkah 1 — Dapatkan API Key OmniRoute

  1. Buka dashboard OmniRoute → API Manager (/dashboard/api-manager)
  2. Klik Create API Key
  3. Beri nama (misalnya cli-tools) dan pilih semua izin
  4. Salin kunci tersebut — Anda akan membutuhkannya untuk setiap CLI di bawah

Kunci Anda terlihat seperti: sk-xxxxxxxxxxxxxxxx-xxxxxxxxx


Langkah 2 — Instal Alat CLI

Semua alat berbasis npm memerlukan Node.js 18+:

# 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

# Kiro CLI (Amazon — requires curl + unzip)
apt-get install -y unzip   # on Debian/Ubuntu
curl -fsSL https://cli.kiro.dev/install | bash
export PATH="$HOME/.local/bin:$PATH"   # add to ~/.bashrc

Verifikasi:

claude --version     # 2.x.x
codex --version      # 0.x.x
opencode --version   # x.x.x
cline --version      # 2.x.x
kilocode --version   # x.x.x (or: kilo --version)
kiro-cli --version   # 1.x.x

Langkah 3 — Tetapkan Variabel Lingkungan Global

Tambahkan ke ~/.bashrc (atau ~/.zshrc), lalu jalankan source ~/.bashrc:

# OmniRoute Universal Endpoint
export OPENAI_BASE_URL="http://localhost:20128/v1"
export OPENAI_API_KEY="sk-your-omniroute-key"
export ANTHROPIC_BASE_URL="http://localhost:20128/v1"
export ANTHROPIC_API_KEY="sk-your-omniroute-key"
export GEMINI_BASE_URL="http://localhost:20128/v1"
export GEMINI_API_KEY="sk-your-omniroute-key"

Untuk server jarak jauh, ganti localhost:20128 dengan IP atau domain server, misalnya http://192.168.0.15:20128.


Langkah 4 — Konfigurasi Setiap Alat

Claude Code

# Melalui CLI:
claude config set --global api-base-url http://localhost:20128/v1

# Atau buat ~/.claude/settings.json:
mkdir -p ~/.claude && cat > ~/.claude/settings.json << EOF
{
  "apiBaseUrl": "http://localhost:20128/v1",
  "apiKey": "sk-your-omniroute-key"
}
EOF

Uji: claude "say hello"


OpenAI Codex

mkdir -p ~/.codex && cat > ~/.codex/config.yaml << EOF
model: auto
apiKey: sk-your-omniroute-key
apiBaseUrl: http://localhost:20128/v1
EOF

Uji: codex "what is 2+2?"


OpenCode

mkdir -p ~/.config/opencode && cat > ~/.config/opencode/config.toml << EOF
[provider.openai]
base_url = "http://localhost:20128/v1"
api_key = "sk-your-omniroute-key"
EOF

Uji: opencode


Cline (CLI atau VS Code)

Mode CLI:

mkdir -p ~/.cline/data && cat > ~/.cline/data/globalState.json << EOF
{
  "apiProvider": "openai",
  "openAiBaseUrl": "http://localhost:20128/v1",
  "openAiApiKey": "sk-your-omniroute-key"
}
EOF

Mode VS Code: Pengaturan ekstensi Cline → API Provider: OpenAI Compatible → Base URL: http://localhost:20128/v1

Atau gunakan dashboard OmniRoute → CLI Tools → Cline → Apply Config.


KiloCode (CLI atau VS Code)

Mode CLI:

kilocode --api-base http://localhost:20128/v1 --api-key sk-your-omniroute-key

Pengaturan VS Code:

{
  "kilo-code.openAiBaseUrl": "http://localhost:20128/v1",
  "kilo-code.apiKey": "sk-your-omniroute-key"
}

Atau gunakan dashboard OmniRoute → CLI Tools → KiloCode → Apply Config.


Continue (Ekstensi VS Code)

Edit ~/.continue/config.yaml:

models:
  - name: OmniRoute
    provider: openai
    model: auto
    apiBase: http://localhost:20128/v1
    apiKey: sk-your-omniroute-key
    default: true

Mulai ulang VS Code setelah mengedit.


Kiro CLI (Amazon)

# Login ke akun AWS/Kiro Anda:
kiro-cli login

# CLI ini menggunakan autentikasinya sendiri — OmniRoute tidak diperlukan sebagai backend untuk Kiro CLI itu sendiri.
# Gunakan kiro-cli bersama OmniRoute untuk alat lainnya.
kiro-cli status

Qwen Code (Alibaba)

Qwen Code mendukung endpoint API yang kompatibel dengan OpenAI melalui variabel lingkungan atau settings.json.

Opsi 1: Variabel lingkungan (~/.qwen/.env)

mkdir -p ~/.qwen && cat > ~/.qwen/.env << EOF
OPENAI_API_KEY="sk-your-omniroute-key"
OPENAI_BASE_URL="http://localhost:20128/v1"
OPENAI_MODEL="auto"
EOF

Opsi 2: settings.json dengan penyedia model

// ~/.qwen/settings.json
{
  "env": {
    "OPENAI_API_KEY": "sk-your-omniroute-key",
    "OPENAI_BASE_URL": "http://localhost:20128/v1"
  },
  "modelProviders": {
    "openai": [
      {
        "id": "omniroute-default",
        "name": "OmniRoute (Auto)",
        "envKey": "OPENAI_API_KEY",
        "baseUrl": "http://localhost:20128/v1"
      }
    ]
  }
}

Opsi 3: Flag CLI langsung

OPENAI_BASE_URL="http://localhost:20128/v1" \
OPENAI_API_KEY="sk-your-omniroute-key" \
OPENAI_MODEL="auto" \
qwen

Untuk server jarak jauh, ganti localhost:20128 dengan IP atau domain server.

Uji: qwen "say hello"

Cursor (Aplikasi Desktop)

Catatan: Cursor merutekan permintaan melalui cloudnya sendiri. Untuk integrasi OmniRoute, aktifkan Cloud Endpoint di Pengaturan OmniRoute dan gunakan URL domain publik Anda.

Melalui GUI: Settings → Models → OpenAI API Key

  • Base URL: https://your-domain.com/v1
  • API Key: kunci OmniRoute Anda

Konfigurasi Otomatis Dashboard

Dashboard OmniRoute mengotomatiskan konfigurasi untuk sebagian besar alat:

  1. Buka http://localhost:20128/dashboard/cli-tools
  2. Perluas kartu alat mana pun
  3. Pilih API key Anda dari menu tarik-turun
  4. Klik Apply Config (jika alat terdeteksi telah terinstal)
  5. Atau salin cuplikan konfigurasi yang dihasilkan secara manual

Agen Bawaan: Droid & OpenClaw

Droid dan OpenClaw adalah agen AI yang dibangun langsung ke dalam OmniRoute — tidak perlu instalasi. Keduanya berjalan sebagai rute internal dan menggunakan perutean model OmniRoute secara otomatis.

  • Akses: http://localhost:20128/dashboard/agents
  • Konfigurasi: combo dan penyedia yang sama seperti semua alat lainnya
  • Tidak memerlukan API key atau instalasi CLI

Endpoint API yang Tersedia

Endpoint Deskripsi Digunakan Untuk
/v1/chat/completions Chat standar (semua penyedia) Semua alat modern
/v1/responses Responses API (format OpenAI) Codex, alur kerja agentik
/v1/completions Penyelesaian teks lama Alat lama yang menggunakan prompt:
/v1/embeddings Embedding teks RAG, pencarian
/v1/images/generations Pembuatan gambar GPT-Image, Flux, dll.
/v1/audio/speech Teks ke ucapan ElevenLabs, OpenAI TTS
/v1/audio/transcriptions Ucapan ke teks Deepgram, AssemblyAI

Pemecahan Masalah

Error Penyebab Solusi
Connection refused OmniRoute tidak berjalan pm2 start omniroute
401 Unauthorized API key salah Periksa di /dashboard/api-manager
No combo configured Tidak ada combo perutean aktif Atur di /dashboard/combos
invalid model Model tidak ada dalam katalog Gunakan auto atau periksa /dashboard/providers
CLI menampilkan "not installed" Biner tidak ada di PATH Periksa which <command>
kiro-cli: not found Tidak ada di PATH export PATH="$HOME/.local/bin:$PATH"

Skrip Pengaturan Cepat (Satu Perintah)

# Instal semua CLI dan konfigurasi untuk OmniRoute (ganti dengan kunci dan URL server Anda)
OMNIROUTE_URL="http://localhost:20128/v1"
OMNIROUTE_KEY="sk-your-omniroute-key"

npm install -g @anthropic-ai/claude-code @openai/codex opencode-ai cline kilocode @qwen-code/qwen-code

# Kiro CLI
apt-get install -y unzip 2>/dev/null; curl -fsSL https://cli.kiro.dev/install | bash

# Tulis konfigurasi
mkdir -p ~/.claude ~/.codex ~/.config/opencode ~/.continue

cat > ~/.claude/settings.json   <<< "{\"apiBaseUrl\":\"$OMNIROUTE_URL\",\"apiKey\":\"$OMNIROUTE_KEY\"}"
cat > ~/.codex/config.yaml      <<< "model: auto\napiKey: $OMNIROUTE_KEY\napiBaseUrl: $OMNIROUTE_URL"
cat >> ~/.bashrc << EOF
export OPENAI_BASE_URL="$OMNIROUTE_URL"
export OPENAI_API_KEY="$OMNIROUTE_KEY"
export ANTHROPIC_BASE_URL="$OMNIROUTE_URL"
export ANTHROPIC_API_KEY="$OMNIROUTE_KEY"
EOF

source ~/.bashrc
echo "✅ All CLIs installed and configured for OmniRoute"