ai-zero-token
v2.0.8
Published
Local-first OpenAI-compatible AI CLI and gateway with Codex OAuth, multi-account management, and gpt-image-2 image generation/editing.
Maintainers
Readme
AI Zero Token
AI Zero Token 是一个本地优先的 OpenAI 兼容网关,用于把 ChatGPT/Codex OAuth 账号能力包装成本地 CLI、管理页和 HTTP API。
它适合本地单用户场景、原型验证、自动化脚本和 OpenAI-compatible 客户端接入。
这是实验性质的本地工具,不是 OpenAI 官方产品,也不建议作为生产级多租户网关使用。
功能
- OpenAI 风格本地接口:
GET /v1/modelsPOST /v1/responsesPOST /v1/chat/completionsPOST /v1/images/generationsPOST /v1/images/edits
- 支持 ChatGPT/Codex OAuth 登录和本地 token 自动刷新。
- 管理页支持多账号保存、切换和删除。
- 支持账号 JSON 导入/导出、ZIP 批量导入、复选框批量导出和导出记录提示。
- 支持把已保存账号应用到本机 Codex,并自动备份
~/.codex/auth.json。 - 支持
gpt-image-2文生图和 JSON 图生图;付费账号继续使用 Codex Responses 图片工具,Free 账号可在设置里选择是否启用 ChatGPT 网页图片链路。 - 支持 API 账号额度耗尽后自动切换到下一个账号,包括尚未同步额度的新账号,并可配置全局额度刷新并发数。
- 支持上游代理配置,覆盖 OAuth、模型刷新和接口转发。
- 模型列表优先读取本机 Codex 模型缓存,并支持手动从 Codex 后端同步。
- 面向 OpenClaw 增强 Chat Completions 兼容,支持流式、工具调用、工具结果消息和请求日志诊断。
- 支持本地持久化用量统计,记录已知 token、图片数、成功/失败、耗时,以及账号/模型/接口维度汇总。
技术架构

AI Zero Token 会把账号 token、网关配置和运行状态保存在本地,通过 OpenAI 兼容接口转发到当前选中的 ChatGPT/Codex OAuth 账号。管理页读取同一份本地状态,因此账号切换、应用到 Codex、代理配置和额度耗尽自动切换都可以在本地统一管理。
快速开始
npm install -g ai-zero-token
azt start启动后会打开本地管理页,并暴露本地网关:
http://127.0.0.1:8787
http://127.0.0.1:8787/v1如果客户端必须填写 API Key,可以填任意非空占位值;真正起作用的是本地网关里的账号授权。
桌面端预览
当前仓库已提供 Electron 桌面端预览入口。它会在桌面主进程中启动现有本地网关,并直接加载当前管理页:
npm run desktop构建桌面端发布包:
npm run dist:mac
npm run dist:win发布说明见 docs/DESKTOP_RELEASE.md。 桌面端安装包会在每次打标签发布后上传到 GitHub Releases:
桌面端第一版沿用现有默认监听策略:
0.0.0.0:8787本机客户端仍建议使用:
http://127.0.0.1:8787/v1macOS 桌面端还会常驻菜单栏,提供快速账号面板。可以从菜单栏切换网关账号、把账号应用到本机 Codex、刷新额度、复制 API Base URL 和重启本地网关。
管理页
管理页是推荐入口,可以完成:
- OpenAI Codex OAuth 登录。
- 导入一个或多个账号 JSON,或校验并导入包含多个账号 JSON 的 ZIP 压缩包。
- 切换当前账号。
- 导出单个账号或勾选导出多个账号,并在账号卡片上显示导出状态。
- 勾选后批量删除账号。
- 将已保存账号应用到本机 Codex。
- 配置默认文本模型和上游代理。
- 开启当前 API 账号额度耗尽后的自动切换,并配置不参与自动轮换的账号名单。
- 为账号池较多的场景调整全局额度刷新并发数。
- 测试
models、responses、chat.completions、images.generations、images.edits。 - 查看今日、本次启动和历史累计的本地用量统计。
- 当检测到新版本时显示全局顶部更新提示,分别引导桌面端下载 GitHub Release 和 npm 用户更新包。

