Skip to content

HibariX/codex-auth-manage

Repository files navigation

Codex Auth Manager

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_tokensopenai_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 上游接口的网络环境

Desktop 模式额外要求

  • Rust stable toolchain
  • 主机平台可用的 Tauri 构建依赖
  • macOS 打包时会输出 .app.dmg

快速开始

pnpm install
pnpm dev

默认启动 Web 开发模式,访问 http://localhost:3000

运行模式

1. Web 开发

pnpm dev

或:

make web-dev

2. Desktop 开发

pnpm exec tauri dev

或:

make dev

桌面开发模式会先启动 http://127.0.0.1:3000 的前端开发服务器,再由 Tauri 加载该地址。

3. Web 生产模式

pnpm build
pnpm start

或:

make build-web
make server

4. Desktop 打包

make package-host

只做桌面编译、不出原生安装包时:

make tauri-build

桌面打包流程会先执行:

pnpm run build:web
pnpm run prepare:tauri:frontend

然后把 Next.js 产物整理到 src-tauri/resources/frontend,再交给 Tauri 构建宿主平台包。

CLI

列出账号:

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'

主要业务流程

  1. 导入或粘贴 auth JSON。
  2. 调用 quota 预览接口确认额度或停用状态。
  3. 保存账号与预取结果到本地 SQLite。
  4. 在账号中心维护备注、主号 / 团队成员关系、归档状态。
  5. 需要切换时将某个账号写回 ~/.codex/auth.json,或复制启动命令直接拉起 Codex。

环境变量

  • SQLITE_PATH:SQLite 文件路径,默认 ./db/app.db
  • QUOTA_ENDPOINT:quota 上游 endpoint,默认 https://chatgpt.com/backend-api/wham/usage
  • HTTPS_PROXY / HTTP_PROXY / ALL_PROXY / NO_PROXY:上游请求代理控制
  • CODEX_DISABLE_DEFAULT_PROXY=1:禁用脚本自动补齐默认代理
  • CODEX_DEFAULT_HTTP_PROXY:覆盖默认 HTTP/HTTPS 代理,默认 http://127.0.0.1:7897
  • CODEX_DEFAULT_ALL_PROXY:覆盖默认 SOCKS 代理,默认 socks5://127.0.0.1:7897

如果没有显式设置代理环境变量,pnpm devpnpm buildpnpm startpnpm 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:7897

常用命令

pnpm 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

About

Next.js + SQLite 的 Codex 多账号 Token 管理与额度查询面板

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors