Convert Kiro accounts to OpenAI / Anthropic compatible API service.
If this project helps you, a Star would mean a lot.
- Anthropic
/v1/messages& OpenAI/v1/chat/completions - Multi-account pool with round-robin load balancing
- Auto token refresh, SSE streaming, Web admin panel
- Multiple auth: AWS Builder ID, IAM Identity Center (Enterprise SSO), SSO Token, local cache, credentials JSON
- Usage tracking, account import/export, i18n (CN / EN)
- Support configuring outbound proxy (SOCKS5 / HTTP)
- Support Kiro IDE / Kiro CLI client simulation modes
git clone https://github.com/Quorinex/Kiro-Go.git
cd Kiro-Go
mkdir -p data
docker-compose up -ddocker run -d \
--name kiro-go \
-p 8080:8080 \
-e ADMIN_PASSWORD=your_secure_password \
-v /path/to/data:/app/data \
--restart unless-stopped \
ghcr.io/quorinex/kiro-go:latestgit clone https://github.com/Quorinex/Kiro-Go.git
cd Kiro-Go
go build -o kiro-go .
./kiro-goThe repo already includes a Dockerfile, so it builds and runs on Zeabur out of the box.
Option 1: Dashboard (one-click)
- Fork this repo to your GitHub account.
- In Zeabur, create a new service and choose Deploy from GitHub, then select your fork.
- Zeabur auto-detects the
Dockerfileand builds the image. - In the Networking tab, expose port
8080and bind a domain. - In the Variables tab, set at least
ADMIN_PASSWORD(admin panel password). - Mount a Volume at
/app/dataif you want accounts / config to survive redeploys.
Option 2: CLI
npm i -g zeabur
zeabur auth login
zeabur deployRun the commands from the project root. The CLI writes
.zeabur/context.jsonto remember the target project / service β it contains personal IDs, so don't commit it.
Once the service is up, open https://<your-domain>/admin to log in.
Config is auto-created at data/config.json. Mount /app/data for persistence. The default admin password is changeme β override it via the ADMIN_PASSWORD env var or change it in the admin panel before going to production.
Open http://localhost:8080/admin, log in, add accounts, then call the API:
# 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":"Hello!"}]}'
# OpenAI
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer any" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello!"}]}'This project supports global and per-account clientMode:
kiro-ide: default mode, preserving the existing Kiro IDE request fingerprint.kiro-cli: simulates the official kiro-cliorigin=KIRO_CLI,envState, User-Agent,x-amzn-codewhisperer-optout=false, and compact token refresh headers.
Change the global mode in Settings - Client Simulation Mode, or override it per account in account details. Config example:
{
"clientMode": "kiro-cli",
"accounts": [
{ "refreshToken": "...", "clientMode": "kiro-cli" }
]
}Append a suffix (default -thinking) to the model name, e.g. claude-sonnet-4.5-thinking. Claude-compatible requests that include a top-level thinking config such as {"type":"enabled","budget_tokens":2048} or {"type":"adaptive"} also enable thinking mode automatically. Configure output format in the admin panel under Settings - Thinking Mode.
For users in restricted network regions, configure an outbound proxy in the admin panel under Settings - Outbound Proxy Settings. Supports SOCKS5 and HTTP proxies.
The setting takes effect immediately without restarting.
| Variable | Description | Default |
|---|---|---|
CONFIG_PATH |
Config file path | data/config.json |
ADMIN_PASSWORD |
Admin panel password (overrides config) | - |
LOG_LEVEL |
Log level: debug/info/warn/error | info |
Friendly discussion is welcome. If you run into issues, try asking Claude Code, Codex, or similar tools for help first β most problems can be solved that way. PRs are even better.
For educational and research purposes only. Not affiliated with Amazon, AWS, or Kiro. Users are responsible for complying with applicable terms of service and laws. Use at your own risk.