Skip to content

Latest commit

 

History

History
760 lines (569 loc) · 55.8 KB

CLI-TOOLS.md

File metadata and controls

760 lines (569 loc) · 55.8 KB

CLI Tools — OmniRoute (Русский)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Последнее обновление: 2026-08-23

OmniRoute интегрируется с тремя категориями CLI-инструментов, представленными на трёх отдельных страницах панели управления:

Страница Маршрут Концепция Количество
CLI Code's /dashboard/cli-code Инструменты программирования, направляемые в OmniRoute (Клиент → CLI → OmniRoute → Провайдер) 26
CLI Agents /dashboard/cli-agents Автономные агенты, направляемые в OmniRoute (тот же поток, более широкая область применения) 10
ACP Agents /dashboard/acp-agents CLI, запускаемые OmniRoute в качестве бэкенда через stdio/ACP (обратный поток) см. реестр

Устаревшие маршруты перенаправляются с помощью 308: /dashboard/cli-tools → /dashboard/cli-code, /dashboard/agents → /dashboard/acp-agents.


Как это работает

CLI Код / CLI Агенты (поток потребления):
Claude / Codex / OpenCode / Cline / KiloCode / Continue / Hermes Agent / Goose / ...
           │
           ▼  (все указывают на OmniRoute)
    http://YOUR_SERVER:20128/v1
           │
           ▼  (OmniRoute направляет к правильному провайдеру)
    Anthropic / OpenAI / Gemini / DeepSeek / Groq / Mistral / ...

ACP Агенты (обратный поток создания):
    Запрос клиента → OmniRoute → создает CLI через stdio/ACP → ответ

Преимущества:

  • Один API ключ для управления всеми инструментами
  • Отслеживание затрат по всем CLI в панели управления
  • Переключение моделей без перенастройки каждого инструмента
  • Работает локально и на удаленных серверах (VPS, Docker, Akamai, Cloudflare Tunnel)

Автоматическая настройка с помощью setup-*

Вам не нужно вручную писать конфигурацию для каждого инструмента. OmniRoute поставляется с командой setup-* для каждого поддерживаемого CLI, которая считывает актуальный каталог моделей из запущенного OmniRoute (локального или удаленного) и записывает собственную конфигурацию инструмента на вашу машину:

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

Каждая команда принимает --remote <url> --api-key <key> (настройка локального инструмента для удаленного OmniRoute), --dry-run (предварительный просмотр без записи) и --port. Инструменты без автоматического обнаружения моделей (Cline, Kilo, Roo, Goose, Aider, Qwen, 5dive) принимают --model <id> (и --yes для неинтерактивных запусков). setup-5dive — это единственный рецепт, который не записывает данные в $HOME: он настраивает парк агентов 5dive, записывая профиль аутентификации, принадлежащий root, на хосте парка, поэтому он повторно выполняется через sudo и не имеет собственного удаленного режима. Чтобы запустить CLI с внедренными правильными переменными окружения и без записи конфигурации, используйте универсальный лаунчер omniroute run <target> (claude, codex, aider, goose, opencode, qwen, gemini — цели и псевдонимы берутся из bin/cli/cli-manifest.mjs); устаревшие лаунчеры для каждого инструмента omniroute launch (Claude Code) и omniroute launch-codex (Codex) остаются доступными. Gemini CLI доступен только для запуска: это цель omniroute run, но у него нет рецепта setup-*/configure.

Полная справка: основная таблица — что записывает каждая команда, каждый флаг, локальный или удаленный режим, и какие инструменты требуют суффикса /v1 — находится в Интеграции CLI.

Запуск внутри контейнера

Команда setup-*, выполненная внутри контейнера OmniRoute, записывает данные в домашний каталог самого контейнера, который не читается хост-CLI и исчезает вместе с контейнером. OmniRoute обнаруживает это и завершает работу с кодом 2 и инструкциями, вместо того чтобы записывать данные. Два поддерживаемых способа решения — установить CLI на хосте и omniroute connect к контейнеру, или примонтировать каталоги конфигурации и установить CLI_CONFIG_HOME (профиль host в compose). Каждая команда setup-*, а также omniroute configure и omniroute config set, принимает --allow-container-write, если вы действительно имели в виду настройку собственных CLI контейнера; OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE=true делает то же самое для сервера. См. Руководство по Docker → Настройка инструментов CLI хоста.

