Сервис владельца · безопасные снимки интерфейса

Codex Gateway

Codex Gateway — Ruby proxy перед модельным API. Он управляет несколькими конфигурациями доступа, выборочно инспектирует только Codex-трафик, проксирует HTTP, SSE и WebSocket и считает usage по пользователям. Копия очищенных событий уходит в ограниченный outbox и NATS, не блокируя основной запрос Codex.

Сервис — нужен доступ ↗Документация →Исходный репозиторий приватный
Разработка и эксплуатация: 2026. Снимки подготовлены 8 сентября 2026.Версия 5a8e7e338 кадров интерфейса

Панель Gateway показывает активную конфигурацию, сроки токенов и агрегированный расход по пользователям. Видимые аккаунты заменены только в DOM перед снимком.

01 / Задача

Ruby proxy для управляемого доступа Codex

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

Сценарий: Владелец управляет доступом и статистикой в закрытом интерфейсе; Codex-клиенты используют отдельные proxy credentials; Synadia получает только очищенную копию событий.

Что делал

  • Реализовал Ruby proxy и маршрутизацию CONNECT с выборочной TLS-инспекцией доменов Codex.
  • Добавил HTTP, SSE и WebSocket transport, потоковый разбор usage и восстановление соединений.
  • Связал конфигурации доступа, proxy-пользователей, лимиты, статистику и административный интерфейс.
  • Добавил неблокирующий outbox и отправку очищенных событий в NATS для Synadia Live Monitor.

02 / Реализация

Что отличает реализацию

Gateway объединяет управление доступом, потоковый transport и наблюдаемость в одном Ruby-процессе, но выводит мониторинг из критического пути. Выборочная TLS-инспекция ограничена Codex-доменами; event copy очищается до NATS. Поэтому Synadia получает живые данные, а сбой NATS не прерывает работу Codex.

Скриншоты

Экраны, формы, ошибки

Скриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.

03 / Технологии

Что использовано

Ruby MITM / HTTP / SSE / WebSocket 86.1%Ruby event observer / outbox 13.9%

Доли по размеру прикладных файлов Git в закреплённой версии. Каждый файл отнесён к одной подсистеме по правилам scripts/generate-stack-share.mjs; тесты, ассеты, зависимости и generated-файлы исключены. Округление — до 0,1%. Это состав кода, а не уровень владения технологиями. Для Gateway измеряются два отслеживаемых Ruby-модуля proxy и observer; библиотеки базового образа в расчёт не входят.

Ruby

MITM proxy, маршрутизация CONNECT и сервер административного интерфейса.

OpenSSL

Локальные сертификаты и выборочная инспекция разрешённого трафика.

HTTP / SSE / WebSocket

Обычные и потоковые запросы Codex, reconnect и usage.

NATS / outbox

Неблокирующая доставка очищенных событий в мониторинг.

04 / Решения

Как устроен проект

  • TLS-инспекция включается только для разрешённых Codex-hostnames; остальной CONNECT остаётся обычным туннелем.
  • Основной ответ клиенту не ждёт NATS: при недоступности мониторинга событие попадает в ограниченный outbox, а Codex продолжает работу.
  • SSE и WebSocket разбираются по мере поступления с учётом разделённых сообщений, UTF-8 и reconnect.
  • Секретные заголовки и токены исключаются до формирования события мониторинга.
Поток Codex-трафика и очищенных событий
Поток Codex-трафика и очищенных событий

05 / Проверка

Сценарии демки

  1. Открыть закрытую панель и проверить активную конфигурацию, сроки и состояние обновления.
  2. Сопоставить usage proxy-пользователя с агрегатами за 24 часа и 7 дней.
  3. Проверить прохождение HTTP, SSE и WebSocket и состояние Ruby proxy.
  4. Открыть документацию proxy и границы TLS-инспекции.

Результаты проверок

  • Рабочий Gateway обслуживает Codex-клиентов и показывает агрегированный usage по отдельным proxy-пользователям.
  • Восемь снимков получены с действующего экземпляра; серверные данные не изменялись, ошибок страницы не обнаружено.

Ограничения

  • Административный интерфейс закрыт Basic Auth; публичная страница содержит только обезличенные снимки.
  • Снимки показывают реальные агрегаты, но аккаунты и конфигурационные значения заменены в DOM перед кадром.
  • Tracing в самом Gateway не является источником публичного эфира: живые события передаются в отдельный Synadia-контур.

Технические заметки

Модули, API, схема данных, запуск и результаты проверок.

Документация →Материалы ↓