AI模型代理网关

OpenAI兼容的代理网关,支持Claude和Gemini模型,通过Ploinky容器部署并经由Cloudflare Tunnels暴露。

  • by AssistOS-AI
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 PloinkyRepos/proxies

使用说明

代理网关

适用于Claude和Gemini模型的OpenAI兼容代理网关,通过Ploinky容器部署,并通过Cloudflare隧道公开。

网关

网关 型号 后端 端口
基罗关口 克劳德十四行诗4.5、克劳德十四行诗4、克劳德·海库4.5 AWS Kiro CLI 8000
反重力网关 双子座2.5 Pro/Flash,克劳德(通过反重力) 谷歌云代码 8001

建筑

                                    Cloudflare Tunnel
Internet ──► kiro.axiologic.dev ────────────────────────► VPS:8000 ──► kiro-gateway ──► AWS/Kiro
         ──► antigravity.axiologic.dev ─────────────────► VPS:8001 ──► antigravity-gw ──► Google Cloud Code

快速开始

先决条件

  • 具有SSH访问权限的VPS(Debian/Ubuntu,1+vCPU,1+GB RAM)
  • 具有域的Cloudflare帐户
  • Cloudflare隧道令牌

1.配置部署

cd proxies/deploy
cp setEnv.sh.example setEnv.sh
nano setEnv.sh  # Fill in your values

2.部署到VPS

chmod +x deploy.sh
./deploy.sh

3.配置Cloudflare隧道路由

在Cloudflare仪表板>零信任>网络>隧道>您的隧道中:

子域 域 服务
kiro yourdomain.com http://localhost:8000
反重力 yourdomain.com http://localhost:8001

4.对网关进行身份验证

访问浏览器中的登录页面:

  • https://kiro.yourdomain.com-点击“使用AWS登录”
  • https://antigravity.yourdomain.com-点击Google OAuth的“添加帐户”

5.测试

# Get your API key
cat deploy/.api_key

# Test Kiro
curl -H "Authorization: Bearer YOUR_API_KEY" https://kiro.yourdomain.com/v1/models

# Test Antigravity  
curl -H "Authorization: Bearer YOUR_API_KEY" https://antigravity.yourdomain.com/v1/models

目录结构

proxies/
├── kiro-gateway/           # Claude via AWS Kiro
│   ├── manifest.json       # Ploinky container config
│   ├── install.sh          # Container setup script
│   ├── startup.sh          # Container startup script
│   ├── landing.py          # Web UI + API proxy
│   └── cli.sh              # Interactive CLI access
│
├── antigravity-gateway/    # Gemini/Claude via Antigravity
│   ├── manifest.json       # Ploinky container config
│   ├── install.sh          # Container setup script
│   ├── startup.sh          # Container startup script
│   └── cli.sh              # Interactive CLI access
│
├── antigravity-claude-proxy/  # Forked proxy source code
│   └── ...                    # (cloned during install)
│
├── deploy/                 # Deployment scripts
│   ├── deploy.sh           # Main deployment script
│   ├── auth-gateways.sh    # Authentication helper
│   ├── setEnv.sh.example   # Environment template
│   └── README.md           # Deployment docs
│
└── README.md               # This file

API使用

这两个网关都公开了与OpenAI兼容的端点:

端点

方法 路径 描述
GET /v1/models 列出可用型号
POST /v1/聊天/完成 聊天完成(支持流媒体)

认证

Authorization: Bearer YOUR_API_KEY

示例请求

curl -X POST https://kiro.yourdomain.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4",
    "messages": [{"role": "user", "content": "Hello!"}],
    "max_tokens": 100
  }'

使用OpenCode

添加到 ~/.config/opencode/opencode.json:

{
  "model": "kiro/claude-sonnet-4",
  "provider": {
    "kiro": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Kiro Gateway",
      "options": {
        "baseURL": "https://kiro.yourdomain.com/v1",
        "headers": {
          "Authorization": "Bearer YOUR_API_KEY"
        }
      },
      "models": {
        "claude-sonnet-4.5": { "name": "Claude Sonnet 4.5" },
        "claude-sonnet-4": { "name": "Claude Sonnet 4" },
        "claude-haiku-4.5": { "name": "Claude Haiku 4.5" }
      }
    },
    "antigravity": {
      "npm": "@ai-sdk/openai-compatible", 
      "name": "Antigravity Gateway",
      "options": {
        "baseURL": "https://antigravity.yourdomain.com/v1",
        "headers": {
          "Authorization": "Bearer YOUR_API_KEY"
        }
      },
      "models": {
        "gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
        "gemini-2.5-flash": { "name": "Gemini 2.5 Flash" }
      }
    }
  }
}

坚持

凭据和数据存储在 /shared (安装自 workspace/shared/):

文件 描述
/shared/proxy_api_key 用于网关身份验证的API密钥
/shared/kiro-cli/ Kiro CLI凭据(重新启动后仍然有效)
/shared/antigravity/ 反重力账户数据

服务器管理

SSH到VPS

ssh -i ~/your_key.pem admin@your-vps-ip
cd ~/proxy-gateway/workspace

检查状态

ploinky status

查看日志

podman logs ploinky_proxies_kiro-gateway_workspace_*
podman logs ploinky_proxies_antigravity-gateway_workspace_*

重新启动网关

ploinky stop kiro-gateway antigravity-gateway
ploinky start kiro-gateway antigravity-gateway

重新生成API密钥

# On VPS
cd ~/proxy-gateway/workspace
NEW_KEY=$(openssl rand -hex 32)
ploinky var PROXY_API_KEY=$NEW_KEY
echo "$NEW_KEY" > shared/proxy_api_key

# Restart to apply
ploinky stop && ploinky clean && ploinky start kiro-gateway antigravity-gateway

# Update local opencode.json with new key

故障排除

网关显示“未经身份验证”

访问登录页面并完成OAuth流程:

  • Kiro:AWS SSO设备流(点击按钮,输入代码)
  • 反重力:谷歌OAuth(手动回调-复制本地主机URL)

“没有可用帐户”错误

网关需要帐户身份验证。访问登录页面。

重新启动后凭据丢失

确保 /shared 正确安装。检查:

podman exec <container> ls -la /shared/

API返回401

检查API密钥匹配项:

# On VPS
cat ~/proxy-gateway/workspace/shared/proxy_api_key

# Compare with your local config

安全说明

  • API密钥为256位随机(64个十六进制字符)
  • 所有流量均通过Cloudflare隧道加密(无直接端口暴露)
  • OAuth令牌仅存储在VPS上
  • 永不承诺 setEnv.sh 或 .api_key 转git

许可证

麻省理工学院