Конечная точка применения панели управления (POST /api/cli-tools/apply) обеспечивает ту же защиту: в контейнере запись, цель которой не примонтирована с хоста, отвечает 422 с containerEphemeralTarget: true, безопасным текстом ошибки и — для инструментов с рецептом хоста (claude, codex, opencode, cline, kilo, continue) — hostSetupCommand (например, omniroute setup-opencode) для запуска на хосте; ничего не записывается. dryRun: true продолжает работать в режиме контейнера и возвращает отредактированный предварительный просмотр + целевой путь без обращения к диску. Содержимое предварительного просмотра не является конфигурацией, содержащей учетные данные, для копирования или импорта. Применяйте с исходным инструментом/базовым URL/ключом API/входными данными модели на хосте или используйте указанную команду настройки на стороне хоста. См. Безопасность конфигурации CLI для заголовка предварительного просмотра и контракта запроса. Такое поведение является преднамеренным и защищено от регрессий тестом tests/unit/api/cli-tools/apply-container-guard.test.ts — никогда не "исправляйте" 422, удаляя защиту.


Источник правды

Унифицированный каталог находится в src/shared/constants/cliTools.ts как CLI_TOOLS: Record<string, CliCatalogEntry>.

Каждая запись имеет следующие поля (определены в src/shared/schemas/cliCatalog.ts):

Поле Тип Описание
category "code" | "agent" На какой странице появляется инструмент
vendor string Происхождение инструмента ("Anthropic", "OSS (P. Gauthier)")
acpSpawnable boolean Также может использоваться как ACP Agent (значок отображается)
baseUrlSupport "full" | "partial" | "none" Уровень поддержки пользовательского конечного пункта. "none" = MITM backlog
configType "env" | "custom" | "guide" | "custom-builder" | "mitm" Механизм конфигурации
id, name, color, description, docsUrl стандарт Основные поля отображения

Записи с baseUrlSupport: "none" не отображаются на страницах панели управления — они зарегистрированы в MITM backlog для плана 11 (см. _tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md).

Уровни возможностей (каталогизированные × обнаруживаемые × настраиваемые × запускаемые)

Не каждый каталогизированный инструмент является обнаруживаемым, настраиваемым или запускаемым. Каждый уровень имеет один объявляющий источник, и тест на отклонение поддерживает их согласованность:

Уровень Значение Объявлено в
Каталогизированный Появляется в каталоге панели управления (имя, поставщик, документация, тип конфигурации) src/shared/constants/cliTools.ts (CLI_TOOLS)
Обнаруживаемый Обнаружение бинарных файлов/конфигураций, проверки состояния, пути конфигурации src/shared/services/cliRuntime.ts (CLI_TOOLS runtime catalog)
Настраиваемый Поддерживается omniroute configure <cli> (существует рецепт настройки) bin/cli/cli-manifest.mjs (configure: true)
Запускаемый Поддерживается omniroute run <target> (определена инъекция env/args) bin/cli/cli-manifest.mjs (run: true)

bin/cli/cli-manifest.mjs является каноническим исполняемым манифестом для команд CLI поверхностей: run, configure и генераторы автозаполнения оболочки все получают свои списки целей, разрешение псевдонимов (например, kilocode/kilo-code/kilo_cli → kilo) и подключение флага --model из него. Защитник отклонений tests/unit/cli/cli-manifest-drift.test.ts утверждает, что манифест, каталог времени выполнения, каталог UI и каждая поверхность потребителя остаются синхронизированными — цель, добавленная к одной поверхности без других, приводит к сбою тестов вместо тихого отклонения.

1. Каталог инструментов CLI Code (26 инструментов)

Все инструменты, которые появляются в /dashboard/cli-code. Те, у которых baseUrlSupport: none, подключаются через MITM или ручное руководство вместо пользовательского базового URL:

id название поставщик baseUrlSupport configType acpSpawnable
claude Claude Code Anthropic full env true
codex OpenAI Codex CLI OpenAI full custom true
zcode ZCode (План кодирования GLM) 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 Пользовательский CLI — full custom-builder false

Инструменты с baseUrlSupport: "partial" показывают значок "⚠ Base URL parcial" на карточке панели управления.

2. Каталог CLI-агентов (8 инструментов)

