ZyyandCodex 73c0ecdc4c feat(telemetry): add first-token latency observability
Measure TTFT from the first semantic response event across streaming, retry, scheduler, usage telemetry, and dashboard paths.

Expose first-token percentiles and concise UI labels, and isolate concurrent Redis-backed test runs.

Co-authored-by: Codex <noreply@openai.com>
2026-07-16 15:57:19 +08:00
2026-07-16 02:22:13 +08:00
2026-07-15 12:20:00 +08:00
2026-07-15 12:27:27 +08:00

Codex Proxy RS

Codex Proxy RS

基于 Rust 的高性能 Codex 多账号网关代理

CI Release GHCR MIT

快速开始 · 客户端接入 · 运维 · 部署文档 · 架构

Note

只支持 OpenAI Responses API,不提供 /v1/chat/completions。

能力

领域 实现
协议 Responses HTTP、SSE、官方 WebSocket
传输 会话级 WebSocket 池、共享 HTTP/2 后备
调度 智能调度、额度优先、轮询、粘滞
故障处理 额度、认证、封禁、模型与传输故障切换
身份 账号身份隔离、稳定 installation ID、会话拓扑透传
管理 账号、客户端 Key、模型别名、运行设置与在线更新
遥测 Token、费用、缓存、TTFT、延迟与错误

快速开始

需要 Docker Engine 与 Docker Compose Plugin。

1. 准备

git clone https://github.com/zyycn/codex-proxy-rs.git
cd codex-proxy-rs

mkdir -p .runtime/data .runtime/logs
install -d -m 0750 .runtime/postgres .runtime/redis
cp deploy/config.example.yaml deploy/config.yaml
sudo chown "$(id -u):10001" deploy/config.yaml
chmod 0640 deploy/config.yaml

分别执行三次:

openssl rand -hex 24

将结果写入 deploy/config.yaml:

配置 约束
x-cpr.database.password 48 位十六进制
x-cpr.redis.password 48 位十六进制
x-cpr.admin.default_password 至少 12 位,不能包含 $

Linux 需要允许容器组写入运行目录:

sudo chown -R "$(id -u):10001" .runtime/data .runtime/logs
chmod 0770 .runtime/data .runtime/logs

2. 启动

docker compose -f deploy/compose.yaml config --quiet
docker compose -f deploy/compose.yaml pull
docker compose -f deploy/compose.yaml up -d --no-build
curl -i http://127.0.0.1:8080/healthz

204 No Content 表示应用、PostgreSQL 与 Redis 均可用。管理端地址: http://127.0.0.1:8080。

3. 初始化

  1. 使用 admin@cpr.local 与初始密码登录。
  2. 添加 Codex 账号并执行连接测试。
  3. 创建 sk_... 客户端 Key。
  4. 复制 Codex CLI 配置,或导入 CCSwitch。

Note

admin.default_password 只在首次创建管理员时生效。

完整部署、权限和密码轮换规则见 deploy/README.md。

客户端接入

配置 值
Base URL http://127.0.0.1:8080/v1
API Key 管理端创建的 sk_...
鉴权 Authorization: Bearer <client-api-key>
curl http://127.0.0.1:8080/v1/models \
  -H 'Authorization: Bearer <client-api-key>'

curl http://127.0.0.1:8080/v1/responses \
  -H 'Authorization: Bearer <client-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "<model-id>",
    "input": "Reply with pong.",
    "stream": false
  }'
API 路由
路由 用途
POST /v1/responses JSON 或 SSE
GET /v1/responses Responses WebSocket
POST /v1/responses/review Review
GET /v1/models 模型列表
GET /v1/models/catalog 模型目录
GET /v1/models/{model_id} 模型详情

所有 /v1/* 路由都需要客户端 API Key。

运维

# 升级
docker compose -f deploy/compose.yaml pull codex-proxy-rs
docker compose -f deploy/compose.yaml up -d --no-build

# 日志
docker compose -f deploy/compose.yaml logs -f codex-proxy-rs

# 从源码构建
docker compose -f deploy/compose.yaml build codex-proxy-rs
docker compose -f deploy/compose.yaml up -d

Important

.runtime/ 保存数据库、Redis、身份密钥和日志。删除该目录会永久清除运行状态。

Compose 默认只绑定 127.0.0.1。公网接入应使用 HTTPS 反向代理,转发 WebSocket upgrade 与真实客户端 IP;不要暴露 PostgreSQL 或 Redis。

文档

S
Description
基于 Rust 的低风控、高性能、自托管多账号透明代理网关
Readme Apache-2.0
45 MiB
Languages
Rust 90%
Vue 5.7%
TypeScript 3.7%
PLpgSQL 0.4%
Ruby 0.1%