Kiro Proxy 是一个轻量级 Go 服务,将一个或多个已授权的 Kiro 账号转换为本地 API 端点,支持 OpenAI 和 Anthropic 协议格式:
- 多账号池化,按轮询方式分发请求。
- 在 Anthropic
/v1/messages、OpenAI/v1/chat/completions与 OpenAI/v1/responses与 Kiro 上游之间双向翻译。 - 自动刷新访问令牌,端到端转发 Server-Sent Events 流。
- 自带精致的 Web 管理面板,提供账号管理、可观测性与请求审计。
Important
单二进制本地代理。非托管服务,不隶属于 Amazon、AWS 或 Kiro。账号必须由你本人持有或经过合法授权方可加入账号池。
如果项目对你有帮助,欢迎点个 Star 鼓励一下。
登录 — 简洁、随主题切换 |
实时监控 — RPM、错误率、流量热力图 |
账号池 — 多账号、轮询、自动刷新令牌 |
请求日志 — 分页搜索、状态筛选、完整审计 |
API 测试台 — 面板内直接调试接口 |
备份 — 快照、定时备份、一键恢复 |
出站代理 — SOCKS5 / HTTP,无需重启热切换 |
设置 — 思考模式、主题、多语言、管理员 |
- Anthropic
/v1/messages,原生工具调用与流式输出。 - OpenAI
/v1/chat/completions,工具调用结构完全对齐。 - OpenAI
/v1/responses,支持previous_response_id链式调用与已存响应回查。 - 全部端点支持 SSE 流式输出,上游瞬时错误时可在流中切换账号继续。
- 支持请求体解压(gzip / deflate),方便预压缩负载的客户端接入。
- 多个 Kiro 账号按模型粒度轮询。
- OAuth 令牌过期前自动刷新。
- 支持多种鉴权方式:AWS Builder ID、IAM Identity Center(企业 SSO)、SSO Token、本地缓存、凭证 JSON。
- 单账号导入导出与批量操作。
- 实时可观测性:RPM、错误率、模型分布、流量热力图。
- 请求日志支持分页搜索、状态/API Key 筛选、脱敏 API Key 列、排序,SQLite 持久化存档。
- 托管客户端 API Key:可自定义 Key 值、启用/禁用、设置独立 Token/Credit 限额,并支持重置用量。
- 仪表盘区分 Kiro 账号服务器配额用量与本代理产生的请求用量。
- 内置 API 测试台,无需离开面板即可调试接口。
- 快照与定时备份,支持一键恢复。
- 主题感知 UI(浅色 / 深色 / 跟随系统),具备友好的缓存头。
- 内建 i18n:英文与简体中文同源同步。
- 出站代理支持 SOCKS5 与 HTTP,热切换无需重启。
- 思考模式后缀可配置,Anthropic
thinking配置直通透传。
- 单文件 SQLite(
modernc.org/sqlite)数据库kiro.db,使用 DELETE journal 模式。 - 最终请求行是仪表盘请求数、Token、Credit、成功数与失败数的统计来源。
- 已存响应保留 30 天,写盘异步进行,不阻塞请求主路径。
| 组件 | 版本 |
|---|---|
| Go | 1.25+ |
| 操作系统 | Linux / macOS |
| 容器 | Docker 24+(可选) |
| 存储 | 本地磁盘卷 |
git clone https://github.com/tanu360/kiro-reverse-api.git
cd kiro-reverse-api
docker-compose up -ddocker run -d \
--name kiro-proxy \
-p 8080:8080 \
-e ADMIN_PASSWORD=your_secure_password \
-v /path/to/kiro-proxy-state:/app/state \
--restart unless-stopped \
ghcr.io/tanu360/kiro-reverse-api:latestgit clone https://github.com/tanu360/kiro-reverse-api.git
cd kiro-reverse-api
go build -o kiro-proxy .
./kiro-proxyTip
首次运行会自动创建 kiro.db。可通过 DATA_DIR 指定存储目录;Docker 使用 /app/state。默认管理密码为 changeme,对外暴露前请通过 ADMIN_PASSWORD 环境变量或管理面板进行修改。
| 变量 | 用途 | 默认值 |
|---|---|---|
DATA_DIR |
kiro.db 所在目录 |
. |
ADMIN_PASSWORD |
管理面板密码(覆盖配置文件) | — |
Warning
kiro.db 包含 OAuth 令牌与管理员凭证。请按敏感信息处理,切勿提交到 git、截图或聊天记录中。数据库目录请挂载为私有卷。
打开 http://localhost:8080/admin,登录后添加账号即可调用 API:
# Anthropic — Claude
curl http://localhost:8080/v1/messages \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-4.5","max_tokens":1024,"messages":[{"role":"user","content":"你好!"}]}'
# OpenAI — Chat Completions
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer any" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"你好!"}]}'
# OpenAI — Responses
curl http://localhost:8080/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer any" \
-d '{"model":"gpt-4o","input":"你好!"}'| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/v1/messages |
Anthropic 协议的 Claude 补全 |
POST |
/v1/chat/completions |
OpenAI 协议的对话补全 |
POST |
/v1/responses |
OpenAI Responses 接口(支持存储与链式调用) |
GET |
/v1/responses/{id} |
读取已存储的响应 |
DELETE |
/v1/responses/{id} |
删除已存储的响应 |
GET |
/v1/models |
列出可用模型 |
GET |
/v1/stats |
代理使用聚合统计 |
GET |
/admin |
Web 管理面板 |
可在「设置 → API 设置」中启用 API Key 验证。每个客户端 Key 都可以单独设置限额:
- 自定义 Key 留空时自动生成安全的
sk-...Key;也可以手动输入自己的 Key 值。 - 列表与请求日志中会显示脱敏格式,例如
sk-clb****e4yo;完整 Key 仍会用于鉴权,并可在详情中复制。 - Token 与 Credit 限额检查使用原始精确数值;界面上的四舍五入或 K/M/B 仅用于显示。
- Token 或 Credit 限额为
0表示该维度不限制。
仪表盘与账号卡片回答的是不同问题:
- 账号卡片:当前配置的 Kiro 账号,使用 Kiro 服务器返回的配额字段(
usage_current / usage_limit)。 - 请求卡片:本代理的 SQLite
requests历史:COUNT(*)、SUM(total_tokens)、SUM(credits)。 - 成功 / 失败卡片:同一个
requests表中的最终代理请求结果。 - 账号列表卡片:当前可见账号记录里保存的计数器(
requestCount、totalTokens、totalCredits)。
如果旧账号或已删除账号在 requests 表中仍有历史行,仪表盘的 App Credits 可能高于当前可见账号卡片的 Credit 总和。需要清空历史时,可使用「重置统计」或进行一次性数据库清理。
Token 标签可能显示为紧凑格式(如 54.5M、476.5K),但后端计算与限额检查始终使用原始数值。
在模型名后追加后缀(默认 -thinking)即可启用推理,例如 claude-sonnet-4.5-thinking。
Claude 兼容请求如果带有顶层 thinking 配置,也会自动启用:
{ "type": "enabled", "budget_tokens": 2048 }
{ "type": "adaptive" }输出格式可在管理面板「设置 → 思考模式」中配置。
如果你的网络受限,可在管理面板「设置 → 出站代理设置」中配置出站代理。
| 类型 | 示例 |
|---|---|
| SOCKS5 | socks5://127.0.0.1:1080 |
| HTTP | http://127.0.0.1:8888 |
Tip
设置保存后即时生效,无需重启服务。
| 变量 | 说明 | 默认值 |
|---|---|---|
DATA_DIR |
kiro.db 所在目录 |
. |
ADMIN_PASSWORD |
管理面板密码(覆盖配置文件) | — |
+ kiro.db # 本地状态:配置、凭据、SQLite 历史、备份 BLOBCaution
kiro.db 是敏感文件,账号令牌与管理员凭证以明文形式落盘存储,请严加保护。
本项目是 Quorinex/Kiro-Go 的延续。原始项目的贡献与功劳归原作者所有;我在此基础上继续维护和推进。
- ✅ 仅用于你有权限操作的账号。
- ❌ 不得用于批量账号爬取或绕过服务条款。
- ❌ 不得叠加 CAPTCHA 绕过、身份伪造、限流绕过等行为。
- 🔐
kiro.db切勿出现在 git、公开备份与截图中。 - 🧯 若上游持续返回鉴权错误,代理会快速失败,请先排查再重试。
Important
本项目仅供学习与研究使用,与 Amazon、AWS 或 Kiro 无关联。用户需自行确保符合相关服务条款与法律法规,使用风险自负。