Автономные агенты, которые появляются в /dashboard/cli-agents:

id name vendor baseUrlSupport acpSpawnable
hermes-agent Агент Гермес Nous Research полный ложь
openclaw OpenClaw OSS (P. Steinberger) полный истина
goose Гусь Block / Linux Foundation полный истина
interpreter Открытый Интерпретатор OSS полный истина
warp Warp AI Warp Inc. частичный истина
agent-deck Колода агентов asheshgoplani (OSS) полный ложь
omp Oh My Pi OSS полный истина
letta Letta CLI Letta полный ложь

3. ACP-агенты (/dashboard/acp-agents)

Эта страница (переименованная из /dashboard/agents) показывает CLI, которые OmniRoute может создавать в качестве движков выполнения на стороне сервера через протокол stdio/ACP. Каталог поддерживается отдельно в src/lib/acp/registry.ts и не является тем же, что и CLI_TOOLS.


4. MITM-отложенные задачи (не отображаются на панели управления)

Следующие CLI не поддерживают пользовательский базовый URL нативно и не перечислены на страницах кода CLI или агентов CLI. Они являются кандидатами для перехвата MITM в плане 11:

CLI Причина
windsurf BYOK ограничен выбором моделей Claude + корпоративный URL/токен
amp Закрытая экосистема (Sourcegraph)
amazon-q / kiro-cli AWS SSO аутентификация, нет пользовательского URL
cowork Anthropic Desktop, нет настраиваемой конечной точки

Смотрите _tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md для полного перекрестного ссылки.


5. API обнаружения пакетов

Все обнаружения инструментов агрегируются через единую конечную точку:

GET /api/cli-tools/all-statuses

  • Аутентификация: requireCliToolsAuth(request) (так же, как и другие маршруты /api/cli-tools/)
  • Возвращает: Record<toolId, ToolBatchStatus> (тип: src/shared/types/cliBatchStatus.ts)
  • Стратегия: Promise.all для всех инструментов, таймаут 5 секунд на инструмент
  • Кэш: в памяти LRU, индексированный по mtime конфигурационного файла. Кэш недействителен, когда mtime изменяется. Сбрасывается при перезапуске сервера.

Форма ответа для каждого инструмента:

interface ToolBatchStatus {
  detection: {
    installed: boolean;
    runnable: boolean;
    version?: string;
    command?: string;
    commandPath?: string;
    reason?: string;
  };
  config: {
    status: "configured" | "not_configured" | "not_installed" | "unknown" | "other";
    endpoint?: string | null;
    lastConfiguredAt?: string | null;
  };
  error?: string; // очищено, без трассировок стека
}

6. Обработчики настроек для новых инструментов

Новые инструменты с configType: "custom" имеют выделенные маршруты API настроек:

Маршрут Инструмент
POST /api/cli-tools/forge-settings ForgeCode (.forge.toml)
POST /api/cli-tools/jcode-settings jcode (--base-url flag)
POST /api/cli-tools/deepseek-tui-settings DeepSeek TUI (OPENAI_BASE_URL, legacy)
POST /api/cli-tools/codewhale-settings CodeWhale (OPENAI_BASE_URL, primary + legacy ~/.deepseek sync)
POST /api/cli-tools/smelt-settings Smelt
POST /api/cli-tools/pi-settings Pi coding agent
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 + dedicated .env key)