API 使用
模型列表
curl http://127.0.0.1:8787/v1/modelsResponses
curl http://127.0.0.1:8787/v1/responses \
-H "content-type: application/json" \
-d '{"model":"gpt-5.4","input":"请只回复 OK"}'Chat Completions
curl http://127.0.0.1:8787/v1/chat/completions \
-H "content-type: application/json" \
-d '{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "请只回复 OK"
}
]
}'OpenClaw 或其他 OpenAI 兼容编程客户端可以这样配置:
Provider: OpenAI compatible
Base URL: http://127.0.0.1:8787/v1
API Key: local
Model: gpt-5.4
Streaming: enabled
Tools / function calling: enabled/v1/chat/completions 支持 stream=true、tools、tool_choice、parallel_tool_calls、assistant tool_calls、tool role 结果消息和 reasoning_effort。OpenClaw 请求也会在管理页请求日志里显示,并只保存安全摘要。
Codex CLI/Desktop 也可以把本工具配置成自定义 Responses provider:
管理页“系统设置”里可以先选择历史记录模式,再点击“接管 Codex 请求”。默认的 openai 模式会把历史继续留在 Codex 原生视图里;AI Zero Token 模式会创建单独的 provider 历史分组。点击“解除接管”会移除 AI Zero Token 管理的 provider 配置。也可以手动写入 ~/.codex/config.toml:
model = "gpt-5.4"
model_provider = "openai"
openai_base_url = "http://127.0.0.1:8787/codex/v1"这里继续使用 Codex 原生 openai provider 标识,只替换 openai_base_url,因此本地历史记录仍会留在同一个 Codex 历史视图里。
如果想让 Codex 显示独立的 AI Zero Token provider,就在设置里切换到对应模式。那会写入 [model_providers.ai-zero-token],而不是 openai_base_url。
当 Codex 请求里包含 image_generation 工具时,Plus、Team、Pro 等付费账号继续透传到 Codex Responses 图片工具;如果在设置里开启“Free 账号生图”,Free 账号会改走 ChatGPT 网页图片链路,并包装成 Codex Responses SSE 返回。这个分流解决的是上游服务差异:Free 账号可以有 ChatGPT 图片额度,但不一定拥有 Codex image_generation tool。
文生图
curl http://127.0.0.1:8787/v1/images/generations \
-H "content-type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "生成一张白底红苹果商品图,构图简洁,光线干净。",
"size": "1024x1024",
"quality": "low",
"response_format": "b64_json"
}'响应会返回 OpenAI 风格的 data[].b64_json。

