开源 AI 代理凭证网关与保险库。一次性存储 API 密钥,代理发出 HTTP 请求时自动注入 — 代理永远不会看到真实密钥。

OneCLI 是开源的凭证网关,位于你的 AI 代理与外部服务之间。将真实 API 密钥存储在 OneCLI 的加密保险库中,给代理一个 placeholder(如 FAKE_KEY),OneCLI 网关会在请求时自动替换为真实凭证 — 代理永远不会看到真实密钥。
此模板一键部署完整的 OneCLI 实例。
[Zeabur LB] → OneCLI 应用(单一 image,两个进程)
├─ :10254 → Next.js 网页控制台(UI + API)
└─ :10255 → Rust 网关(凭证注入代理)
[PostgreSQL] → OneCLI 数据库(代理、密钥、审计日志)
OneCLI app image(ghcr.io/onecli/onecli:latest)包含:
/app/data/(AES-256-GCM)默认情况下,此模板以单用户 / 本地模式部署:控制台无需登录就会直接打开。 任何知道你控制台域名的人都可以看到并管理其中存储的所有 API 密钥。OneCLI 是一个凭证保险库 — 这样默认暴露在公共互联网是不安全的。
存储任何真实密钥之前,请做以下其中一项:
onecli 服务下,同时设置 NEXTAUTH_SECRET + GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET(三个都要,然后重启)。见下面"部署后配置"。网关域名(代理发送请求的地方)永远是公开的 — 这没问题,网关会用每个代理的 access token 验证每次调用。有风险的只是默认本地模式下的控制台域名。
https://your-domain.zeabur.app你的代理 → [FAKE_KEY] → OneCLI 网关 → [REAL_KEY] → 外部 API(OpenAI、GitHub 等)
↓
审计日志 + 速率限制
部署完成后(首次启动 + migrations 需要 2-3 分钟):
https://your-domain.zeabur.app获取代理 token 和至少一个密钥后:
# 示例:将 OpenAI 请求通过 OneCLI 网关
curl https://your-gateway-domain.zeabur.app/v1/chat/completions \
-H "Authorization: Bearer <your-agent-access-token>" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4","messages":[{"role":"user","content":"Hello!"}]}'
在你的代理代码中,使用 placeholder(如 FAKE_OPENAI_KEY),OneCLI 会自动替换为真实密钥。
你可以在 Zeabur Dashboard 的 onecli 服务下自定义环境变量:
启用 Google OAuth(多用户模式):
NEXTAUTH_SECRET → 你的 NextAuth 密钥GOOGLE_CLIENT_ID → 你的 Google OAuth client IDGOOGLE_CLIENT_SECRET → 你的 Google OAuth client secret自定义网关端口:
GATEWAY_PORT → 默认 10255SECRET_ENCRYPTION_KEY)首次启动时自动生成并存储到 /app/data/。不要丢失这个 volume — 没了它,所有存储的密钥都不可恢复。--insecure-skip-verify)。了解更多:https://github.com/onecli/onecli
如在部署期间遇到任何问题,请通过 GitHub issues 告知: https://github.com/glasschan/seafoodholdhand-zeabur-templates