Codex
Используйте rout.my как custom model provider для Codex CLI или Codex IDE extension, если хотите, чтобы Codex отправлял OpenAI Responses-style запросы через rout.my.
Гайд сверялся с текущей официальной документацией OpenAI Codex по конфигурации и публичным обсуждением Responses migration. Главное:
- Для Codex указывайте
wire_api = "responses". - Provider credentials кладутся в user-level Codex config, обычно
~/.codex/config.toml. - Не кладите provider auth в project
.codex/config.toml: Codex по соображениям безопасности игнорирует project-localmodel_providerиmodel_providers. - Гайд уже заполнен рекомендуемой Codex-моделью rout.my:
openai/gpt-5.4.
1. Создайте rout.my key
Создайте или скопируйте API key в rout.my dashboard, затем задайте его в том же терминале, из которого запускаете Codex.
Выберите команду под свою операционную систему и shell:
| Где запускаете Codex | Temporary command для текущего терминала |
|---|---|
| macOS, Linux, WSL, Git Bash | export ROUTMY_API_KEY="sk_your_key_here" |
| Windows PowerShell | $env:ROUTMY_API_KEY="sk_your_key_here" |
| Windows cmd.exe | set ROUTMY_API_KEY=sk_your_key_here |
Проверьте, что терминал видит key:
echo "$ROUTMY_API_KEY"В PowerShell используйте:
echo $env:ROUTMY_API_KEYВ cmd.exe используйте:
echo %ROUTMY_API_KEY%Если команда ничего не печатает, Codex тоже не увидит key.
Для persistent setup используйте один из вариантов:
# macOS/Linux/WSL with zsh
echo 'export ROUTMY_API_KEY="sk_your_key_here"' >> ~/.zshrc
source ~/.zshrc# macOS/Linux/WSL with bash
echo 'export ROUTMY_API_KEY="sk_your_key_here"' >> ~/.bashrc
source ~/.bashrc# Windows PowerShell
[Environment]::SetEnvironmentVariable("ROUTMY_API_KEY", "sk_your_key_here", "User"):: Windows cmd.exe
setx ROUTMY_API_KEY "sk_your_key_here"После setx или [Environment]::SetEnvironmentVariable закройте терминал и откройте новый. Уже открытые Windows terminals не получают новое значение автоматически.
ROUTMY_API_KEY не является фиксированной Codex-переменной. Это имя переменной, на которое ниже будет ссылаться env_key.
2. Проверьте key и default model
Snippets ниже уже используют openai/gpt-5.4. Перед правкой Codex config проверьте, что ваш key видит каталог моделей:
curl https://api.rout.my/v1/models \
-H "Authorization: Bearer $ROUTMY_API_KEY"Windows PowerShell:
curl.exe https://api.rout.my/v1/models -H "Authorization: Bearer $env:ROUTMY_API_KEY"Windows cmd.exe:
curl.exe https://api.rout.my/v1/models -H "Authorization: Bearer %ROUTMY_API_KEY%"Готовый default для этого гайда:
openai/gpt-5.4Вручную выбирать модель не нужно. Используйте openai/gpt-5.4, если не хотите специально заменить ее:
| Сценарий | Model |
|---|---|
| Default Codex setup | openai/gpt-5.4 |
| Дешевле/быстрее для Codex | openai/gpt-5.4-mini |
Если меняете model, копируйте точный ID из /v1/models; не сокращайте его и не удаляйте provider prefix.
3. Добавьте Codex provider
Откройте user-level Codex config. Выберите вариант:
# macOS/Linux/WSL
mkdir -p ~/.codex
nano ~/.codex/config.toml# Windows PowerShell
New-Item -ItemType Directory -Force "$HOME\.codex" | Out-Null
notepad "$HOME\.codex\config.toml":: Windows cmd.exe
mkdir "%USERPROFILE%\.codex"
notepad "%USERPROFILE%\.codex\config.toml"Добавьте блок:
model = "openai/gpt-5.4"
model_provider = "routmy"
[model_providers.routmy]
name = "rout.my"
base_url = "https://api.rout.my/v1"
env_key = "ROUTMY_API_KEY"
wire_api = "responses"Этот block можно вставлять как есть после настройки ROUTMY_API_KEY.
Оставьте base_url как https://api.rout.my/v1, а не https://api.rout.my/v1/responses. Codex сам добавляет endpoint path.
4. Проверьте Responses напрямую
Этот запрос проверяет тот же endpoint family, который будет использовать Codex:
curl https://api.rout.my/v1/responses \
-H "Authorization: Bearer $ROUTMY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4",
"input": "Return one short deployment checklist."
}'Если curl падает, сначала исправьте API key, model ID или доступ к модели, и только потом тестируйте Codex.
Эквивалент для Windows PowerShell:
curl.exe https://api.rout.my/v1/responses `
-H "Authorization: Bearer $env:ROUTMY_API_KEY" `
-H "Content-Type: application/json" `
-d "{\"model\":\"openai/gpt-5.4\",\"input\":\"Return one short deployment checklist.\"}"5. Запустите Codex
Если config выше должен быть default:
codexДля разовой non-interactive проверки:
codex exec "Return one short deployment checklist."Если не хотите делать rout.my default provider, оставьте provider block в ~/.codex/config.toml и передайте one-off override:
codex exec \
--config model_provider='"routmy"' \
--model "openai/gpt-5.4" \
"Return one short deployment checklist."Codex --config values парсятся как TOML, поэтому вложенные кавычки вокруг "routmy" здесь нужны.
Optional profile
Можно держать rout.my в отдельном Codex profile:
# ~/.codex/routmy.config.toml
model = "openai/gpt-5.4"
model_provider = "routmy"
[model_providers.routmy]
name = "rout.my"
base_url = "https://api.rout.my/v1"
env_key = "ROUTMY_API_KEY"
wire_api = "responses"Запуск:
codex --profile routmy
codex exec --profile routmy "Return one short deployment checklist."Copy-paste checklist
Используйте это, если помогаете человеку, который не понимает environment variables:
- Открыть новый terminal.
- Задать
ROUTMY_API_KEYкомандой для этого terminal. - Выполнить
echo "$ROUTMY_API_KEY"илиecho $env:ROUTMY_API_KEYв PowerShell. - Выполнить
curl https://api.rout.my/v1/models -H "Authorization: Bearer $ROUTMY_API_KEY". - Вставить готовый config block с
openai/gpt-5.4в~/.codex/config.toml. - Менять model только если специально нужен
openai/gpt-5.4-miniили другой точный ID из/v1/models. - Запустить
codexиз того же terminal.
Не вставляйте rout.my key напрямую в config.toml. У Codex есть direct bearer-token config field, но в официальном sample он помечен как dev-only experimental. Для нормальной настройки используйте env_key = "ROUTMY_API_KEY".
Частые ошибки
| Симптом | Что проверить |
|---|---|
ROUTMY_API_KEY игнорируется | env_key = "ROUTMY_API_KEY" указывает на environment variable. Экспортируйте ее в той же shell-сессии перед запуском codex. |
PowerShell curl ведет себя странно | Используйте curl.exe, чтобы PowerShell не вызвал старый alias curl. |
echo $ROUTMY_API_KEY ничего не печатает | Вы в неправильной shell или использовали команду для другой OS. В PowerShell используйте $env:ROUTMY_API_KEY, в cmd.exe - %ROUTMY_API_KEY%. |
| PowerShell работает, а cmd.exe нет | Environment variables задаются отдельно для shell. Задайте variable там, где запускаете codex, или используйте persistent Windows command и переоткройте terminal. |
| WSL не видит key из Windows | WSL - отдельное Linux environment. Выполните macOS/Linux/WSL export команду внутри WSL. |
| Codex все еще ходит напрямую в OpenAI | Проверьте model_provider = "routmy" в user-level ~/.codex/config.toml, не только в project .codex/config.toml. |
Запрос идет в /v1/chat/completions | Укажите wire_api = "responses". Chat Completions provider path для Codex custom providers считается устаревающим. |
404 или doubled path | base_url должен быть https://api.rout.my/v1, а не https://api.rout.my, https://api.rout.my/v1/responses или полный request URL. |
model_not_found или No providers available | Выполните GET /v1/models тем же rout.my key и скопируйте точный model ID из ответа. |
401 | Повторите curl /v1/models. Если он падает, key отсутствует, истек или экспортирован в другой shell-сессии. |
| Config игнорируется в CI | Указывайте CODEX_HOME только если директория уже создана и внутри лежит нужный config.toml. Иначе Codex использует ~/.codex. |
Почему именно так
OpenAI Codex docs описывают custom model providers через model_providers.<id>, base_url, env_key и wire_api. В той же документации указано, что provider configuration должна быть в user-level config, потому что project-local .codex/config.toml не может переопределять provider auth или provider selection.
OpenAI также документирует CODEX_API_KEY как single-run переменную для codex exec, а custom provider API keys читаются из переменной, имя которой указано в env_key. Для rout.my в примерах используется ROUTMY_API_KEY, чтобы не путать его с OpenAI OPENAI_API_KEY.