vibemode-codex
v0.1.5
Published
Universal Vibemode setup CLI for Codex CLI and Codex Desktop.
Maintainers
Readme
Vibemode Codex Setup
Один репозиторий для двух сценариев:
- Codex Desktop на Ubuntu/Linux, macOS и Windows.
- Codex CLI в Termux.
Основной способ установки теперь единый CLI через npx. Старые короткие curl/PowerShell команды тоже остаются: они удобны, когда Node.js/npm ещё не поставлены.
CLI и скрипты прописывают Vibemode API в Codex config, сохраняют официальный кеш API-логина Codex в auth.json, настраивают CODEX_KEY, OPENAI_API_KEY и CODEX_API_KEY в окружении, проверяют /v1/responses и не печатают API-ключ в терминал.
Быстрый старт через npx
npx не ставит Node.js сам: нужен уже установленный Node.js/npm. В Termux это обычно:
pkg install -y nodejsНа Linux/macOS/Windows поставь Node.js любым привычным способом, затем запускай:
npx --yes vibemode-codex setup --install-codexКоманда спросит Vibemode API key скрытым вводом, установит @openai/codex, если Codex CLI ещё не найден, и запишет локальный Codex config для текущего пользователя. Один и тот же ~/.codex или %USERPROFILE%\.codex используется Codex CLI и Codex Desktop, поэтому --target all является режимом по умолчанию.
По умолчанию пишется gpt-5.6-terra. Текущие модели VibeMode для Codex CLI: gpt-5.4-mini, gpt-5.5, gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra. Любую можно выбрать через --model.
Если нужен глобальный CLI:
npm uninstall -g vibemode-codex
npm install -g vibemode-codex
vibemode setup --install-codexПосле глобальной установки доступны команды:
vibemode status
vibemode key set
vibemode key status
vibemode key remove
vibemode use vibemode
vibemode use openai
vibemode remove
vibemode install-codex
vibemode uninstall-codex --yes
vibemode run -- codex --yoloТо же самое можно запускать без глобальной установки:
npx --yes vibemode-codex status
npx --yes vibemode-codex key set
npx --yes vibemode-codex use openai
npx --yes vibemode-codex remove
npx --yes vibemode-codex run -- codex --yolovibemode run -- codex --yolo полезен в Termux: команда подставляет сохранённый ключ только в запускаемый Codex-процесс, даже если текущая вкладка ещё не перечитала .profile.
Что выбрать
Рекомендуемый универсальный путь для новых пользователей:
npx --yes vibemode-codex setup --install-codexДальше запускай Codex так:
npx --yes vibemode-codex run -- codex --yoloЕсли Node.js/npm пока нет или нужен короткий legacy-вариант, используй команды ниже.
Для Codex Desktop на Ubuntu/Linux или macOS:
curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/OlegGorsky/ng/main/d | bashДля Codex Desktop на Windows открой PowerShell:
$u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache'} "$u?$(Get-Random)").ContentWindows-команда также попробует поставить или обновить Codex CLI до текущего npm-релиза: сначала через npm, а если npm не найден — через Node.js LTS через winget или официальный zip с nodejs.org.
Если на Windows уже установлен и инициализирован WSL, эта же команда дополнительно пропишет Vibemode в default WSL-дистрибутив.
Для Codex CLI в Termux:
pkg install -y curl bash && curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/OlegGorsky/ng/main/i | bashЕсли curl в Termux уже установлен:
curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/OlegGorsky/ng/main/i | bashБыстрый ремонт Windows auth
Если Codex на Windows пишет API key auth is missing a key, переустанови текущий npm-пакет и перепиши активный Codex config:
npm install -g vibemode-codex
vibemode setup --install-codexЕсли Node.js/npm ещё нет, запусти Windows bootstrap:
$u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache';'Pragma'='no-cache'} "$u?$(Get-Random)").ContentЕсли нужно заменить ключ, сначала скопируй новый Vibemode API key в буфер:
$env:VIBEMODE_REPLACE_KEY='1'; $env:VIBEMODE_KEY_FROM_CLIPBOARD='1'; $u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache';'Pragma'='no-cache'} "$u?$(Get-Random)").Content; Remove-Item Env:\VIBEMODE_REPLACE_KEY, Env:\VIBEMODE_KEY_FROM_CLIPBOARD -ErrorAction SilentlyContinueПроверить, куда реально смотрит Codex, можно без вывода самого ключа:
$d=if($env:CODEX_HOME){$env:CODEX_HOME}else{Join-Path $HOME '.codex'}; "CODEX_HOME=$d"; Select-String -Path (Join-Path $d 'config.toml') -Pattern 'model_provider|requires_openai_auth|env_key|base_url' -ErrorAction SilentlyContinue; (Get-Content (Join-Path $d 'auth.json') -Raw -ErrorAction SilentlyContinue | ConvertFrom-Json).PSObject.Properties.NameТерминальная диагностика Windows
Для удалённой диагностики без Web UI можно поднять Bun/Hono сервер. Он пишет события в SQLite и не сохраняет значения API-ключей: только пути, флаги и имена полей вроде auth_mode, OPENAI_API_KEY.
На своём сервере:
bun install
VIBEMODE_PUBLIC_BASE_URL=https://your-domain.example PORT=8787 bun run diag:serverСоздать диагностическую сессию:
curl -s -X POST https://your-domain.example/api/sessionsЕсли задан VIBEMODE_DIAG_ADMIN_TOKEN, добавь заголовок:
curl -s -X POST -H "x-admin-token: $VIBEMODE_DIAG_ADMIN_TOKEN" https://your-domain.example/api/sessionsОтвет вернёт command. Её нужно отправить пользователю в PowerShell. Смотреть лог:
Короткая команда без sid/token в ссылке:
irm https://your-domain.example/i|iexcurl -s https://your-domain.example/api/sessions/<id>/events.txtЕсли задан VIBEMODE_DIAG_ADMIN_TOKEN, добавь заголовок:
curl -s -H "x-admin-token: $VIBEMODE_DIAG_ADMIN_TOKEN" https://your-domain.example/api/sessions/<id>/events.txtЧто будет по шагам
- CLI или скрипт найдёт Codex config directory.
- Если ключа ещё нет, попросит вставить Vibemode API key маскированным вводом: одна
*на каждый символ. - Если
auth.jsonуже есть, можно оставить ключ, заменить его или удалить черезvibemode key remove. config.tomlобновится на Vibemode provider.- Для Codex provider включится официальный API-login auth через
auth.json. - Для Codex CLI
auth.jsonприводится к форматуcodex login --with-api-key:"auth_mode": "apikey"иOPENAI_API_KEY.CODEX_HOME,CODEX_KEY,OPENAI_API_KEYиCODEX_API_KEYдополнительно пишутся в.env,vibemode.envили пользовательские переменные окружения для Desktop, shell-сессий, helper-скриптов и совместимости. - Ключ проверится через
POST https://api.vibemod.pro/v1/responses, если проверка не отключена. - По команде
vibemode use openaiконфиг возвращается к стандартному OpenAI provider. - По команде
vibemode removeудаляются Vibemode key material и shell startup block, а Codex config переключается на OpenAI. - Legacy Desktop-скрипт дополнительно ставит helper для генерации картинок, Codex CLI через npm и на Windows мягко пробует поставить Python/Node.js через
wingetили официальные установщики, если их нет. - Windows-скрипт проверяет WSL и, если default distro готов, записывает туда тот же
config.toml,auth.json,.env,vibemode.env, shell startup block и image helper. - Windows-скрипт добавляет маленький PowerShell profile-блок, чтобы новые вкладки перечитывали сохранённые
CODEX_*переменные даже если Windows Terminal ещё держит старое окружение. - После Desktop-настройки перезапусти Codex Desktop.
Короткие curl ... | bash команды тоже умеют спрашивать ключ: bash-скрипты читают ввод с терминала, а не из pipe.
Что записывается
config.toml:
model = "gpt-5.6-terra"
model_provider = "vibemode"
model_reasoning_effort = "medium"
cli_auth_credentials_store = "file"
[model_providers.vibemode]
name = "vibemode"
base_url = "https://api.vibemod.pro/v1"
requires_openai_auth = trueauth.json:
{
"auth_mode": "apikey",
"OPENAI_API_KEY": "..."
}.env для Codex Desktop и vibemode.env/пользовательское окружение для CLI:
CODEX_HOME="..."
CODEX_KEY="..."
OPENAI_API_KEY="..."
CODEX_API_KEY="..."Пути:
- Ubuntu/Linux/macOS/Termux:
~/.codex/config.toml,~/.codex/auth.json,~/.codex/.envи~/.codex/vibemode.env - Windows:
%USERPROFILE%\.codex\config.toml,%USERPROFILE%\.codex\auth.jsonи%USERPROFILE%\.codex\.env - WSL при запуске Windows-скрипта:
~/.codex/config.toml,~/.codex/auth.json,~/.codex/.envи~/.codex/vibemode.envвнутри default WSL-дистрибутива
В Linux/macOS/Termux и WSL Codex CLI берёт ключ для Vibemode provider из API-login кеша auth.json. Скрипт всё равно пишет CODEX_HOME, CODEX_KEY, OPENAI_API_KEY и CODEX_API_KEY в ~/.codex/vibemode.env и добавляет его подключение в ~/.profile; если используются bash или zsh, также обновляются .bashrc или .zshrc. Это нужно для shell-сессий, helper-скриптов и совместимости. После запуска через curl ... | bash текущая вкладка Termux не может автоматически получить переменную из дочернего bash; выполни команду, которую скрипт покажет в конце, или открой новую вкладку Termux.
Для WSL используется текущий default user выбранного дистрибутива. Если default user в WSL — oleg, путь будет вроде /home/oleg/.codex; если default user — root, путь будет /root/.codex. Скрипт выводит WSL user, HOME и итоговый config dir в лог.
Перед изменением существующих файлов создаются .bak-YYYYmmdd-HHMMSS бэкапы.
Если проверка /v1/responses вернула HTTP 401, настройки уже сохранены. Это почти всегда означает, что сервер не принял сохранённый API-ключ. Для принудительной замены ключа в Windows скопируй новый ключ в буфер и запусти:
$env:VIBEMODE_REPLACE_KEY='1'; $env:VIBEMODE_KEY_FROM_CLIPBOARD='1'; $u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache'} "$u?$(Get-Random)").Content; Remove-Item Env:\VIBEMODE_REPLACE_KEY, Env:\VIBEMODE_KEY_FROM_CLIPBOARD -ErrorAction SilentlyContinueПовторить запись без контрольного запроса можно опцией -SkipApiCheck на Windows или --skip-api-check на Linux/macOS/Termux. Для короткой Windows-команды:
$env:VIBEMODE_SKIP_API_CHECK='1'; $u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache'} "$u?$(Get-Random)").Content; Remove-Item Env:\VIBEMODE_SKIP_API_CHECK -ErrorAction SilentlyContinueПри вставке в prompt ключ не показывается, но по количеству * видно, сколько символов считалось. Если в Windows вставка всё равно работает криво, скопируй ключ в буфер обмена и запусти:
$env:VIBEMODE_KEY_FROM_CLIPBOARD='1'; $u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache'} "$u?$(Get-Random)").Content; Remove-Item Env:\VIBEMODE_KEY_FROM_CLIPBOARD -ErrorAction SilentlyContinueВажно про окно авторизации Codex Desktop
Скрипт не авторизует подписку ChatGPT внутри интерфейса Codex Desktop. Он настраивает API-режим: записывает Vibemode provider в config.toml, официальный кеш API-логина в auth.json и API key в окружение для вспомогательных сценариев.
Если после установки Codex Desktop показывает экран выбора авторизации, выбирай вариант с API, а не подписку. После этого перезапусти Codex Desktop. Если приложение снова просит ключ, проверь, что файлы лежат именно в %USERPROFILE%\.codex на Windows или в ~/.codex внутри выбранного WSL/default user.
Обновление
Запусти ту же команду, что и при установке. Если ключ уже сохранён, скрипт спросит, оставить его или заменить. Для обычного обновления нажми Enter. Чтобы заменить ключ, введи r или сразу вставь новый ключ в этот маскированный prompt.
Desktop Ubuntu/Linux/macOS:
curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/OlegGorsky/ng/main/d | bashDesktop Windows:
$u='https://raw.githubusercontent.com/OlegGorsky/ng/main/d.ps1'; iex (iwr -UseBasicParsing -Headers @{'Cache-Control'='no-cache'} "$u?$(Get-Random)").ContentTermux:
curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/OlegGorsky/ng/main/i | bashГенерация изображений
Desktop-setup ставит helper для /responses + image_generation.
Ubuntu/Linux/macOS:
~/.local/bin/responses-image --list-presets
~/.local/bin/responses-image generate "cinematic photo of a compact AI workstation" --size wide --quality highWindows:
& "$env:USERPROFILE\.local\bin\responses-image.cmd" --list-presets
& "$env:USERPROFILE\.local\bin\responses-image.cmd" generate "cinematic photo of a compact AI workstation" --size wide --quality highWSL после Windows-установки:
~/.local/bin/responses-image --list-presets
~/.local/bin/responses-image generate "cinematic photo of a compact AI workstation" --size wide --quality highTermux или локальный запуск из репозитория:
python3 scripts/responses_image.py generate "cinematic photo of a compact AI workstation" --size wide --quality highHelper читает ключ из окружения или OPENAI_API_KEY в Codex auth.json, а base_url и модель из активного model_provider, поэтому картинки идут через Vibemode после настройки.
Подробности: docs/responses-image-generation.md.
Локальный запуск из клона
Desktop Ubuntu/Linux/macOS:
bash setup-vibemode-codex-desktop.shDesktop Windows:
powershell -ExecutionPolicy Bypass -File .\setup-vibemode-codex-desktop.ps1
powershell -ExecutionPolicy Bypass -File .\setup-vibemode-codex-desktop.ps1 -WslDistro Ubuntu
powershell -ExecutionPolicy Bypass -File .\setup-vibemode-codex-desktop.ps1 -NoWsl
powershell -ExecutionPolicy Bypass -File .\setup-vibemode-codex-desktop.ps1 -ReplaceKey
powershell -ExecutionPolicy Bypass -File .\setup-vibemode-codex-desktop.ps1 -KeyFromClipboardTermux:
bash setup-vibemode-codex-termux.shБез интерактива с переменной окружения:
CODEX_KEY='...' bash setup-vibemode-codex-desktop.sh --non-interactive
CODEX_KEY='...' bash setup-vibemode-codex-termux.sh --non-interactiveВыбрать другую модель:
CODEX_KEY='...' bash setup-vibemode-codex-desktop.sh --non-interactive --model gpt-5.6-sol
CODEX_KEY='...' bash setup-vibemode-codex-termux.sh --non-interactive --model gpt-5.5Заменить сохранённый ключ:
bash setup-vibemode-codex-desktop.sh --replace-key
bash setup-vibemode-codex-termux.sh --replace-keyДокументация по Desktop: docs/codex-desktop.md.
Проверка
Локальные тесты:
bash tests/run.sh