make codex open!

Универсальный прокси провайдеров для OpenAI Codex & Claude Code
Две команды — и Codex, и Claude Code работают на любой LLM, которую вы укажете.

Подписывайтесь на @claudeebum в X npm version license node version

```bash npm install -g @bitkyc08/opencodex ocx start # прокси + дашборд: localhost:10100 ```

Claude Code работает на маршрутизированной модели через opencodex — в строке состояния активна gpt-5.6-luna-medium
Claude Code на любой модели. Селектор — обычный Claude Code, а вот модель за ним — какую захотите.

Демонстрация opencodex — выполнение задачи в приложении Codex на маршрутизируемой модели не от OpenAI
Codex на любой модели. Выберите провайдера — и вперёд: тот же рабочий процесс Codex, другой «мозг».

English · 한국어 · 简体中文 · Русский · 日本語 · 📖 Полная документация →

Архитектура opencodex — Codex CLI направляет запросы через прокси opencodex к любому LLM-провайдеру

Используйте Claude, Gemini, Grok, GLM, DeepSeek, Kimi, Qwen, Ollama или любую другую LLM с Codex — и с **Claude Code** — не дожидаясь, пока кто-нибудь добавит поддержку. opencodex — это лёгкий локальный прокси, который транслирует Responses API Codex в протокол, понятный вашему провайдеру. Потоковая передача, вызовы инструментов, токены рассуждений, изображения — всё работает в обе стороны. Кроме того, opencodex умеет управлять **пулом аккаунтов ChatGPT** для аутентификации Codex. Добавьте несколько аккаунтов ChatGPT / Codex, обновляйте их квоты (5 ч / неделя / 30 дней) в панели управления — и новые сессии будут автоматически направляться на работоспособный аккаунт с наименьшим использованием. Существующие треды Codex остаются закреплёнными за аккаунтом, с которого они начались, поэтому длительные сессии по SSH, в tmux или с мобильного устройства не переключаются между аккаунтами посреди разговора. ``` Codex CLI / App / SDK ──/v1/responses──▶ opencodex ──▶ Any provider │ Anthropic · Google · xAI · Kimi · Ollama Cloud · Groq OpenRouter · Azure · DeepSeek · GLM · …and OpenAI itself ``` ```mermaid flowchart LR codex[Сессия Codex
CLI, App, SSH, мобильный] --> proxy[opencodex] proxy --> existing{Существующий тред?} existing -->|да| pinned[Оставить тот же
аккаунт ChatGPT] existing -->|новая сессия| quota[Обновление квот
5 ч, неделя, 30 дней] quota --> pick[Выбор работоспособного аккаунта
с наименьшим использованием] pick --> upstream[Бэкенд ChatGPT / Codex] pinned --> upstream upstream --> outcomes[Результат квоты / аутентификации] outcomes -->|429| cooldown[Кулдаун + failover] outcomes -->|401 / 403| reauth[Требуется переавторизация] cooldown --> quota ``` ## Поддерживаемые платформы | ОС | Статус | Менеджер служб | |---|---|---| | macOS (arm64 / x64) | Полная поддержка | launchd | | Linux (x64 / arm64) | Полная поддержка | systemd (пользовательский unit) | | Windows (x64) | Полная поддержка | Task Scheduler (скрыто) / опциональная нативная служба (`--native`, WinSW) | Требуется [Node](https://nodejs.org) 18+. Рантайм Bun добавляется автоматически при `npm install` — отдельно устанавливать Bun не нужно. Все три платформы работают нативно (WSL на Windows не требуется). ## Быстрый старт ```bash # Установка (рантайм Bun добавляется автоматически — нужен только Node 18+) # Предпочитайте Node, принадлежащий пользователю (nvm/fnm), — избегайте `sudo npm install -g …` npm install -g @bitkyc08/opencodex # Интерактивная настройка (записывает конфигурацию, встраивается в Codex и предлагает установить shim автозапуска) ocx init # Запуск прокси ocx start # Если вы пропустили этот шаг в init, shim автозапуска по требованию можно установить позже ocx codex-shim install # Используйте Codex как обычно — теперь запросы идут через opencodex codex "Write a hello world in Rust" ```
Ошибка «bundled Bun runtime is missing» / npm заблокировал установочные скрипты Bun?
opencodex поставляет рантайм Bun как зависимость и запускает его через Node-лончер, поэтому устанавливать Bun самостоятельно **не нужно**. Если вы видите ошибку «bundled Bun runtime is missing», значит при установке были пропущены lifecycle-скрипты (в том числе когда npm блокирует postinstall Bun через `allowScripts`) или опциональные зависимости. Переустановите пакет без этих флагов, разрешив установочный скрипт Bun: ```bash npm install -g --allow-scripts=bun @bitkyc08/opencodex # без --ignore-scripts и без --omit=optional # если первоначальная установка выполнялась через sudo, продолжайте использовать sudo: sudo npm install -g --allow-scripts=bun @bitkyc08/opencodex ``` Собственное предупреждение npm предлагает сокращённую команду без имени пакета — такая команда переустановит текущий каталог, поэтому всегда указывайте `@bitkyc08/opencodex` явно. Если вы устанавливали пакет через `sudo` в prefix, принадлежащий root, показанная выше переустановка с sudo разблокирует этот prefix — но при возможности лучше перейти на Node, принадлежащий пользователю (nvm, fnm или пользовательский prefix npm).
## Добавление провайдера Быстрее всего добавить провайдера через веб-панель управления: ```bash ocx gui ``` Команда откроет панель управления по адресу `http://localhost:10100`. Далее: 1. Нажмите **«Add Provider»** 2. Выберите одного из **более чем 40 встроенных провайдеров** — или укажите собственный OpenAI-совместимый эндпоинт 3. Вставьте свой API-ключ (или войдите через OAuth для Anthropic, xAI и Kimi) 4. Модели **обнаруживаются автоматически** через эндпоинт провайдера `/v1/models` Новый провайдер готов к работе сразу же. Перезапуск не требуется. Провайдеров также можно добавлять через `ocx init` (интерактивный CLI) или напрямую редактируя `~/.opencodex/config.json`. ## Маршрутизация моделей Обращайтесь к любому настроенному провайдеру и модели с помощью синтаксиса `provider/model`: Провайдеры, у которых собственные id моделей содержат `/` (zenmux, openrouter, nvidia, …), отображаются в Codex с внутренними слэшами, заменёнными на `-` (например, `zenmux/moonshotai-kimi-k3-free`); прокси прозрачно преобразует такие id обратно в нативные, а исходная форма со всеми слэшами тоже продолжает работать. ```bash # Claude Opus через Anthropic codex -m "anthropic/claude-opus-5" "Explain this stack trace" # Gemini через Google codex -m "google/gemini-3-pro" "Write unit tests for auth.ts" # GLM через Ollama Cloud codex -m "ollama-cloud/glm-5.2" "Write a SQL migration" # Локальная модель через Ollama codex -m "ollama/llama3" "Refactor this function" ``` Если префикс `provider/` опущен, opencodex направляет запрос провайдеру по умолчанию — либо автоматически подбирает провайдера по шаблону имени модели (например, `claude-*` уходит в Anthropic, `gpt-*` — в OpenAI). Маршрутизируемые модели также появляются в селекторе моделей **Codex App** с настройками уровня рассуждений для каждой модели: Актуальные сборки Codex могут показывать уровни рассуждений `low`, `medium`, `high`, `xhigh`, `max` и `ultra`, если модель их объявляет. opencodex сохраняет `xhigh` и `max` как разные уровни, пока конфигурация провайдера явно не сопоставит один другому. `ultra` повторяет семантику оригинального Codex: этот уровень включает максимальные рассуждения и проактивное мультиагентное делегирование на стороне клиента, а перед отправкой запроса провайдеру преобразуется в `max`. Маршрутизируемые модели объявляют его только тогда, когда конфигурация провайдера включает его через `reasoningEfforts`. GPT-5.6 Sol/Terra/Luna добавлены как готовые к развёртыванию записи каталога для пресетов OpenAI API-ключа и OpenRouter (`gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`; OpenRouter использует `openai/...`). Их доступность по-прежнему ограничена превью-доступом на вышестоящей стороне; opencodex лишь подготавливает маршрутизацию и метаданные каталога для аккаунтов и провайдеров, которые могут их обслуживать.