Все маршруты используют sanitizeErrorMessage() для ответов об ошибках (Жесткое правило #12).


7. Архитектура страниц панели управления

CLI Код (/dashboard/cli-code)

  • src/app/(dashboard)/dashboard/cli-code/page.tsx — серверный компонент
  • src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx — клиентская сетка
  • src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx — страница деталей инструмента
  • src/app/(dashboard)/dashboard/cli-code/components/ — 12 специализированных карточек инструментов + ToolDetailClient.tsx

CLI Агенты (/dashboard/cli-agents)

  • src/app/(dashboard)/dashboard/cli-agents/page.tsx — серверный компонент
  • src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx — клиентская сетка
  • src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx — повторно использует ToolDetailClient

ACP Агенты (/dashboard/acp-agents)

  • src/app/(dashboard)/dashboard/acp-agents/page.tsx — серверный компонент (перемещен из agents/)

Общие UI Компоненты (src/shared/components/cli/)

Файл Назначение
CliToolCard.tsx Умная карточка статуса (обнаружение + конфигурация + конечная точка)
CliConceptCard.tsx Карточка объяснения концепции на странице
CliComparisonCard.tsx Сравнение по трем колонкам между типами CLI
BaseUrlSelect.tsx Выпадающий список конечных точек (Локальная/Облачная/Пользовательская)
ApiKeySelect.tsx Выбор ключа API
ManualConfigModal.tsx Модальное окно с копируемым фрагментом конфигурации

Общий Хук (src/shared/hooks/cli/)

Файл Назначение
useToolBatchStatuses.ts Получает /api/cli-tools/all-statuses, управляет состоянием загрузки/обновления

8. i18n

Новые пространства имен добавлены в план 14 F9:

Пространство имен Назначение
cliCommon Общие строки (ярлыки карточек, тексты концепций/сравнений, ярлыки страниц деталей)
cliCode Строки страниц CLI Code
cliAgents Строки страниц CLI Agents
acpAgents Строки страниц ACP Agents

Полные переводы на португальский (Бразилия) и английский предоставлены. 39 других локалей автоматически используют английский через объединение на уровне пространства имен в src/i18n/request.ts.


9. Быстрый старт

Шаг 1 — Получите ключ API OmniRoute

  1. Откройте /dashboard/api-manager → Создать ключ API
  2. Дайте ему имя (например, cli-tools) и выберите все разрешения
  3. Скопируйте ключ — он вам понадобится для каждого CLI ниже

Ваш ключ выглядит так: sk-xxxxxxxxxxxxxxxx-xxxxxxxxx


Шаг 2 — Установите инструменты CLI

Все инструменты на основе npm требуют Node.js 22.22.2+ или 24.x:

# Claude Code (Anthropic)
npm install -g @anthropic-ai/claude-code

# OpenAI Codex
npm install -g @openai/codex

# OpenCode
npm install -g opencode-ai

# Cline
npm install -g cline

# KiloCode
npm install -g kilocode

# Qwen Code
npm install -g @qwen-code/qwen-code

# Google Gemini CLI (запускается через `omniroute run gemini` → /v1beta surface)
npm install -g @google/gemini-cli

# Aider
pip install aider-chat

# Smelt
cargo install smelt  # на основе Rust

# Pi coding agent
# см. https://github.com/zechnerj/pi-coding-agent для установки

# jcode
# см. https://github.com/1jehuang/jcode для установки

Шаг 3 — Настройте через панель управления

  1. Перейдите по адресу http://localhost:20128/dashboard/cli-code
  2. Найдите ваш инструмент в сетке
  3. Нажмите на карточку, чтобы открыть страницу деталей инструмента
  4. Выберите ваш ключ API и базовый URL
  5. Нажмите Применить конфигурацию или скопируйте фрагмент конфигурации вручную

Шаг 4 — Установите глобальные переменные окружения

# Универсальная конечная точка OmniRoute
export OPENAI_BASE_URL="http://localhost:20128/v1"
export OPENAI_API_KEY="sk-your-omniroute-key"
export ANTHROPIC_BASE_URL="http://localhost:20128"
export ANTHROPIC_AUTH_TOKEN="sk-your-omniroute-key"
# Gemini CLI читает GOOGLE_GEMINI_BASE_URL на корне (его SDK добавляет /v1beta/... самостоятельно)
export GOOGLE_GEMINI_BASE_URL="http://localhost:20128"
export GEMINI_API_KEY="sk-your-omniroute-key"

Для удаленного сервера замените localhost:20128 на IP-адрес или домен сервера, например, http://<your-server-ip>:20128.


Шаг 4 — Настройте каждый инструмент

Claude Code

# Создайте ~/.claude/settings.json:
mkdir -p ~/.claude && cat > ~/.claude/settings.json << EOF
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:20128",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-omniroute-key"
  }
}
EOF

Используйте единый корень шлюза Anthropic для Claude Code. Не добавляйте /v1 здесь.

Тест: claude "say hello"


OpenAI Codex

Современный Codex (v0.137+) читает ~/.codex/config.toml только — старый config.yaml принадлежит устаревшему npm CLI и игнорируется без предупреждений. Ключ API остается в переменной окружения OMNIROUTE_API_KEY (env_key), никогда не внутри файла:

