Codex Proxy RS

OpenAI 兼容的 ChatGPT / Codex 多账号代理网关

环境

  • Rust ≥ 1.95
  • Node ≥ 20,pnpm ≥ 9(仅开发管理端前端时需要)

快速开始

cargo run --manifest-path backend/Cargo.toml

启动后监听 http://0.0.0.0:8080,配置从运行目录下的 config.yaml 读取。首次启动会自动创建管理端账号(默认用户名密码见配置文件)。

Docker 部署:

cp deploy/config.example.yaml deploy/config.yaml
# 编辑 deploy/config.yaml,至少改掉 admin.default_password
docker compose -f deploy/docker-compose.yml build
docker compose -f deploy/docker-compose.yml up -d

挂载关系:deploy/config.yaml → /app/config.yaml,deploy/data → /app/data,deploy/logs → /app/logs。

API

所有接口通过 Authorization Bearer header 鉴权,API Key 在管理端创建和管理。

端点 说明
POST /v1/responses OpenAI responses 接口
POST /v1/chat/completions Chat completions 接口
GET /v1/models 模型列表
GET /v1/models/catalog 模型目录
/api/admin/* 管理端 API(前端调用)
curl http://127.0.0.1:8080/v1/responses \
  -H 'Authorization: Bearer <your-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"model": "gpt-5.5", "input": "Say hello", "stream": true}'

管理控制台

前端是 Vue 3 单页应用,源码在 frontend/。开发时:

pnpm --dir frontend dev

生产构建后由后端直接托管:

pnpm --dir frontend build
cargo run --manifest-path backend/Cargo.toml

管理端功能包括账号管理、API Key 管理、用量仪表盘、请求记录和运行时设置。账号、Key、模型路由等运行时配置在管理端操作,不写在 YAML 里。

配置

最小 config.yaml:

server:
  host: '0.0.0.0'
  port: 8080

api:
  base_url: 'https://chatgpt.com/backend-api'

database:
  url: 'sqlite://.runtime/data/codex-proxy-rs.sqlite'

logging:
  directory: .runtime/logs
  retention_days: 14

完整配置项见 deploy/config.example.yaml,包括 TLS、WebSocket 连接池、请求指纹、账号额度策略等。

运行数据目录:

.runtime/data/   # SQLite 数据库
.runtime/logs/   # 日志文件

架构

flowchart LR
    Client["客户端 / SDK"] -->|OpenAI API| Proxy["/v1/*"]
    Browser["浏览器"] -->|Web| Admin["/api/admin/*"]

    subgraph Gateway["codex-proxy-rs"]
        Proxy --> Auth["API Key 鉴权"]
        Auth --> Dispatch["调度层<br/>选账号 · 限并发 · 亲和性"]
        Dispatch --> Transport["上游传输<br/>HTTP SSE / WebSocket"]
        Dispatch --> Pool["账号池<br/>内存状态 + SQLite"]
        Admin --> SQLite[("SQLite")]
        Pool --> SQLite
    end

    Transport --> Upstream["ChatGPT / Codex API"]
    Proxy -.->|静态资源| SPA["Vue 3 管理端"]
    Admin -.-> SPA

项目结构

backend/
  src/        Rust 源码
  tests/      集成测试
  build/      构建脚本
frontend/     Vue 3 管理控制台
deploy/       Dockerfile、Compose、示例配置
docs/         设计与迁移文档

开发

cargo fmt --manifest-path backend/Cargo.toml --check
cargo clippy --manifest-path backend/Cargo.toml --all-targets --all-features --locked -- -D warnings
cargo test --manifest-path backend/Cargo.toml --test main
pnpm --dir frontend build

License

MIT

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