Codex Router — внешние модели (Anthropic, Kimi, DeepSeek, Grok) прямо в Codex

· 3 мин чтения
codex routing llm ai-agents cli tools
📂 Исходный код на GitHub

Независимый локальный роутер (MIT), который через один локальный шлюз с изоляцией учётных данных подключает к Codex App и CLI внешние модели — Anthropic, Kimi, DeepSeek, xAI Grok, GitHub Copilot, opencode Go, Command Code, Meta и другие — и вливает их в нативный каталог Codex, сохраняя рабочие профили, настройки и ChatGPT-логин.

Codex Router — внешние модели (Anthropic, Kimi, DeepSeek, Grok) прямо в Codex

Codex — официальный кодинг-агент OpenAI. Он отлично работает с нативными GPT-моделями и ChatGPT-планом, но до недавнего времени «запереть» в нём другие модели было непросто: Codex говорит на проприетарном Responses API и загружает каталог моделей только при старте приложения. Codex Router решает именно эту задачу — это независимый локальный роутер, который добавляет Anthropic, Kimi, DeepSeek, xAI Grok, GitHub Copilot, opencode Go, Command Code, Meta и будущие внешние модели прямиком в нативный каталог Codex App и CLI. Маршрутизированные модели появляются в обычном пикере рядом с GPT.

он не аффилирован с OpenAI, GitHub, Anthropic, Moonshot AI, DeepSeek, OpenRouter, opencode и упомянутым в README проектом opencodex.

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

Архитектура роутера на удивление проста и состоит из трёх локальных компонентов:

flowchart LR
  C["Codex Responses :4202"] --> L1["LiteLLM :4200"]
  L1 --> K1["Kimi OAuth :4201"]
  L1 --> A1["API keys :4203"]
  K1 --> P["External providers"]
  A1 --> P

Codex отправляет запросы по Responses API на порт 4202. Далее LiteLLM переводит этот контракт в нативный протокол каждого провайдера — включая OpenAI-совместимые Chat Completions и Anthropic Messages — с сохранением стриминга и форм вызовов инструментов. Все слушатели привязываются к 127.0.0.1.

Перед чтением трафика моделей роутер аутентифицирует вызывающего и передаёт LiteLLM только случайный внутренний ключ. Финальный форвардер отбрасывает этот ключ и подставляет лишь выбранные учётные данные провайдера. Запросы, приходящие из браузера, отклоняются, публичные health-маршруты не раскрывают секретов, а сетевые ошибки санируются.

Установка

Есть три основных способа установки.

Homebrew — если вы уже пользуетесь Homebrew, проще всего взять формулу из официального tap'а:

brew tap duolahypercho/codex-router https://github.com/duolahypercho/codex-router
brew install codex-router
codex-router setup --guided

Первый Homebrew-установка может занять заметно дольше, потому что формула собирает заблокированные Python-зависимости из исходников. Перед удалением формулы нужно отдельно снять пользовательский сервис и управляемый конфиг Codex: codex-router uninstall, затем brew uninstall codex-router.

Guided-установщик для macOS или Linux:

curl -fsSL https://raw.githubusercontent.com/duolahypercho/codex-router/main/install.sh \
  | sh -s -- --target codex --guided

Для Windows — PowerShell-версия install.ps1 с параметром -Target codex -Guided.

Через самого агента. README предлагает удобный вариант: вставить в задачу Codex короткий промпт со ссылкой на репозиторий, инструкцией следовать AGENTS.md, сохранять существующие модели и настройки и оставить перезапуск приложения человеку. Если совместимая аутентификация уже существует, агент может выполнить всё, кроме финального перезапуска.

Требования: Codex App или CLI, Node.js 22.19+ (рекомендуется 24 LTS), uv или Python 3.10+ с venv, а также Git для управляемого одно-командного чекаута и отката. На Linux роутер поддерживает Codex CLI.

Установщик не делает платных тестовых запросов, если только явно не выбран флаг --smoke-test. Каждый API-ключ вводится через скрытый терминальный промпт с отключённым эхом. Защищённые файлы получают права 600 на POSIX и ACL только для текущего пользователя на Windows.

Какие модели и провайдеры доступны

Каталог Codex «знает про учётные данные»: он включает модели только от включённых внешних провайдеров с сохранённым ключом или валидной OAuth-сессией. Нативные GPT-модели появляются только после подтверждения codex login status.