mkdir -p ~/.codex && cat > ~/.codex/config.toml << EOF
model_provider = "omniroute"

[model_providers.omniroute]
name                 = "OmniRoute"
base_url             = "http://localhost:20128/v1"
env_key              = "OMNIROUTE_API_KEY"
requires_openai_auth = false
EOF
export OMNIROUTE_API_KEY="sk-your-omniroute-key"

Полная справка (профили, wire_api, контекстные окна): CODEX-CLI-CONFIGURATION.md.

Тест: codex "what is 2+2?"


OpenCode

mkdir -p ~/.config/opencode && cat > ~/.config/opencode/opencode.json << EOF
{
  "\$schema": "https://opencode.ai/config.json",
  "provider": {
    "omniroute": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "OmniRoute",
      "options": {
        "baseURL": "http://localhost:20128/v1",
        "apiKey": "sk-your-omniroute-key"
      },
      "models": {
        "claude-sonnet-4-5": { "name": "claude-sonnet-4-5" },
        "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" },
        "gemini-3-flash": { "name": "gemini-3-flash" }
      }
    }
  }
}
EOF

Тест: opencode

Используйте opencode run "your prompt" --model omniroute/claude-sonnet-4-5-thinking --variant high для отправки вариантов мышления.


Cline (CLI или VS Code)

Режим CLI:

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

Режим VS Code: Настройки расширения Cline → Поставщик API: OpenAI Compatible → Базовый URL: http://localhost:20128/v1

Или используйте панель управления OmniRoute → CLI Tools → Cline → Применить конфигурацию.


KiloCode (CLI или VS Code)

Режим CLI:

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

Настройки VS Code:

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

Или используйте панель управления OmniRoute → CLI Tools → KiloCode → Применить конфигурацию.


Continue (расширение VS Code)

Отредактируйте ~/.continue/config.yaml:

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

Перезапустите VS Code после редактирования.


VS Code Insiders (chatLanguageModels.json)

Используйте это, когда VS Code Insiders настроен для пользовательских моделей конечных точек, и вы хотите, чтобы OmniRoute работал без пользовательского заголовка.

Рекомендуемое местоположение:

  • Linux: ~/.config/Code - Insiders/User/chatLanguageModels.json
  • Windows: %APPDATA%/Code - Insiders/User/chatLanguageModels.json

Пример с использованием токенизированного псевдонима OmniRoute:

[
  {
    "vendor": "customendpoint",
    "id": "auto",
    "name": "OmniRoute Auto",
    "family": "gpt-4",
    "version": "1.0.0",
    "url": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/chat/completions",
    "modelsUrl": "http://localhost:20128/api/v1/vscode/sk-your-omniroute-key/models",
    "requestFormat": "openai-chat-completions",
    "contextWindow": 256000,
    "maxOutputTokens": 32768,
    "auth": {
      "type": "none"
    }
  }
]

Примечания:

  • Замените sk-your-omniroute-key на ключ API, созданный в OmniRoute.
  • Поле url должно указывать на /api/v1/vscode/{token}/chat/completions.
  • Поле modelsUrl должно указывать на /api/v1/vscode/{token}/models.
  • Предпочитайте обычный поток /v1 + заголовок Bearer, когда клиент поддерживает пользовательские заголовки.
  • Встроенные в URL токены являются запасным вариантом совместимости и могут появляться в журналах редактора или истории прокси.

Kiro CLI (Amazon)

# Войдите в свою учетную запись AWS/Kiro:
kiro-cli login

# CLI использует свою собственную аутентификацию — OmniRoute не нужен как бэкенд для самого Kiro CLI.
# Используйте kiro-cli вместе с OmniRoute для других инструментов.
kiro-cli status

Для настольного приложения Kiro IDE используйте конечную точку MITM, предоставленную OmniRoute по адресу /dashboard/cli-tools → Kiro.


10. Внутренний CLI OmniRoute

Исполняемый файл omniroute предоставляет команды для управления жизненным циклом сервера, настройки, диагностики и управления провайдерами. Точка входа: bin/omniroute.mjs.