Codex App с маршрутизируемыми моделями opencodex и селектором уровня рассуждений

## Режимы аккаунтов провайдера OpenAI | ID провайдера | Маршрут | Учётные данные | Поведение | |---|---|---|---| | `openai` | Вход Codex | Основной + добавленные аккаунты Codex | По умолчанию Pool; опциональный режим Direct | | `openai-apikey` | OpenAI API | API-ключ / пул ключей | Без маршрутизации аккаунтов Codex | - Режим Pool охватывает основной вход Codex и добавленные аккаунты, поддерживая привязку (affinity), квоты, кулдаун и отказоустойчивое переключение (failover). - Режим Direct обходит состояние пула и использует только bearer-токен текущего вызывающего или основного входа. - Для новых установок и конфигураций без сохранённого режима по умолчанию действует Pool. Режим меняется на странице **Providers** панели управления; id моделей в обоих режимах остаются без префикса. - Устаревший публичный id провайдера `chatgpt` после миграции скрывается. Исходная конфигурация однократно сохраняется в `~/.opencodex/config.json.pre-openai-tiers-v2.bak`; восстановить её можно командой `cp ~/.opencodex/config.json.pre-openai-tiers-v2.bak ~/.opencodex/config.json`. - Актуальные конфигурации используют `openaiProviderTierVersion: 2`. Более ранние конфигурации v1 с тремя провайдерами автоматически мигрируют в единственную запись `openai`. - Уровень API включает виртуальные Pro-модели (`gpt-5.6-sol-pro`, `gpt-5.6-terra-pro`, `gpt-5.6-luna-pro`). На уровне протокола каждая из них переписывается в свою базовую модель с `reasoning.mode: "pro"`. - Его каталог зафиксирован на восьми id: `gpt-5.5`, `gpt-5.6`, Sol/Terra/Luna и три соответствующих виртуальных Pro-id. Обобщённого алиаса `gpt-5.6-pro` не существует. - Compact-запросы сохраняют выбранный уровень, но отправляют базовую модель без объекта reasoning. - Официальные метаданные API: контекст 1 050 000 токенов и максимум 922 000 входных токенов. Используйте `gpt-5.6-sol` для настроенного режима аккаунтов `openai` и `openai-apikey/gpt-5.6-sol` для API-ключа. Учётные данные входа Codex и API никогда не подменяют друг друга. ### Поведение пула аккаунтов Откройте раздел **Codex Auth** в панели управления, чтобы добавить аккаунты и выбрать, какой из них обслужит следующую сессию Codex. opencodex гарантирует следующее поведение: - **Существующие сессии сохраняют привязку.** Идентификатор треда привязывается к выбранному аккаунту и переиспользуется на последующих ходах, поэтому длинный запрос или сессия с мобильного устройства либо по SSH продолжает работать с тем же аккаунтом. - **Новые сессии могут маршрутизироваться автоматически.** При включённом автопереключении opencodex сравнивает самое «горячее» из известных окон квоты по использованию за 5 ч, неделю и 30 дней и, как только активный аккаунт пересекает порог, выбирает для новых сессий подходящий аккаунт с меньшим использованием. - **Проверка квот встроена.** Панель управления обновляет квоты всех аккаунтов одним кликом, а журнал запросов помечает трафик пула порядковыми номерами аккаунтов без персональных данных. - **Сбои обрабатываются безопасно (fail closed).** При сбое токена аккаунт помечается как требующий переавторизации вместо тихого перехода на другие учётные данные; ответы 429 о превышении квоты отправляют аккаунт в кулдаун, а последующая работа может быть переключена на другой подходящий аккаунт пула. ## Основные возможности - **Любая LLM в Codex.** Пять протокольных адаптеров покрывают Anthropic Messages, Google Gemini, Azure, сквозной режим OpenAI Responses и любой OpenAI-совместимый эндпоинт Chat Completions — это более 40 провайдеров из коробки. - **Любая LLM и в Claude Code.** Тот же демон обслуживает Anthropic Messages API (`/v1/messages` + `count_tokens`): `ocx claude` запускает Claude Code с полностью готовой конфигурацией, а маршрутизируемые модели появляются в его родном селекторе `/model` благодаря обнаружению моделей через шлюз (алиасы `claude-ocx---`, Claude Code 2.1.129+). Слоты и сопоставления моделей настраиваются на странице Claude панели управления. - **Безопасный пул аккаунтов ChatGPT.** Существующие треды Codex остаются на одном аккаунте, а новые сессии могут автоматически выбирать из пула аккаунт с меньшим использованием — с обновлением квот и метками запросов без персональных данных. - **Один вход — и никаких API-ключей.** Поддержка OAuth для xAI, Anthropic и Kimi позволяет аутентифицироваться существующим аккаунтом; токены обновляются автоматически. Либо пробросьте свой `codex login`, вставьте API-ключ или используйте ссылки вида `${ENV_VAR}` — как вам удобнее. - **Работает везде, где работает Codex.** Автоматически встраивается в Codex CLI, TUI, App и SDK. Маршрутизируемые модели отображаются в селекторе моделей Codex наравне с нативными. - **Встраивание без риска для истории.** При локальной установке прокси перенаправляет встроенный провайдер Codex `openai` на себя одной строкой `openai_base_url` — новые треды сохраняют нативный тег провайдера, поэтому текущая история чатов никогда не перепривязывается, и даже некорректное завершение работы не может её скрыть. (Треды, перетегированные старыми версиями, однократно мигрируются обратно при первом запуске; при удалённой/LAN-привязке вместо этого используется отдельная запись провайдера, поскольку ей нужен заголовок с API-ключом.) - **Делегируйте задачи подходящей модели.** Через панель управления или конфигурацию можно вывести до пяти маршрутизируемых или нативных моделей в селектор подагентов Codex — сложные задачи отправляйте модели с развитыми рассуждениями, быстрые — дешёвой. На мультиагентной поверхности v2 (GPT-5.6 Sol/Terra) прокси внедряет компактные указания по делегированию: предпочтительную модель и уровень рассуждений подагента (`injectionModel` / `injectionEffort`), список отобранных моделей со шкалой уровней, которую поддерживает каждая из них, и правила `fork_turns`, позволяющие кросс-модельным вызовам `spawn_agent` применять свои переопределения. Известное ограничение: когда нативный родитель порождает маршрутизируемого потомка, тело задачи в настоящий момент может прийти зашифрованным на бэкенде и потеряться ([#92](https://github.com/lidge-jun/opencodex/issues/92)) — для надёжного делегирования между провайдерами используйте поверхность v1. Хотите свои формулировки? Задайте `injectionPrompt` с плейсхолдерами `{{model}}` / `{{effort}}` / `{{roster}}`. - **Готовность к превью-релизам OpenAI.** Записи GPT-5.6 Sol/Terra/Luna сохраняют исходные шкалы уровней рассуждений. Direct/Multi используют контракт Codex на 372k токенов; OpenAI API и OpenRouter — метаданные на 1.05M, когда открыт вышестоящий доступ. - **Суперспособности для любой модели.** Модели не от OpenAI получают настоящий веб-поиск и понимание изображений через сайдкар `gpt-5.4-mini`, работающий поверх вашего входа ChatGPT. - **Нативная генерация изображений.** Автономный инструмент Codex `image_gen` использует `POST /v1/images/generations` для генерации и `POST /v1/images/edits` для правок; он не связан с размещённым инструментом Responses `image_generation`. - **Видно, что происходит.** Веб-панель управления показывает провайдеров, статус OAuth, выбор моделей и живой журнал запросов, включая количество кэшированных и записанных в кэш токенов, когда вышестоящий провайдер их сообщает, — больше не нужно гадать, почему запрос не прошёл. - **Работает в фоне.** Установите как системную службу (launchd / systemd / Task Scheduler) и забудьте о ней. На macOS/Linux прокси стартует при входе в систему; на Windows бэкенд Task Scheduler по умолчанию запускается при входе (без окон), либо используйте `ocx service install --native`, чтобы получить полноценную службу Windows, стартующую при загрузке. - **Чистый выход без следов.** `ocx stop` (или кнопка Stop в панели управления) завершает работу прокси, останавливает фоновую службу, если она установлена, и возвращает Codex к исходной конфигурации. Обычный `codex` работает ровно так же, как раньше, — без остатков конфигурации и осиротевших процессов. ## Провайдеры и адаптеры | Провайдер | Адаптер | Аутентификация | |---|---|---| | OpenAI (вход ChatGPT) | `openai-responses` | forward (ключ не нужен) | | OpenAI (API-ключ) | `openai-responses` | key | | Umans AI Coding Plan | `anthropic` | key | | Anthropic Claude | `anthropic` | oauth / key | | xAI Grok | `openai-chat` | oauth / key | | Kimi (Moonshot) | `openai-chat` | oauth / key | | Google Gemini | `google` | key | | Azure OpenAI | `azure-openai` | key | | Cursor (экспериментально) | `cursor` | панель управления/локальный конфиг; живой транспорт; небезопасное нативное локальное выполнение включается явно | | Ollama Cloud + каталог из 17 провайдеров | `openai-chat` | key | | Ollama / vLLM / LM Studio (локально) | `openai-chat` | key (обычно пустой) | | Любой OpenAI-совместимый эндпоинт | `openai-chat` | key | А также DeepSeek, Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax, Qwen Cloud, Tencent Cloud Coding Plan, SiliconFlow и другие. Полный список — в `ocx init` или в [документации по провайдерам](https://opencodex.me/reference/configuration/). Поддержка Cursor — поэтапный экспериментальный мост: он появляется в `ocx init` и в селекторе Add Provider панели управления как локальная конфигурация со статическим публичным каталогом моделей Cursor. Живой транспорт HTTP/2 включается, когда настроен токен доступа Cursor. Управляемое сервером Cursor нативное выполнение read/write/delete/ls/grep/shell/fetch по умолчанию отключено, поскольку оно обходит механизм подтверждений и песочницу Codex; устанавливайте `unsafeAllowNativeLocalExec: true` только для доверенных локальных экспериментов. MCP, запись экрана и computer-use доступны через хуки исполнителя; если локальный исполнитель не настроен, opencodex возвращает типизированные ответы об отсутствии исполнителя вместо блокировки запроса политикой. Для экспериментального адаптера Cursor включены Cursor OAuth и живое обнаружение моделей. ## CLI ```bash ocx init # интерактивная настройка ocx start [--port 10100] # запустить прокси; если порт занят, выбирается свободный ocx stop # остановить + восстановить нативный Codex ocx restore # восстановить без остановки (алиас: ocx eject) ocx uninstall # удалить службу/shim/конфигурацию и восстановить нативный Codex ocx ensure # запустить при необходимости + обновить конфигурацию/кэш Codex ocx sync # обновить модели + заново встроиться в Codex ocx codex-shim install # выполнять `ocx ensure` при каждом запуске `codex` ocx status # работает ли прокси? ocx login # вход через OAuth (xai, anthropic, kimi, cursor, ...) ocx logout # удалить сохранённый вход ocx account # просмотр/переключение аккаунтов и пулов API-ключей (маскировано; также refresh/auto-switch/remove/add-key) ocx gui # открыть веб-панель управления ocx claude [args...] # запустить Claude Code, подключённый к прокси (обнаружение моделей включено) ocx service [install|start|stop|status|uninstall] # установить/обновить/запустить фоновую службу ocx update [--tag preview] # обновить opencodex; preview-установки остаются на @preview ``` ### Автозапуск: служба или shim У opencodex есть два способа автоматически запускать прокси: | | `ocx service` / `ocx service install` | `ocx codex-shim install` | |---|---|---| | **Как** | Менеджер служб ОС (launchd / systemd / schtasks) | Оборачивает скриптовые лончеры `codex`; настоящий `codex.exe` не затрагивается | | **Когда** | Всегда работает после входа в систему | По требованию — выполняет `ocx ensure` при запуске `codex` | | **Перезапуск** | Автоматический перезапуск при сбое | Запускается один раз на каждый вызов `codex` | | **Обновления Codex** | Не влияют | Стабильно заменённый лончер восстанавливается следующей обычной командой `ocx` | | **Удаление** | `ocx service uninstall` | `ocx codex-shim uninstall` | Используйте **службу**, если прокси должен работать постоянно (рекомендуется для машин разработчиков). Если внешнее обновление Codex перезапишет установленный shim, следующая обычная команда `ocx` сохранит стабильный новый лончер в резервную копию и восстановит shim. Лончер, который ещё меняется, остаётся нетронутым до следующей команды. Ошибка восстановления выдаёт предупреждение, но не приводит к сбою запрошенной команды; ручной вариант — `ocx codex-shim install`. Для отключения установите `codexShimAutoRestore` в `false` или задайте процессу `OPENCODEX_CODEX_SHIM_AUTO_RESTORE=0`. Используйте **shim** для лёгкого запуска прокси по требованию без фонового демона. Автозапуск через shim включён по умолчанию и отключается в GUI-панели управления. Если настроенный порт прокси уже занят, `ocx start` автоматически выберет другой свободный локальный порт и обновит настройки Codex. ### Удаление Прежде чем удалять npm-пакет, очистите локальное состояние: ```bash ocx uninstall npm uninstall -g @bitkyc08/opencodex ``` `ocx uninstall` останавливает прокси, удаляет установленную службу, удаляет shim для Codex, восстанавливает нативные конфигурацию/каталог/историю Codex и удаляет `~/.opencodex`. ## Конфигурация Конфигурация хранится в `~/.opencodex/config.json`. Если файл не удаётся разобрать (например, JSON обрезан или испорчен вручную), opencodex сохраняет его резервную копию в `config.json.invalid-`, выводит предупреждение и переходит на значения по умолчанию — исходный файл никогда не теряется молча. Типичная конфигурация с несколькими провайдерами: ```json { "port": 10100, "defaultProvider": "anthropic", "providers": { "anthropic": { "adapter": "anthropic", "baseUrl": "https://api.anthropic.com", "authMode": "oauth", "defaultModel": "claude-sonnet-4-6" }, "ollama-cloud": { "adapter": "openai-chat", "baseUrl": "https://ollama.com/v1", "apiKey": "${OLLAMA_API_KEY}", "defaultModel": "glm-5.2" } } } ``` Записи провайдеров могут также задавать метаданные маршрутизируемого каталога. Используйте `contextWindow` для видимого в Codex лимита контекста на весь провайдер, `modelContextWindows` — для лимитов отдельных моделей, а `modelInputModalities` — для подсказок каталога о входных модальностях конкретных моделей, например `["text"]` или `["text", "image"]`. Значения контекста лишь ограничивают живые метаданные `/models` сверху; они никогда не увеличивают меньшее живое контекстное окно. Встроенные резервные метаданные GPT-5.6 Sol/Terra/Luna используют контекстное окно в 1 050 000 токенов для записей каталога OpenAI API-ключа и OpenRouter; вышестоящий превью-доступ они не обходят. Полный список полей — в справочнике по конфигурации. > **Контекст 1M у GLM-5.2 через Z.AI:** через адаптер `openai-chat` работают и `glm-5.2`, > и `glm-5.2[1m]` — opencodex отрезает завершающий суффикс `[1m]` перед отправкой > запроса, поскольку OpenAI-совместимые эндпоинты отклоняют id со скобками > (Z.AI 400, код 1211). Суффикс `[1m]` — это конвенция Claude Code / эндпоинтов Anthropic; > чтобы использовать его нативно, направьте адаптер `anthropic` на кодинговую базу Z.AI > (`https://api.z.ai/api/coding/paas/v4`). Контекстное окно 1M задавайте через каталог > моделей (`modelContextWindows`), а не через имя модели. Локальные модели тоже работают. Направьте opencodex на любой OpenAI-совместимый сервер, запущенный на вашей машине: ```json { "port": 10100, "defaultProvider": "ollama", "providers": { "ollama": { "adapter": "openai-chat", "baseUrl": "http://localhost:11434/v1", "authMode": "key", "apiKey": "", "defaultModel": "llama3" }, "vllm": { "adapter": "openai-chat", "baseUrl": "http://localhost:8000/v1", "authMode": "key", "apiKey": "", "defaultModel": "Qwen/Qwen3-32B" } } } ``` Транспорт WebSocket по умолчанию выключен. Устанавливайте `"websockets": true`, только если хотите, чтобы Codex объявлял и использовал WebSocket-путь Responses вместо HTTP/SSE. ### Удалённый доступ По умолчанию opencodex привязывается к `127.0.0.1` (loopback) и не требует дополнительной аутентификации. Если вы задаёте `"hostname": "0.0.0.0"`, открывая прокси в локальной сети, opencodex требует bearer-токен для защиты как управляющего API (`/api/*`), так и плоскости данных (`/v1/responses`, `/v1/images/generations` и `/v1/images/edits`): ```bash export OPENCODEX_API_AUTH_TOKEN="your-secret-token" ocx start ``` Без этой переменной прокси откажется запускаться при привязке за пределами loopback. Если вы устанавливаете фоновую службу для доступа из локальной сети, экспортируйте ту же переменную перед `ocx service install`, чтобы менеджер служб её получил. Клиенты (скрипты, удалённые машины) должны передавать токен в каждом запросе: ``` x-opencodex-api-key: your-secret-token ``` Токен сравнивается за постоянное время для защиты от атак по времени. opencodex автоматически перепривязывает историю возобновления Codex, чтобы старые чаты OpenAI и созданные opencodex проектные треды оставались видимыми в Codex App, пока прокси активен. Исходные метаданные provider/source opencodex записывает в `~/.opencodex/codex-history-backup.json`. `ocx stop` / `ocx restore` возвращает сохранённые в резервной копии строки OpenAI обратно к OpenAI, а оставшиеся пользовательские треды opencodex также переводит на OpenAI, чтобы нативный Codex не пытался возобновить тред, провайдера которого больше нет в `config.toml`. Если вы тестировали более старую сборку для разработки, где `syncResumeHistory` перепривязывал историю ещё до появления поддержки резервных копий, можно выполнить явную команду восстановления: ```bash ocx recover-history --legacy-openai ``` Описание всех полей — в **[справочнике по конфигурации](https://opencodex.me/reference/configuration/)**. ## Документация Публичная документация — установка, провайдеры, маршрутизация, сайдкары, интеграция с Codex, селектор моделей Codex App и справочник по CLI/конфигурации — собирается из [`docs-site/`](../docs-site) и публикуется на **[opencodex.me](https://opencodex.me/)**. Заметки мейнтейнеров, служащие источником истины, находятся в [`structure/`](../structure). Материалы прошлых исследований хранятся в [`docs/`](../docs). Инструкции для контрибьюторов — в [`CONTRIBUTING.md`](../CONTRIBUTING.md), а порядок сообщений о проблемах безопасности — в [`SECURITY.md`](../SECURITY.md). ## Разработка ```bash git clone https://github.com/lidge-jun/opencodex.git cd opencodex bun install bun run dev:proxy # запустить API прокси в dev-режиме bun run dev:gui # запустить dev-сервер панели управления в другом терминале bun x tsc --noEmit # проверка типов ``` `bun run dev` для совместимости остаётся алиасом `bun run dev:proxy`. В чекауте исходников API прокси предоставляет `/healthz`, `/v1/responses`, `POST /v1/images/generations`, `POST /v1/images/edits` и `/api/*`; `GET /` отдаёт упакованную панель управления только после того, как `bun run build:gui` создаст `gui/dist`. Пока вы работаете над панелью управления, запускайте фронтенд отдельно: ```bash bun run dev:gui ``` См. **[руководство для контрибьюторов](../CONTRIBUTING.md)**. ## Отказ от ответственности opencodex — независимый проект, поддерживаемый сообществом; он **не аффилирован с OpenAI, Anthropic или каким-либо другим провайдером и не одобрен ими**. Некоторые провайдеры — в частности Anthropic (Claude) — могут приостанавливать или ограничивать аккаунты, которые направляют API-трафик через сторонние прокси. **Используйте на свой страх и риск (UAYOR).** Прежде чем подключать провайдера, изучите его условия использования и убедитесь, что доступ через прокси разрешён. Мейнтейнеры opencodex не несут ответственности за какие-либо действия вышестоящих провайдеров в отношении аккаунтов. ## Лицензия MIT