单个 Rust 二进制的高性能、多供应商 LLM 代理 —— 内嵌 React 控制台、多租户鉴权, 同一套引擎可原生 / Docker / 边缘(WebAssembly) 三种形态运行。
English · 简体中文
ghcr.io/leenhawk/gproxy/consoleGPROXY 在众多上游 LLM 供应商之上,暴露统一的 OpenAI / Anthropic / Gemini 兼容 HTTP 接口,并补齐把它当共享服务运行所需的一切:
/v1/...(供应商写在模型名里)与限定 /{provider}/v1/...
(供应商写在 URL 里)。完全自包含:内嵌控制台、文件式 SQLite、无需外部服务。
docker run -p 8787:8787 -e GPROXY_ADMIN_PASSWORD=change-me-min12char ghcr.io/leenhawk/gproxy
# 然后打开 http://localhost:8787/console (admin / change-me-min12char)
管理员密码至少 12 个字符 —— 过短容器启动即以
GPROXY_ADMIN_PASSWORD rejected报错退出。用非
localhost地址(局域网 IP、服务器 IP、隧道)经明文 HTTP 访问控制台? 会话 cookie 默认带Secure,浏览器会把它丢弃,于是即使密码正确,控制台登录后也会立刻弹回登录页。加上-e GPROXY_INSECURE_COOKIES=1,或在前面挂 HTTPS 反代。http://localhost:8787则直接可用。
同一套路由可作为 wasm 边缘函数跑在六个平台上。预构建、即点即部署的产物在
deploy 分支(平台侧没有 cargo,
无需工具链)。边缘函数需要外部 Turso 控制面库(+ 可选 Upstash 缓存);完整步骤见
docs/edge-deploy.md。
Cloudflare 和 Netlify 按钮会在部署前要求填写必需的 TURSO_URL 和
TURSO_TOKEN secrets。这里要填 Turso 的 HTTP URL(https://<db>.turso.io),
不要填 libsql:// URL。可选的 Upstash cache 和 GPROXY_MASTER_KEY secrets
可以在 worker/site 创建后再补。Cloudflare Workers、Netlify Edge、Deno Deploy 和
EdgeOne Pages 会在同一个部署里带上 Console 静态资产。设置 GPROXY_ADMIN_USER 和
至少 12 个字符的 GPROXY_ADMIN_PASSWORD,部署后打开 /console。
| 平台 | 产物 | 部署 |
|---|---|---|
| Cloudflare Workers | deploy/cloudflare |
一键按钮 ☝️ / wrangler deploy |
| Netlify Edge | deploy/netlify |
一键按钮 ☝️ / netlify deploy --prod |
| Deno Deploy | — | deploy/deno/build.sh(CLI) |
| Supabase Edge | deploy/supabase |
supabase functions deploy gproxy(Docker/eszip,CLI) |
| EdgeOne Pages | deploy/eopages |
edgeone pages deploy(CLI) |
| Appwrite Functions | deploy/appwrite-deno |
appwrite push functions(deno-2.0,CLI) |
每个 release 都提供预编译二进制
(linux/macOS/windows,x86_64 + aarch64)。或自行 cargo build --release。
GPROXY 用环境变量配置;运行期配置进数据库,通过 /console 管理。
| 变量 | 默认 | 用途 |
|---|---|---|
GPROXY_HOST / GPROXY_PORT |
127.0.0.1 / 8787 |
监听地址 |
GPROXY_PERSISTENCE |
file |
file(GPROXY_DATA_DIR 下的 SQLite)或 db |
GPROXY_DSN |
— | persistence=db 时的 DSN(Postgres/MySQL/SQLite) |
GPROXY_MASTER_KEY |
— | 解封存储的密文(缺省=明文) |
GPROXY_ADMIN_USER / GPROXY_ADMIN_PASSWORD |
admin / 随机 |
首启动管理员 |
从 v1 升级? 把 v2 二进制指向你现有的 v1 SQLite 库,首启动会就地迁移(旧库备份为
*.v1.bak)。
# 聚合 —— 供应商/模型写在 body 里
curl http://127.0.0.1:8787/v1/chat/completions \
-H "Authorization: Bearer <your-key>" -H "Content-Type: application/json" \
-d '{"model":"openai-main/gpt-4.1-mini","messages":[{"role":"user","content":"Hello"}]}'
运维端点(/healthz、/version、/metrics)走 admin 鉴权。
$ claude mcp add gproxy \
-- python -m otcore.mcp_server <graph>