omniroute                              # Запустить сервер (порт по умолчанию — 20128)
omniroute setup                        # Интерактивный мастер настройки
omniroute doctor                       # Проверить конфигурацию, БД, порты и среду выполнения
omniroute providers list               # Настроенные подключения к провайдерам
omniroute providers test-all           # Проверить каждое активное подключение
omniroute reset-password               # Сбросить пароль администратора
omniroute logs                         # Выводить журналы запросов в реальном времени
omniroute health                       # Подробное состояние (предохранители, кеш, память)
omniroute --version                    # Вывести версию
omniroute --help                       # Показать все команды

Настройка и инициализация

omniroute setup                        # Интерактивный мастер настройки
omniroute setup --non-interactive      # Режим CI/автоматизации (читает переменные среды и флаги)
omniroute setup --password '<value>'   # Задать пароль администратора напрямую
omniroute setup --add-provider \
  --provider openai \
  --api-key '<value>' \
  --test-provider                      # Добавить и проверить провайдера за один шаг

Распознаваемые переменные среды для неинтерактивной настройки:

Переменная Назначение
OMNIROUTE_API_KEY API-ключ провайдера (привязан к --api-key через Commander .env())
DATA_DIR Переопределить каталог данных OmniRoute

Все остальные неинтерактивные входные данные передаются в виде флагов, а не переменных среды: --password, --provider, --provider-name, --provider-base-url, --default-model (см. параметры omniroute setup выше).

Диагностика

omniroute doctor                       # Проверить конфигурацию, БД, порты, среду выполнения, память и работоспособность
omniroute doctor --json                # JSON в машиночитаемом формате
omniroute doctor --no-liveness         # Пропустить HTTP-проверку работоспособности
omniroute doctor --host 0.0.0.0        # Переопределить хост для проверки работоспособности
omniroute doctor --liveness-url <url>  # Переопределить полный URL конечной точки проверки состояния

Команда doctor выполняет следующие проверки: Config, Database, Storage/encryption, Port availability, Node runtime, Native binary (better-sqlite3), Memory и Server liveness. Она завершается с ненулевым кодом, если какая-либо проверка имеет статус fail.

Управление провайдерами

omniroute providers available                       # Каталог провайдеров OmniRoute
omniroute providers available --search openai       # Фильтровать каталог по идентификатору/имени/псевдониму/категории
omniroute providers available --category api-key    # Фильтровать по категории (api-key, oauth, free, ...)
omniroute providers available --json                # JSON в машиночитаемом формате

omniroute providers list                            # Настроенные подключения к провайдерам
omniroute providers list --json

omniroute providers test <id|name>                  # Проверить одно настроенное подключение
omniroute providers test-all                        # Проверить каждое активное подключение
omniroute providers validate                        # Только локальная структурная проверка
omniroute providers add <provider> --credential-env PROVIDER_KEY
omniroute providers import ./providers.json --dry-run --json
omniroute providers auth <provider>                 # Существующий поток OAuth
omniroute providers edit <id|name> --default-model <model>
omniroute providers remove <id|name> --yes

providers add/import/auth/edit/remove в первую очередь используют API и поэтому работают с активным локальным или удалённым контекстом. Учётные данные следует передавать через --credential-stdin или --credential-env; --dry-run --json сообщает только о наличии/структуре в отредактированном виде. providers available читает каталог OmniRoute; providers list/test/test-all/validate сохраняют локальное поведение SQLite и не требуют запущенного сервера.

Восстановление и сброс

omniroute reset-password                # Сбросить пароль администратора (также: omniroute-reset-password)
omniroute reset-encrypted-columns       # Показать предупреждение и пробный запуск сброса зашифрованных учётных данных
omniroute reset-encrypted-columns --force  # Фактически заменить зашифрованные учётные данные в SQLite значениями NULL

Экспорт учётных данных (⚠ обращайтесь с осторожностью)

omniroute auth export                                 # Показать предупреждение и запрос подтверждения — без доступа к БД
omniroute auth export --force                          # Экспортировать РАСШИФРОВАННЫЕ учётные данные ВСЕХ подключений в stdout в формате JSON
omniroute auth export --force --id <id>                 # Экспортировать только соответствующее подключение
omniroute auth export --force --format env               # Вывести строки OMNIROUTE_<PROVIDER>_<FIELD>=<value>
omniroute auth export --force --out creds.json           # Записать в файл (создаётся с правами доступа 0600)

