Авторский проект · доступ владельца
Codex Gateway
Codex Gateway — Ruby proxy перед модельным API. Он управляет несколькими конфигурациями доступа, выборочно инспектирует только Codex-трафик, проксирует HTTP, SSE и WebSocket и считает usage по пользователям. Копия очищенных событий уходит в ограниченный outbox и NATS, не блокируя основной запрос Codex.
01 / Задача
Ruby proxy для управляемого доступа Codex
Нужно было дать нескольким Codex-клиентам управляемый доступ через один шлюз, видеть сроки конфигураций, ошибки и расход токенов и при этом не превращать мониторинг в новую точку отказа.
Сценарий: Владелец управляет доступом и статистикой в закрытом интерфейсе; Codex-клиенты используют отдельные proxy credentials; Codex Monitor получает только очищенную копию событий.
Что делал
- Реализовал Ruby proxy и маршрутизацию CONNECT с выборочной TLS-инспекцией доменов Codex.
- Добавил HTTP, SSE и WebSocket transport, потоковый разбор usage и восстановление соединений.
- Связал конфигурации доступа, proxy-пользователей, лимиты, статистику и административный интерфейс.
- Добавил неблокирующий outbox и отправку очищенных событий в NATS для Codex Monitor.
Скриншоты
Экраны, формы, ошибкиСкриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.
02 / Технологии
Что использовано
Ruby
MITM proxy, маршрутизация CONNECT и сервер административного интерфейса.
OpenSSL
Локальные сертификаты и выборочная инспекция разрешённого трафика.
HTTP / SSE / WebSocket
Обычные и потоковые запросы Codex, reconnect и usage.
NATS / outbox
Неблокирующая доставка очищенных событий в мониторинг.
03 / Решения
Как устроен проект
- TLS-инспекция включается только для разрешённых Codex-hostnames; остальной CONNECT остаётся обычным туннелем.
- Основной ответ клиенту не ждёт NATS: при недоступности мониторинга событие попадает в ограниченный outbox, а Codex продолжает работу.
- SSE и WebSocket разбираются по мере поступления с учётом разделённых сообщений, UTF-8 и reconnect.
- Секретные заголовки и токены исключаются до формирования события мониторинга.
04 / Проверка
Сценарии демки
- Открыть закрытую панель и проверить активную конфигурацию, сроки и состояние обновления.
- Сопоставить usage proxy-пользователя с агрегатами за 24 часа и 7 дней.
- Проверить прохождение HTTP, SSE и WebSocket и состояние Ruby proxy.
- Открыть документацию proxy и границы TLS-инспекции.
Результаты проверок
- Рабочий Gateway обслуживает Codex-клиентов и показывает агрегированный usage по отдельным proxy-пользователям.
- Восемь снимков получены с действующего экземпляра; серверные данные не изменялись, ошибок страницы не обнаружено.
Ограничения
- Административный интерфейс закрыт Basic Auth; публичная страница содержит только обезличенные снимки.
- Снимки показывают реальные агрегаты, но аккаунты и конфигурационные значения заменены в DOM перед кадром.
- Tracing в самом Gateway не является источником публичного эфира: живые события передаются в отдельный Codex Monitor-контур.
Технические заметки
Модули, API, схема данных, запуск и результаты проверок.
Документация →Материалы ↓