图生图
/v1/images/edits 当前支持 JSON 请求,图片可以使用 URL、data URL 或裸 base64:
curl http://127.0.0.1:8787/v1/images/edits \
-H "content-type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "参考这张图,生成一张更适合科技产品广告的版本。",
"images": [
{
"image_url": "data:image/png;base64,替换为你的图片base64"
}
],
"size": "1024x1024",
"quality": "low",
"response_format": "b64_json"
}'更多示例见 docs/API_USAGE.md。
账号管理
AI Zero Token 的账号状态默认保存在:
~/.ai-zero-token/.state管理页支持:
- OAuth 登录。
- 从单个 profile、数组或
profilesbundle 导入。 - 从包含多个账号 JSON 的 ZIP 压缩包批量导入,导入前会先校验。
- 导出单个账号。
- 使用复选框批量导出已选择账号。
- 显示导出记录,包括导出次数、最近导出时间和导出方式。
- 删除单个账号或批量删除已选择账号。
- 切换当前账号。
导出的账号 JSON 包含认证 token,等同于登录凭据,只应在可信环境中使用。
应用到 Codex
应用到 Codex 会把选中的账号写入:
~/.codex/auth.json写入前会把原文件备份为 auth.json.azt-backup-*。新的 Codex 会话会使用该账号。
配置
默认监听:
0.0.0.0:8787本地网关 Base URL:
http://127.0.0.1:8787/v1限制浏览器 CORS 来源:
AZT_CORS_ORIGIN=http://127.0.0.1:8124 azt start多个来源用英文逗号分隔:
AZT_CORS_ORIGIN=http://127.0.0.1:8124,http://localhost:3000 azt start覆盖持久化状态目录:
AI_ZERO_TOKEN_HOME=/path/to/home azt start管理页里的配置会保存在同一个本地状态目录。额度耗尽自动切换会保存为 autoSwitch.enabled;开启后,网关会根据最近一次保存的额度快照判断当前 API 账号是否耗尽,并把 API 流量切到下一个仍有额度的账号。autoSwitch.excludedProfileIds 里的账号不参与自动轮换,但仍可手动应用。
全局额度刷新并发数可以在管理页设置里调整,默认 16。账号很多时可以调高;遇到上游限流或失败增多时建议调低。
默认请求体上限是 128 MiB,用于让 JSON base64 图片和 Codex 上下文压缩请求在本地场景里更实用;/codex/v1/responses/compact 专用路由会至少放宽到 256 MiB。可以用下面的环境变量覆盖:
AZT_BODY_LIMIT_MB=256 azt start生图额度
ChatGPT Images 的可用性和额度由上游账号决定。Plus、Team、Pro 等付费账号走 Codex Responses 的 image_generation tool。Free 账号只有在设置里开启“Free 账号生图”时才走 ChatGPT 网页图片链路;关闭时继续走原先 Codex 图片工具链路。Free 账号限制比付费账号更严格,官方没有公开固定张数;如果网页链路也耗尽额度,网关会展示上游真实返回。
付费账号图片请求内部使用 gpt-5.4-mini 作为编排模型,并把请求里的图片模型(例如 gpt-image-2)传给 image_generation tool;开启“Free 账号生图”后,Free 账号会把同样的请求转换为 ChatGPT 网页图片任务。
对于 JSON 图生图,base64 通常比原始图片大约 33%。在默认 128 MiB 请求体上限下,原始图片约 96 MiB 是比较实际的上限,再大就容易被 JSON 开销和本地内存影响。大图或批量场景建议优先使用可访问的图片 URL。
当前限制
- 项目默认面向本地单用户使用。
/v1/chat/completions已支持 OpenAI 风格 SSE 流式;Codex 自定义 provider 使用/codex/v1/responses和/codex/v1/responses/compact专用路由做上游 Responses SSE 透传。/v1/chat/completions支持常见工具/函数调用字段,但暂不支持n > 1。/v1/images/generations当前返回b64_json,暂不支持托管图片 URL。/v1/images/generations暂不支持n > 1。/v1/images/edits当前只支持 JSON,暂不支持multipart/form-data、mask和file_id。- 超大的 base64 JSON 请求受
AZT_BODY_LIMIT_MB和本地内存限制。 - OpenAI Responses API 兼容范围是常见本地客户端工作流,不是完整实现。
安全
access_token、refresh_token、id_token都等同于登录凭据。- 不要把本地网关暴露给不可信网络。
- 不要在不可信环境中传递导出的账号 JSON。
- 复制或发布本地文件前,请检查
~/.ai-zero-token/.state和~/.codex/auth.json。
开发
安装依赖:
npm install源码运行:
bun src/cli.ts start验证:
npm run typecheck
npm run buildCLI 构建和发布说明见 BUILD_CLI.md。用户可见变更见 CHANGELOG.md。
项目状态
AI Zero Token 仍在快速迭代。当前重点是稳定本地网关、账号迁移工作流,以及 OpenAI 风格客户端的图片生成/编辑兼容性。
反馈和问题:GitHub Issues