auth export работает только локально (прямое чтение SQLite, без HTTP-маршрута) и намеренно выводит/записывает значения apiKey/accessToken/refreshToken/idToken в виде открытого текста — это функция, а не ошибка. Без --force из базы данных ничего не читается и ничего не расшифровывается. Перед выводом любого открытого текста в stderr всегда печатается предупреждающий баннер. Требуется, чтобы была задана переменная STORAGE_ENCRYPTION_KEY. Поле, которое не удалось расшифровать (устаревший ключ, повреждённый шифротекст), представляется как <field>DecryptFailed: true вместо прерывания всего экспорта или раскрытия базовой ошибки.

Другие подкоманды

Если не указано иное, для них требуется запущенный сервер OmniRoute:

omniroute status                       # Подробное состояние во время выполнения
omniroute logs                         # Потоковая передача журналов запросов (--json, --search, --follow)
omniroute config list                  # Показать настроенные инструменты CLI

omniroute provider list                # Вывести список доступных провайдеров (псевдоним для providers list)
omniroute provider add                 # Зарегистрировать OmniRoute как провайдера в инструменте
omniroute keys add | list | remove     # Управление API-ключами
omniroute models [provider]            # Вывести список моделей (--json, --search)
omniroute combo list | switch | create | delete

omniroute backup                       # Создать снимок конфигурации и БД
omniroute restore                      # Восстановить из предыдущего снимка

omniroute health                       # Подробное состояние системы (предохранители, кеш, память)
omniroute quota                        # Использование квот провайдеров
omniroute cache                        # Состояние кеша
omniroute cache clear                  # Очистить семантический кеш и кеш сигнатур

omniroute mcp status | restart         # Состояние / перезапуск сервера MCP
omniroute a2a status | card            # Состояние сервера A2A / карточка агента

omniroute tunnel list | create | stop  # Управление туннелями (cloudflare/tailscale/ngrok)
omniroute env show | get <k> | set <k> <v>  # Просмотр / установка переменных среды (временно)

omniroute test                         # Быстрая проверка подключения к провайдерам
omniroute update                       # Проверить наличие обновлений
omniroute completion                   # Создать автодополнение для оболочки

Общие флаги

Флаг Описание
--no-open Не открывать браузер автоматически при запуске
--port <n> Переопределить порт API (по умолчанию 20128)
--mcp Запустить как сервер MCP через stdio (для IDE)
--non-interactive Режим CI (без запросов; чтение из среды/флагов)
--json Машиночитаемый вывод JSON (doctor, providers и т. д.)
--help, -h Показать справку по конкретной команде
--version, -v Вывести установленную версию

Доступные API конечные точки

Конечная точка Описание Используется для
/v1/chat/completions Стандартный чат (все провайдеры) Все современные инструменты
/v1/responses API ответов (формат OpenAI) Codex, агентные рабочие процессы
/v1/completions Устаревшие текстовые дополнения Старые инструменты, использующие prompt:
/v1/embeddings Текстовые встраивания RAG, поиск
/v1/images/generations Генерация изображений GPT-Image, Flux и др.
/v1/audio/speech Текст в речь ElevenLabs, OpenAI TTS
/v1/audio/transcriptions Речь в текст Deepgram, AssemblyAI

Готовые к вставке примеры с токенизированным URL OmniRoute:

Token example: sk-a3ab3c080beaee3a-69f4a4-070d71af

Стандартная база OpenAI: http://localhost:20128/v1
Модели VS Code: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/models
Чат VS Code: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/chat/completions
Ответы VS Code: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/responses
Теги Ollama: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/tags
Чат Ollama: http://localhost:20128/api/v1/vscode/sk-a3ab3c080beaee3a-69f4a4-070d71af/api/chat

Устранение неполадок

Ошибка Причина Исправление
Connection refused OmniRoute не запущен omniroute serve
401 Unauthorized Неправильный API ключ Проверьте в /dashboard/api-manager
No combo configured Нет активной маршрутизации Настройте в /dashboard/combos
CLI показывает "not installed" Бинарный файл не в PATH Проверьте which <command>
Панель управления показывает "not detected" после установки Кэш устарел Нажмите "⟳ Обновить обнаружение" на панели управления
Старая ссылка /dashboard/cli-tools Закладка до v3.8.6 Авто-перенаправление на /dashboard/cli-code (308)
Старая ссылка /dashboard/agents Закладка до v3.8.6 Авто-перенаправление на /dashboard/acp-agents (308)