CLIProxyAPI 的网页管理面板,集中查看服务状态、请求日志和历史用量;Linux 下支持升级与回滚。
62
stars
24
commits
Python
primary language
Sep 5, 2026
updated
中文 · English
一页看清:哪个账号还活着、token 花在了哪、这次升级到底成没成。
CLIProxyAPI 能把 Codex、Claude Code、Gemini CLI 的订阅变成标准 API 接口,很多人用它统一调度手上的几个账号。
把它跑起来不难。难的是跑起来之后:
CPA-X 就是回答这三个问题的。它读 CLIProxyAPI 自己的日志和管理接口,把状态、用量、成本、日志和升级收进一个页面;不接管你的流量,也不碰你的模型请求。
| 深色 | 浅色 |
|---|---|
![]() | ![]() |
tail。#17191d 深灰暗色,右上角切换并记住选择;手机上是完整可用而不只是能打开。需要 Python 3.11+,以及能访问 CLIProxyAPI 的管理接口(默认 http://127.0.0.1:8317)。推荐 Linux——服务控制和自动升级依赖 systemd。
# Linux:一条命令装好并注册 systemd 服务
bash scripts/install.sh
# 让它自己探测 CLIProxyAPI 的目录、日志和端口,写进 .env
python3 scripts/doctor.py --write-env
Windows:
powershell -ExecutionPolicy Bypass -File scripts/install.ps1
然后打开 http://127.0.0.1:8080。
手动安装、Docker Compose、反向代理、全部环境变量与常见问题,见 部署与运维手册。
git clone https://github.com/ferretgeek/cliproxyapi-dashboard.git
cd cliproxyapi-dashboard
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install --upgrade "pip>=26.1.2"
python -m pip install -r requirements.txt
cp .env.example .env # Windows: copy .env.example .env
# 编辑 .env,至少填对 CLIProxyAPI 的目录、日志路径和管理接口地址
python app.py
关键变量(完整列表在 .env.example 里都有注释):
| 变量 | 作用 |
|---|---|
CLIPROXY_PANEL_CLIPROXY_DIR / _CONFIG / _LOG | CLIProxyAPI 的安装目录、配置和日志在哪 |
CLIPROXY_PANEL_CLIPROXY_API_BASE / _API_PORT | 管理接口地址与端口 |
CLIPROXY_PANEL_MANAGEMENT_KEY / _MODELS_API_KEY | 上游启用了鉴权时需要 |
CLIPROXY_PANEL_CLIPROXY_SERVICE / _BINARY | 自动升级必须知道服务名和二进制路径 |
CLIPROXY_PANEL_LOG_TIMEZONE | 默认 auto,也接受 UTC、+08:00 或 Asia/Shanghai |
CLIPROXY_PANEL_PANEL_ACCESS_KEY | 非回环监听时必填,至少 32 位 |
CLIPROXY_PANEL_CONFIG_WRITE_ENABLED | 默认 false;只有你明确接受风险才打开主配置回写 |
容器里一般没有 systemd 和宿主权限,所以自动升级和服务控制在 Docker 下不可用;状态、统计、模型、日志和配置读取都正常。
cp .env.docker.example .env.docker
# 给 CLIPROXY_PANEL_PANEL_ACCESS_KEY 生成一个至少 32 位的随机值
docker compose --env-file .env.docker up -d --build
Compose 默认只把端口发布在 127.0.0.1,访问密钥为空时直接拒绝启动。远程访问请保持回环发布,前面挂一层 TLS 反向代理,不要把容器端口直接暴露到公网。
升级不会假成功。 这是这个项目最花心思的一块,起因是一次间歇性 502 生产故障。现在的流程是:在线准备 → 校验 SHA-256 → 原子替换 → 重启 → 真的去打一次带认证的管理接口,拿到 HTTP 200 才算成功。失败的版本会进入持久化的指数退避(重启面板也不会忘),并回滚到上一个可用版本。匿名的 GitHub 版本检查优先走稳定的 Release 跳转,避免频繁触发速率限制。
日志是增量解析的。 不重读整个文件,长期运行下内存和 CPU 都是平的;状态持久化走原子写入,上游不可用时退避重试,备份按数量、时长和体积三重上限自动淘汰。
时区是推断出来的,不是猜的。 CLIProxyAPI 的日志时间可能不带偏移量,宿主机和容器时区还可能不一致。面板会反推出正确的时刻,所有 API 统一输出 UTC / RFC 3339,界面再按你设定的时区渲染。
默认关掉危险入口。 前端所有导出入口已移除(避免通过浏览器下载链接泄露敏感数据);主配置回写默认关闭;跨域访问默认禁止;回环模式只接受字面 localhost / 回环 Host 并拒绝跨站变更请求;Linux 安装器从 root 所有的 /opt/cliproxy-panel/releases/ 快照运行 systemd 服务。
顺手做了给 AI Agent 的部署手册。 AI_DEPLOY_CN.md 和 AGENTS.md 是写给编码助手看的:目录约定、环境变量、验证命令和失败处理都写成了可执行步骤,你可以直接让 Claude Code / Codex 照着装。人工部署照上面的三步走就行,两条路都完整。
页面打开了但没数据。 先确认 CLIProxyAPI 在跑,再检查 .env 里的 CLIPROXY_PANEL_CLIPROXY_API_BASE / _PORT 指向对不对。
新版 CLIProxyAPI 已经不再提供旧的 usage 管理接口。CPA-X 不再后台轮询它——实时请求量来自增量日志解析,升级前已存下的 token / 成本历史仍可从本地兼容快照读取,不会反复向上游发
404。
健康检查超时。 容器和负载均衡的存活探测请用不需要鉴权的 /api/healthz;/api/health 是完整诊断,比较重。
systemd 相关功能没反应。 那是 Linux 专属能力,Windows 上会优雅失败,不影响面板启动。
.env 提交进仓库(已在 .gitignore 中)。管理密钥和模型密钥只放 .env。127.0.0.1。任何非回环监听都必须同时设置至少 32 位的 CLIPROXY_PANEL_PANEL_ACCESS_KEY,否则进程拒绝启动。/api/* 只接受 X-Panel-Key 请求头;浏览器首次配置走不会被传输的 #panel_key=... fragment,从不使用查询参数。python -m pip install -r requirements-dev.txt
python -m pytest
ruff check --select E9,F63,F7,F82 app.py scripts tests
部署与运维 · 版本变更 · 参与开发 · 安全策略 · 获取支持 · 行为准则 · 提交问题 · 讨论区
MIT License,见 LICENSE。
这是独立的社区项目,与 OpenAI、Anthropic、Google 和 CLIProxyAPI 上游项目均无隶属、授权或背书关系,也不绕过任何额度限制。相关商标归其权利人所有。
24 commits
Python
63.8%
HTML
35.8%
CLIProxyAPI 的网页管理面板,集中查看服务状态、请求日志和历史用量;Linux 下支持升级与回滚。
62
stars
24
commits
Python
primary language
Sep 5, 2026
updated
中文 · English
一页看清:哪个账号还活着、token 花在了哪、这次升级到底成没成。
CLIProxyAPI 能把 Codex、Claude Code、Gemini CLI 的订阅变成标准 API 接口,很多人用它统一调度手上的几个账号。
把它跑起来不难。难的是跑起来之后:
CPA-X 就是回答这三个问题的。它读 CLIProxyAPI 自己的日志和管理接口,把状态、用量、成本、日志和升级收进一个页面;不接管你的流量,也不碰你的模型请求。
| 深色 | 浅色 |
|---|---|
![]() | ![]() |
tail。#17191d 深灰暗色,右上角切换并记住选择;手机上是完整可用而不只是能打开。需要 Python 3.11+,以及能访问 CLIProxyAPI 的管理接口(默认 http://127.0.0.1:8317)。推荐 Linux——服务控制和自动升级依赖 systemd。
# Linux:一条命令装好并注册 systemd 服务
bash scripts/install.sh
# 让它自己探测 CLIProxyAPI 的目录、日志和端口,写进 .env
python3 scripts/doctor.py --write-env
Windows:
powershell -ExecutionPolicy Bypass -File scripts/install.ps1
然后打开 http://127.0.0.1:8080。
手动安装、Docker Compose、反向代理、全部环境变量与常见问题,见 部署与运维手册。
git clone https://github.com/ferretgeek/cliproxyapi-dashboard.git
cd cliproxyapi-dashboard
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install --upgrade "pip>=26.1.2"
python -m pip install -r requirements.txt
cp .env.example .env # Windows: copy .env.example .env
# 编辑 .env,至少填对 CLIProxyAPI 的目录、日志路径和管理接口地址
python app.py
关键变量(完整列表在 .env.example 里都有注释):
| 变量 | 作用 |
|---|---|
CLIPROXY_PANEL_CLIPROXY_DIR / _CONFIG / _LOG | CLIProxyAPI 的安装目录、配置和日志在哪 |
CLIPROXY_PANEL_CLIPROXY_API_BASE / _API_PORT | 管理接口地址与端口 |
CLIPROXY_PANEL_MANAGEMENT_KEY / _MODELS_API_KEY | 上游启用了鉴权时需要 |
CLIPROXY_PANEL_CLIPROXY_SERVICE / _BINARY | 自动升级必须知道服务名和二进制路径 |
CLIPROXY_PANEL_LOG_TIMEZONE | 默认 auto,也接受 UTC、+08:00 或 Asia/Shanghai |
CLIPROXY_PANEL_PANEL_ACCESS_KEY | 非回环监听时必填,至少 32 位 |
CLIPROXY_PANEL_CONFIG_WRITE_ENABLED | 默认 false;只有你明确接受风险才打开主配置回写 |
容器里一般没有 systemd 和宿主权限,所以自动升级和服务控制在 Docker 下不可用;状态、统计、模型、日志和配置读取都正常。
cp .env.docker.example .env.docker
# 给 CLIPROXY_PANEL_PANEL_ACCESS_KEY 生成一个至少 32 位的随机值
docker compose --env-file .env.docker up -d --build
Compose 默认只把端口发布在 127.0.0.1,访问密钥为空时直接拒绝启动。远程访问请保持回环发布,前面挂一层 TLS 反向代理,不要把容器端口直接暴露到公网。
升级不会假成功。 这是这个项目最花心思的一块,起因是一次间歇性 502 生产故障。现在的流程是:在线准备 → 校验 SHA-256 → 原子替换 → 重启 → 真的去打一次带认证的管理接口,拿到 HTTP 200 才算成功。失败的版本会进入持久化的指数退避(重启面板也不会忘),并回滚到上一个可用版本。匿名的 GitHub 版本检查优先走稳定的 Release 跳转,避免频繁触发速率限制。
日志是增量解析的。 不重读整个文件,长期运行下内存和 CPU 都是平的;状态持久化走原子写入,上游不可用时退避重试,备份按数量、时长和体积三重上限自动淘汰。
时区是推断出来的,不是猜的。 CLIProxyAPI 的日志时间可能不带偏移量,宿主机和容器时区还可能不一致。面板会反推出正确的时刻,所有 API 统一输出 UTC / RFC 3339,界面再按你设定的时区渲染。
默认关掉危险入口。 前端所有导出入口已移除(避免通过浏览器下载链接泄露敏感数据);主配置回写默认关闭;跨域访问默认禁止;回环模式只接受字面 localhost / 回环 Host 并拒绝跨站变更请求;Linux 安装器从 root 所有的 /opt/cliproxy-panel/releases/ 快照运行 systemd 服务。
顺手做了给 AI Agent 的部署手册。 AI_DEPLOY_CN.md 和 AGENTS.md 是写给编码助手看的:目录约定、环境变量、验证命令和失败处理都写成了可执行步骤,你可以直接让 Claude Code / Codex 照着装。人工部署照上面的三步走就行,两条路都完整。
页面打开了但没数据。 先确认 CLIProxyAPI 在跑,再检查 .env 里的 CLIPROXY_PANEL_CLIPROXY_API_BASE / _PORT 指向对不对。
新版 CLIProxyAPI 已经不再提供旧的 usage 管理接口。CPA-X 不再后台轮询它——实时请求量来自增量日志解析,升级前已存下的 token / 成本历史仍可从本地兼容快照读取,不会反复向上游发
404。
健康检查超时。 容器和负载均衡的存活探测请用不需要鉴权的 /api/healthz;/api/health 是完整诊断,比较重。
systemd 相关功能没反应。 那是 Linux 专属能力,Windows 上会优雅失败,不影响面板启动。
.env 提交进仓库(已在 .gitignore 中)。管理密钥和模型密钥只放 .env。127.0.0.1。任何非回环监听都必须同时设置至少 32 位的 CLIPROXY_PANEL_PANEL_ACCESS_KEY,否则进程拒绝启动。/api/* 只接受 X-Panel-Key 请求头;浏览器首次配置走不会被传输的 #panel_key=... fragment,从不使用查询参数。python -m pip install -r requirements-dev.txt
python -m pytest
ruff check --select E9,F63,F7,F82 app.py scripts tests
部署与运维 · 版本变更 · 参与开发 · 安全策略 · 获取支持 · 行为准则 · 提交问题 · 讨论区
MIT License,见 LICENSE。
这是独立的社区项目,与 OpenAI、Anthropic、Google 和 CLIProxyAPI 上游项目均无隶属、授权或背书关系,也不绕过任何额度限制。相关商标归其权利人所有。
24 commits
Python
63.8%
HTML
35.8%