npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

Readme

AI Zero Token

English | 简体中文

AI Zero Token 是一个本地优先的 OpenAI 兼容网关,用于把 ChatGPT/Codex OAuth 账号能力包装成本地 CLI、管理页和 HTTP API。

它适合本地单用户场景、原型验证、自动化脚本和 OpenAI-compatible 客户端接入。

这是实验性质的本地工具,不是 OpenAI 官方产品,也不建议作为生产级多租户网关使用。

功能

  • OpenAI 风格本地接口:
    • GET /v1/models
    • POST /v1/responses
    • POST /v1/chat/completions
    • POST /v1/images/generations
    • POST /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 技术架构图

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/v1

macOS 桌面端还会常驻菜单栏,提供快速账号面板。可以从菜单栏切换网关账号、把账号应用到本机 Codex、刷新额度、复制 API Base URL 和重启本地网关。

管理页

管理页是推荐入口,可以完成:

  • OpenAI Codex OAuth 登录。
  • 导入一个或多个账号 JSON,或校验并导入包含多个账号 JSON 的 ZIP 压缩包。
  • 切换当前账号。
  • 导出单个账号或勾选导出多个账号,并在账号卡片上显示导出状态。
  • 勾选后批量删除账号。
  • 将已保存账号应用到本机 Codex。
  • 配置默认文本模型和上游代理。
  • 开启当前 API 账号额度耗尽后的自动切换,并配置不参与自动轮换的账号名单。
  • 为账号池较多的场景调整全局额度刷新并发数。
  • 测试 modelsresponseschat.completionsimages.generationsimages.edits
  • 查看今日、本次启动和历史累计的本地用量统计。
  • 当检测到新版本时显示全局顶部更新提示,分别引导桌面端下载 GitHub Release 和 npm 用户更新包。

AI Zero Token 管理页

API 使用

模型列表

curl http://127.0.0.1:8787/v1/models

Responses

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=truetoolstool_choiceparallel_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

AI Zero Token gpt-image-2 生图预览

图生图

/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、数组或 profiles bundle 导入。
  • 从包含多个账号 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-datamaskfile_id
  • 超大的 base64 JSON 请求受 AZT_BODY_LIMIT_MB 和本地内存限制。
  • OpenAI Responses API 兼容范围是常见本地客户端工作流,不是完整实现。

安全

  • access_tokenrefresh_tokenid_token 都等同于登录凭据。
  • 不要把本地网关暴露给不可信网络。
  • 不要在不可信环境中传递导出的账号 JSON。
  • 复制或发布本地文件前,请检查 ~/.ai-zero-token/.state~/.codex/auth.json

开发

安装依赖:

npm install

源码运行:

bun src/cli.ts start

验证:

npm run typecheck
npm run build

CLI 构建和发布说明见 BUILD_CLI.md。用户可见变更见 CHANGELOG.md

项目状态

AI Zero Token 仍在快速迭代。当前重点是稳定本地网关、账号迁移工作流,以及 OpenAI 风格客户端的图片生成/编辑兼容性。

反馈和问题:GitHub Issues