Skip to content

Latest commit

 

History

History
493 lines (391 loc) · 43.3 KB

File metadata and controls

493 lines (391 loc) · 43.3 KB

make codex open!

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

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

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
flowchart LR
  codex[Сессия Codex<br/>CLI, App, SSH, мобильный] --> proxy[opencodex]
  proxy --> existing{Существующий тред?}
  existing -->|да| pinned[Оставить тот же<br/>аккаунт ChatGPT]
  existing -->|новая сессия| quota[Обновление квот<br/>5 ч, неделя, 30 дней]
  quota --> pick[Выбор работоспособного аккаунта<br/>с наименьшим использованием]
  pick --> upstream[Бэкенд ChatGPT / Codex]
  pinned --> upstream
  upstream --> outcomes[Результат квоты / аутентификации]
  outcomes -->|429| cooldown[Кулдаун + failover]
  outcomes -->|401 / 403| reauth[Требуется переавторизация]
  cooldown --> quota
Loading

Поддерживаемые платформы

ОС Статус Менеджер служб
macOS (arm64 / x64) Полная поддержка launchd
Linux (x64 / arm64) Полная поддержка systemd (пользовательский unit)
Windows (x64) Полная поддержка Task Scheduler (скрыто) / опциональная нативная служба (--native, WinSW)

Требуется Node 18+. Рантайм Bun добавляется автоматически при npm install — отдельно устанавливать Bun не нужно. Все три платформы работают нативно (WSL на Windows не требуется).

Быстрый старт

# Установка (рантайм 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:

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).

Добавление провайдера

Быстрее всего добавить провайдера через веб-панель управления:

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 обратно в нативные, а исходная форма со всеми слэшами тоже продолжает работать.

# 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-<provider>--<model>, 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) — для надёжного делегирования между провайдерами используйте поверхность 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 или в документации по провайдерам.

Поддержка 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

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 <provider>          # вход через OAuth (xai, anthropic, kimi, cursor, ...)
ocx logout <provider>          # удалить сохранённый вход
ocx account <list|current|use> # просмотр/переключение аккаунтов и пулов 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-пакет, очистите локальное состояние:

ocx uninstall
npm uninstall -g @bitkyc08/opencodex

ocx uninstall останавливает прокси, удаляет установленную службу, удаляет shim для Codex, восстанавливает нативные конфигурацию/каталог/историю Codex и удаляет ~/.opencodex.

Конфигурация

Конфигурация хранится в ~/.opencodex/config.json. Если файл не удаётся разобрать (например, JSON обрезан или испорчен вручную), opencodex сохраняет его резервную копию в config.json.invalid-<timestamp>, выводит предупреждение и переходит на значения по умолчанию — исходный файл никогда не теряется молча.

Типичная конфигурация с несколькими провайдерами:

{
  "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-совместимый сервер, запущенный на вашей машине:

{
  "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):

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 перепривязывал историю ещё до появления поддержки резервных копий, можно выполнить явную команду восстановления:

ocx recover-history --legacy-openai

Описание всех полей — в справочнике по конфигурации.

Документация

Публичная документация — установка, провайдеры, маршрутизация, сайдкары, интеграция с Codex, селектор моделей Codex App и справочник по CLI/конфигурации — собирается из docs-site/ и публикуется на opencodex.me.

Заметки мейнтейнеров, служащие источником истины, находятся в structure/. Материалы прошлых исследований хранятся в docs/. Инструкции для контрибьюторов — в CONTRIBUTING.md, а порядок сообщений о проблемах безопасности — в SECURITY.md.

Разработка

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. Пока вы работаете над панелью управления, запускайте фронтенд отдельно:

bun run dev:gui

См. руководство для контрибьюторов.

Отказ от ответственности

opencodex — независимый проект, поддерживаемый сообществом; он не аффилирован с OpenAI, Anthropic или каким-либо другим провайдером и не одобрен ими.

Некоторые провайдеры — в частности Anthropic (Claude) — могут приостанавливать или ограничивать аккаунты, которые направляют API-трафик через сторонние прокси. Используйте на свой страх и риск (UAYOR). Прежде чем подключать провайдера, изучите его условия использования и убедитесь, что доступ через прокси разрешён. Мейнтейнеры opencodex не несут ответственности за какие-либо действия вышестоящих провайдеров в отношении аккаунтов.

Лицензия

MIT