Базовая конфигурация
Файл конфигурации
По умолчанию сервер считывает YAML-файл конфигурации (config.yaml) из корня проекта. Используйте --config, чтобы указать другой файл:
bash
./cli-proxy-api --config /path/to/your/config.yamlПример конфигурации
yaml
# Хост/интерфейс сервера для привязки. По умолчанию пусто ("") для привязки ко всем интерфейсам (IPv4 + IPv6).
# Используйте "127.0.0.1" или "localhost", чтобы ограничить доступ только локальной машиной.
host: ''
# Порт сервера
port: 8317
# Настройки TLS для HTTPS. Если включено, сервер ожидает соединений с использованием предоставленного сертификата и ключа.
tls:
enable: false
cert: ''
key: ''
# Настройки Management API
remote-management:
# Разрешить ли удаленный (не через localhost) доступ к управлению.
# Если false, только localhost может получить доступ к эндпоинтам управления (ключ по-прежнему требуется).
allow-remote: false
# Ключ управления. Если здесь указано текстовое значение, оно будет хешировано при запуске.
# Все запросы управления (даже с localhost) требуют этот ключ.
# Оставьте пустым, чтобы полностью отключить Management API (404 для всех маршрутов /v0/management).
secret-key: ''
# Если true, отключает загрузку ресурсов встроенной панели управления и соответствующий HTTP-маршрут.
disable-control-panel: false
# Репозиторий GitHub для панели управления. Принимает URL репозитория или URL API релизов.
panel-github-repository: 'https://github.com/router-for-me/Cli-Proxy-API-Management-Center'
# Директория аутентификации (поддерживает ~ для домашней директории)
auth-dir: '~/.cli-proxy-api'
# API-ключи для аутентификации
api-keys:
- 'your-api-key-1'
- 'your-api-key-2'
- 'your-api-key-3'
# Включить логирование отладки
debug: false
# Если true, отключает ресурсоемкие функции HTTP middleware для снижения потребления памяти на запрос при высокой нагрузке.
commercial-mode: false
# Если true, записывает логи приложения в ротируемые файлы вместо stdout
logging-to-file: false
# Максимальный общий размер (МБ) лог-файлов в директории логов. При превышении самые старые файлы
# удаляются до достижения лимита. Установите 0, чтобы отключить.
logs-max-total-size-mb: 0
# Если false, отключает агрегацию статистики использования в памяти
usage-statistics-enabled: false
# URL прокси. Поддерживает протоколы socks5/http/https. Пример: socks5://user:[email protected]:1080/
proxy-url: ''
# Если true, запросы к моделям без префикса используют только учетные данные без префикса (за исключением случаев, когда префикс совпадает с именем модели).
force-model-prefix: false
# Количество повторных попыток запроса. Повторы будут происходить, если HTTP-код ответа: 403, 408, 500, 502, 503 или 504.
request-retry: 3
# Максимальное время ожидания в секундах для «остывших» учетных данных перед повторной попыткой.
max-retry-interval: 30
# Поведение при превышении квоты
quota-exceeded:
switch-project: true # Автоматически переключаться на другой проект при превышении квоты
switch-preview-model: true # Автоматически переключаться на preview-модель при превышении квоты
# Стратегия маршрутизации для выбора учетных данных при наличии нескольких совпадений.
routing:
strategy: 'round-robin' # round-robin (по умолчанию), fill-first
# Если true, включает аутентификацию для WebSocket API (/v1/ws).
ws-auth: false
# Если > 0, отправляет пустые строки каждые N секунд для не-потоковых ответов для предотвращения таймаутов простоя.
nonstream-keepalive-interval: 0
# Если true, включает вставку официальных инструкций Codex для запросов к Codex API.
# Если false (по умолчанию), CodexInstructionsForModel возвращается немедленно без изменений.
codex-instructions-enabled: false
# Поведение потоковой передачи (SSE keep-alive + безопасные повторы при запуске).
streaming:
keepalive-seconds: 15 # По умолчанию: 0 (отключено). <= 0 отключает keep-alive.
bootstrap-retries: 1 # По умолчанию: 0 (отключено). Повторы до отправки первого байта.
# API-ключи Gemini
gemini-api-key:
- api-key: 'AIzaSy...01'
prefix: 'test' # опционально: требует вызовов вида "test/gemini-3-pro-preview" для использования этих учетных данных
base-url: 'https://generativelanguage.googleapis.com'
headers:
X-Custom-Header: 'custom-value'
proxy-url: 'socks5://proxy.example.com:1080'
models:
- name: 'gemini-2.5-flash' # имя модели в upstream
alias: 'gemini-flash' # клиентский алиас, сопоставленный с upstream-моделью
excluded-models:
- 'gemini-2.5-pro' # исключить конкретные модели этого провайдера (точное совпадение)
- 'gemini-2.5-*' # сопоставление по префиксу с подстановочным знаком (например, gemini-2.5-flash, gemini-2.5-pro)
- '*-preview' # сопоставление по суффиксу с подстановочным знаком (например, gemini-3-pro-preview)
- '*flash*' # сопоставление по подстроке с подстановочным знаком (например, gemini-2.5-flash-lite)
- api-key: 'AIzaSy...02'
# API-ключи Codex
codex-api-key:
- api-key: 'sk-atSM...'
prefix: 'test' # опционально: требует вызовов вида "test/gpt-5-codex" для использования этих учетных данных
base-url: 'https://www.example.com' # использовать кастомный эндпоинт Codex API
headers:
X-Custom-Header: 'custom-value'
proxy-url: 'socks5://proxy.example.com:1080' # опционально: переопределение прокси для конкретного ключа
models:
- name: 'gpt-5-codex' # имя модели в upstream
alias: 'codex-latest' # клиентский алиас, сопоставленный с upstream-моделью
excluded-models:
- 'gpt-5.1' # исключить конкретные модели (точное совпадение)
- 'gpt-5-*' # сопоставление по префиксу с подстановочным знаком (например, gpt-5-medium, gpt-5-codex)
- '*-mini' # сопоставление по суффиксу с подстановочным знаком (например, gpt-5-codex-mini)
- '*codex*' # сопоставление по подстроке с подстановочным знаком (например, gpt-5-codex-low)
# API-ключи Claude
claude-api-key:
- api-key: 'sk-atSM...' # используйте официальный API-ключ Claude, указывать base-url не нужно
- api-key: 'sk-atSM...'
prefix: 'test' # опционально: требует вызовов вида "test/claude-sonnet-latest" для использования этих учетных данных
base-url: 'https://www.example.com' # использовать кастомный эндпоинт Claude API
headers:
X-Custom-Header: 'custom-value'
proxy-url: 'socks5://proxy.example.com:1080' # опционально: переопределение прокси для конкретного ключа
models:
- name: 'claude-3-5-sonnet-20241022' # имя модели в upstream
alias: 'claude-sonnet-latest' # клиентский алиас, сопоставленный с upstream-моделью
excluded-models:
- 'claude-opus-4-5-20251101' # исключить конкретные модели (точное совпадение)
- 'claude-3-*' # сопоставление по префиксу с подстановочным знаком (например, claude-3-7-sonnet-20250219)
- '*-thinking' # сопоставление по суффиксу с подстановочным знаком (например, claude-opus-4-5-thinking)
- '*haiku*' # сопоставление по подстроке с подстановочным знаком (например, claude-3-5-haiku-20241022)
cloak: # опционально: маскировка запросов для клиентов, отличных от Claude Code
mode:
'auto' # "auto" (по умолчанию): маскировка только когда клиент не Claude Code
# "always": всегда применять маскировку
# "never": никогда не применять маскировку
strict-mode:
false # false (по умолчанию): добавлять промпт Claude Code в начало системных сообщений пользователя
# true: удалять все системные сообщения пользователя, оставлять только промпт Claude Code
sensitive-words: # опционально: слова для обфускации символами нулевой ширины
- 'API'
- 'proxy'
# Провайдеры, совместимые с OpenAI
openai-compatibility:
- name: 'openrouter' # Имя провайдера; будет использоваться в user agent и других местах.
prefix: 'test' # опционально: требует вызовов вида "test/kimi-k2" для использования учетных данных этого провайдера
base-url: 'https://openrouter.ai/api/v1' # Базовый URL провайдера.
headers:
X-Custom-Header: 'custom-value'
api-key-entries:
- api-key: 'sk-or-v1-...b780'
proxy-url: 'socks5://proxy.example.com:1080' # опционально: переопределение прокси для