Из коробки в реестре уже есть:

  • Kimi — K2.7 Coding Highspeed, Kimi K3. Доступны два разных пути: OAuth-сессия официального Kimi Code CLI (kimi-oauth/...) и отдельно биллируемый API-ключ Kimi Platform (kimi-api/...). Это отдельные системы аутентификации и биллинга, поэтому записи намеренно сосуществуют.
  • DeepSeek — V4 Flash и V4 Pro по API-ключу.
  • xAI Grok 4.5 — OAuth переиспользует официальный креденшнл CLI ~/.grok/auth.json и отправляет его только в документированный прокси Grok CLI. На этом пути роутер также подключает хостинговые web_search и x_search инструменты — ту же агентную поверхность, что использует Grok Build.
  • Anthropic — Claude Opus 4.8 через отдельно биллируемый API-ключ.
  • GitHub Copilot — маршрутизирует модели аккаунта, которые явно поддерживают Responses API, стриминг и вызовы инструментов. Каталог зависит от тарифа и политики, поэтому у провайдера нет жёстко зашитых моделей: нужно сохранить fine-grained GitHub PAT с правом Copilot Requests, а затем курировать каталог через ./bin/curate-models github-copilot. Обычные токены ghp_ не поддерживаются.
  • opencode Go и Zen — одним сохранённым ключом покрываются плоский Go-подписка (https://opencode.ai/zen/go/v1) и pay-per-use Zen-эндпоинт. Внутри каталог разбит по протоколу: opencode-go (Chat Completions), opencode-go-messages (Anthropic Messages), opencode-go-responses (Responses) и opencode-zen.
  • Command Code — официальный Provider API (https://api.commandcode.ai/provider/v1) для ChatGPT-совместимых и Messages-моделей. Важный нюанс: требуется тариф Provider или выше; Go-план получит отказ «Your Go plan doesn't include API access» — это проблема прав, а не учётных данных. Два пути аутентификации: OAuth через command-code login (роутер только читает ~/.commandcode/auth.json) или сохранённый ключ из Command Code Studio.
  • Meta — Muse Spark 1.2, Contributor-тир и 1.1 по Responses-протоколу, с контекстом в 1M токенов и effort'ами от minimal до xhigh.
  • Ollama Cloud — GLM-5.2, Kimi K2.7, MiniMax M3, DeepSeek V4 через аккаунт ollama.com под отдельной квотой.
  • Qwen / Alibaba Model Studio — Qwen3.8 Max, 3.7 Max/Plus, 3.6 Flash и кросс-вендорные DeepSeek/GLM через план-ключ Model Studio (префикс sk-sp-). Ключ-only: бесплатный OAuth-тир Alibaba отключила 2026-04-15.
  • Каталог-only провайдеры — Groq, OpenRouter, Together AI, Fireworks, Cerebras, Mistral, NVIDIA NIM, SiliconFlow, Hugging Face Router, Google Gemini API, Chutes, GitHub Copilot. Моделей из коробки нет — каталоги слишком часто меняются, поэтому записи регистрируются для маршрутизации, а модели добавляются локальной курацией.

Для API-ключевых провайдеров живую выдачу можно курировать интерактивно: ./bin/curate-models PROVIDER спишет модели, которые провайдер сейчас рекламирует и которых нет в реестре, даст выключить лишние и сохранит их как пользовательские модели в защищённом состоянии. Курация спрашивает про размер контекста, поддержку изображений и reasoning-эффекты, поэтому новые модели получают переключатель effort'ов в пикере. Форма --models id1,id2 — аддитивная, а --remove id1,id2 — удаляет записи.

Лимиты квот без единого balance-эндпоинта

Отдельно стоит отметить, как роутер показывает лимиты. Большинство OpenAI-совместимых сервисов сообщают оставшееся окно вызывающего в каждом ответе через заголовки x-ratelimit-*, а Anthropic — под префиксом anthropic-ratelimit-*

Vision-мост: изображения для текстовых моделей

Большинство внешних кодинг-моделей не умеют «видеть». Вставьте скриншот в DeepSeek V4 Pro или GLM — и Codex либо откажет во вложении, либо провайдер отклонит ход. Vision-мост решает это на уровне роутера: он отправляет вставленное изображение в vision-модель, которую вы уже включили, и подставляет ответ в ход как текст ещё до того, как текстовую модель увидит изображение. Эта функция включена по умолчанию — вставили и готово.

Что текстовая модель получает — это доказательства, а не впечатление: краткое резюме, дословную расшифровку каждого читаемого слова, порядок разметки, значения таблиц и диаграмм, а также явный список того, что было слишком мелким или размытым для чтения. Последняя секция не даёт модели уверенно отвечать про деталь, которую никто не разглядел.

Есть и бесплатный офлайн-путь: если все ваши провайдеры текстовые (ситуация «только DeepSeek»), можно направить мост на маленькую локальную vision-модель через Ollama, llama.cpp или LM Studio. Это ничего не стоит, изображение не покидает компьютер и работает офлайн. Мост даже бенчмаркает установленные модели по их способности дословно читать текст — node src/vision-benchmark.mjs сверяет коды, числа и даты с известным изображением-счётом. Капшен-модели, которые «правдоподобно описывают и выдумывают цифры», никогда не окажутся наверху списка.

Локальные модели в Codex

Модели, запущенные на этой машине, могут появляться в пикере Codex как любой другой провайдер, но помечены как экспериментальные — и это звание заслужено. Использовать локальную модель как vision-ридер надежно, а вот как чат-модель — нет. Была замечена модель, которая проходила проверку способностей и проваливала идентичную проверку через несколько минут.

Создатели дают конкретные практические предупреждения. Каждая модель рекламируется для Codex как 32K, но сам Codex тратит около 20K токенов на инструкции и определения инструментов — остаётся примерно 12K на ваш код. Ещё важнее: Codex ведёт каждый ход через вызовы инструментов, поэтому модель без tool-calling провалится на первом же запросе — публикуются только те модели, которые Ollama сообщает как tool-способные.

файн-тюн qwen2.5-coder:7b реально запускал команды и создавал файлы, а вот llama3.2:3b в реальном промпте Codex отвечал про собственный системный промпт вместо задачи. Практический вывод — для агентной работы держитесь ближе к 7B, а мелкие модели оставьте для vision-моста. К тому же маленькие инструменты-модели могут быть медленными: холодная 3B-модель на первом ходу заняла больше минуты против секунд у хостинговой.

Скиллы для пользовательских моделей

Пользовательские модели (всё, что маршрутизируется через codex-router вместо встроенного OpenAI-бэкенда) получают полный нативный инструментарий Codex App — потоки, автомации, встроенный браузер, computer use — в уплощённом виде, который принимает провайдер. Слабые модели иногда требуют подсказок, как правильно вызывать эти инструменты, поэтому установщик добавляет небольшой набор скиллов в ~/.codex/skills/:

  • codex-router — ориентация: как работают уплощённые codex_app__ / mcp__ инструменты и когда читать сопутствующие скиллы;
  • codex-app-threads — точные сигнатуры аргументов для операций с потоками;
  • codex-in-app-browser — управление встроенным браузером через mcp__node_repl__js;
  • codex-computer-use — управление локальными приложениями через рантайм @oai/sky.

Скиллы находятся в skills/ этого репозитория. bin/install копирует их в ~/.codex/skills/, а bin/uninstall удаляет ровно их — никогда не трогая скилл, написанный вами. Коллизия имён с вашим собственным скиллом пропускается, а не перезаписывается.

Использование без OpenAI-логина

Переключатель Use without OpenAI login в трее выбирает управляемого кастомного провайдера для новых сессий Codex. В этом режиме включённые внешние модели используют OAuth-сессию или API-ключ своего провайдера и не требуют логина ChatGPT или OpenAI API. Сначала нужно подключить и включить хотя бы один внешний провайдер.

В этом режиме выбор модели происходит в собственном пикере Codex: каталог публикует внешние модели с их настоящими именами. Некоторые поверхности (в основном меню моделей в ChatGPT-десктопе) показывают только слаги, прошедшие серверный allowlist нативных слагов, поэтому логин-фри каталоги перепубликовывают внешние модели под нативными GPT-слагами, записывая соответствие в native-aliases.json. Выключение переключателя восстанавливает исходные значения model и model_provider

Панели управления: macOS-трей и кроссплатформенный Tauri

На macOS ./bin/model-router-tray собирает и открывает нативный панель в меню-баре: здоровье Codex, подробное использование активного провайдера, семидневный обзор каждого настроенного провайдера и автоматически применяемые элементы управления. При первом запуске приложение регистрирует себя как пункт входа в систему и открывается автоматически после перезагрузки. Оно также кладёт оверлей в стиле Dynamic Island в верхней части активного дисплея с данными об использовании по наведению.

Windows и Linux используют общий Tauri-компаньон из apps/desktop с тем же функционалом: фильтрация по подключённым провайдерам, нормализованные карточки квот, ежедневный график токенов, безопасная настройка провайдеров и анимированный статус активности. На Linux под X11 есть плавающая «таблетка» активности, а на Wayland — нет, потому что композитор владеет абсолютным размещением окон.

Обновление и откат

Для управляемого Git-чекаута обновление и откат выполняются одной командой:

./bin/model-router codex update
./bin/model-router codex rollback

Обновление требует чекаута main без правок в отслеживаемых файлах и распознанного origin репозитория. Неотслеживаемые файлы не блокируют обновление, а --force отбрасывает отслеживаемые правки, не удаляя неотслеживаемые. Предыдущая ревизия сохраняется как локальный rollback-ref, а неудачная установка восстанавливает предыдущую исходную ревизию. После обновления или отката рекомендуется выполнить doctor --fix, чтобы сгенерированный конфиг и сервис совпадали с исходной ревизией.

Тегированные релизы содержат .tar.gz и .zip-архивы исходников, SHA-256-суммы и GitHub-аттестации provenance сборки. Проект распространяется по лицензии MIT (см. LICENSE и NOTICE.md).

Итог

Codex Router — это зрелый и продуманный инструмент, который расширяет Agency-границу Codex: он снимает жёсткую привязку к нативным GPT-моделям и позволяет использовать любые современные модели в привычном интерфейсе и рабочем процессе Codex, сохраняя при этом безопасность учётных данных и существующую настройку. Особенно ценны vision-мост для текстовых моделей и изоляция учётных данных через скрытые промпты и файлы с правами 600. Для всех, кто подписан на Kimi, DeepSeek, Grok или Anthropic и хочет пользоваться ими внутри Codex, это, вероятно, самый комфортный и безопасный способ прямо сейчас.

Источник: https://github.com/duolahypercho/codex-router