Codex Auth Manager 是一个面向本地使用的多账号认证管理面板,用来集中维护 Codex / ChatGPT 相关 auth JSON、查看 quota、标记失效账号,并在需要时快速切换当前 ~/.codex/auth.json。
项目当前同时提供 3 套入口:
- Web 应用:基于 Next.js App Router + SQLite。
- Desktop 应用:基于 Tauri 2,将前端静态资源和本地 Rust 命令封装为桌面壳。
- CLI:面向脚本和终端场景,支持列出账号、查看最新 quota、手动刷新。
- 多账号 auth JSON 管理,支持新建、编辑、删除、搜索、归档。
- 支持
chatgpt_tokens与openai_codex两类认证数据。 - 创建前可先预览 quota,并在保存时复用预取结果,避免重复请求上游。
- 支持主号 / 团队成员号关系维护。
- 支持 OpenAI Codex PKCE 登录,并回填可保存的 auth JSON。
- 支持从
~/.codex/auth.json导入当前认证。 - 支持将已保存账号写回
~/.codex/auth.json。 - 支持复制可直接启动
codex --yolo的命令。 - SQLite 本地持久化 quota 快照、停用状态和账号关系。
- 同邮箱刷新会复用请求结果,降低重复上游调用。
- 当上游返回
401/403或明显失效信号时,会自动标记账号停用并禁用手动刷新。
- Next.js 16 + React 19 + TypeScript
- SQLite + Drizzle ORM +
better-sqlite3 - Zustand
- Tauri 2 + Rust
- Vitest + ESLint
src/app/ Next.js 页面与 API 路由
src/components/ UI 组件
src/store/ 前端状态编排
src/lib/auth/ auth JSON 检测、归一化、预览、PKCE
src/lib/quota/ quota 请求、解析、刷新、失效判定
src/lib/db/ SQLite 初始化、迁移兼容、Drizzle schema
src/lib/runtime/ Web / Desktop 运行时适配层
src/lib/client/ 浏览器 / Tauri 客户端能力封装
src/cli/ CLI 入口
src-tauri/ Tauri 桌面端工程
scripts/ 本地代理、Tauri dev/build 辅助脚本
db/ 本地 SQLite 数据文件
auth/ 本地 auth JSON 示例或临时文件
- Node.js 20+
pnpm- 可访问 quota 上游接口的网络环境
- Rust stable toolchain
- 主机平台可用的 Tauri 构建依赖
- macOS 打包时会输出
.app和.dmg
pnpm install
pnpm dev默认启动 Web 开发模式,访问 http://localhost:3000。
pnpm dev或:
make web-devpnpm exec tauri dev或:
make dev桌面开发模式会先启动 http://127.0.0.1:3000 的前端开发服务器,再由 Tauri 加载该地址。
pnpm build
pnpm start或:
make build-web
make servermake package-host只做桌面编译、不出原生安装包时:
make tauri-build桌面打包流程会先执行:
pnpm run build:web
pnpm run prepare:tauri:frontend然后把 Next.js 产物整理到 src-tauri/resources/frontend,再交给 Tauri 构建宿主平台包。
列出账号:
pnpm run cli -- profiles list --json查看某个账号最近一次 quota 快照:
pnpm run cli -- profiles latest --id <profileId>手动刷新某个账号 quota:
pnpm run cli -- profiles refresh --id <profileId>也可以通过 make 调用:
make cli ARGS='profiles list --json'- 导入或粘贴 auth JSON。
- 调用 quota 预览接口确认额度或停用状态。
- 保存账号与预取结果到本地 SQLite。
- 在账号中心维护备注、主号 / 团队成员关系、归档状态。
- 需要切换时将某个账号写回
~/.codex/auth.json,或复制启动命令直接拉起 Codex。
SQLITE_PATH:SQLite 文件路径,默认./db/app.dbQUOTA_ENDPOINT:quota 上游 endpoint,默认https://chatgpt.com/backend-api/wham/usageHTTPS_PROXY/HTTP_PROXY/ALL_PROXY/NO_PROXY:上游请求代理控制CODEX_DISABLE_DEFAULT_PROXY=1:禁用脚本自动补齐默认代理CODEX_DEFAULT_HTTP_PROXY:覆盖默认 HTTP/HTTPS 代理,默认http://127.0.0.1:7897CODEX_DEFAULT_ALL_PROXY:覆盖默认 SOCKS 代理,默认socks5://127.0.0.1:7897
如果没有显式设置代理环境变量,pnpm dev、pnpm build、pnpm start、pnpm run cli 等脚本会自动补全:
https_proxy=http://127.0.0.1:7897
http_proxy=http://127.0.0.1:7897
all_proxy=socks5://127.0.0.1:7897pnpm dev
pnpm build
pnpm start
pnpm lint
pnpm test
pnpm db:generate
pnpm -s tsc --noEmit
make check-rust- 默认数据库文件是
./db/app.db。 db/*.db*、auth/*、~/.codex/auth.json都应视为敏感本地数据。- 仓库已公开,禁止提交真实 auth JSON、access token、refresh token、生产数据库快照。
- 将账号写回
~/.codex/auth.json会覆盖当前本地 Codex 认证文件,仅允许chatgpt_tokens类型账号执行该动作。
建议在提交前至少执行:
pnpm lint
pnpm test
pnpm -s tsc --noEmit如果本次改动包含 Tauri 桌面端,再补一轮:
make check-rust