5.1 KiB
5.1 KiB
Kiro-Go
Convert Kiro accounts to OpenAI / Anthropic compatible API service.
Features
- 🔄 Anthropic Claude API - Full support for
/v1/messagesendpoint - 🤖 OpenAI Chat API - Compatible with
/v1/chat/completions - ⚖️ Multi-Account Pool - Round-robin load balancing
- 🔐 Auto Token Refresh - Seamless token management
- 📡 Streaming - Real-time SSE responses
- 🎛️ Web Admin Panel - Easy account management
- 🔑 Multiple Auth Methods - IAM SSO, SSO Token, Credentials import
- 📊 Usage Tracking - Monitor requests, tokens, and credits
Quick Start
Docker Compose (Recommended)
git clone https://github.com/Quorinex/Kiro-Go.git
cd Kiro-Go
# Create data directory for persistence
mkdir -p data
docker-compose up -d
Docker Run
# Create data directory
mkdir -p /path/to/data
docker 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:latest
📁 The
/app/datavolume storesconfig.jsonwith accounts and settings. Mount it for data persistence.
Build from Source
git clone https://github.com/Quorinex/Kiro-Go.git
cd Kiro-Go
go build -o kiro-go .
./kiro-go
Configuration
Config file is auto-created at data/config.json on first run:
{
"password": "changeme",
"port": 8080,
"host": "127.0.0.1",
"requireApiKey": false,
"apiKey": "",
"accounts": []
}
⚠️ Change the default password before production use!
Environment Variables
| Variable | Description | Default |
|---|---|---|
CONFIG_PATH |
Config file path | data/config.json |
ADMIN_PASSWORD |
Admin panel password (overrides config) | - |
Usage
1. Access Admin Panel
Open http://localhost:8080/admin and login with your password.
2. Add Accounts
Three methods available:
| Method | Description |
|---|---|
| IAM SSO | For enterprise users with SSO Start URL |
| SSO Token | Import x-amz-sso_authn from browser |
| Credentials | Import JSON from Kiro Account Manager |
Credentials Format
{
"refreshToken": "eyJ...",
"accessToken": "eyJ...",
"clientId": "xxx",
"clientSecret": "xxx"
}
3. Call API
Claude API
curl http://localhost:8080/v1/messages \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'
OpenAI API
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!"}]
}'
Model Mapping
| Request Model | Actual Model |
|---|---|
claude-sonnet-4-20250514 |
claude-sonnet-4-20250514 |
claude-sonnet-4.5 |
claude-sonnet-4.5 |
claude-haiku-4.5 |
claude-haiku-4.5 |
claude-opus-4.5 |
claude-opus-4.5 |
gpt-4o, gpt-4 |
claude-sonnet-4-20250514 |
gpt-3.5-turbo |
claude-sonnet-4-20250514 |
API Endpoints
| Endpoint | Description |
|---|---|
GET /health |
Health check |
GET /v1/models |
List models |
POST /v1/messages |
Claude Messages API |
POST /v1/messages/count_tokens |
Token counting |
POST /v1/chat/completions |
OpenAI Chat API |
GET /admin |
Admin panel |
Project Structure
Kiro-Go/
├── main.go # Entry point
├── config/ # Configuration management
├── pool/ # Account pool & load balancing
├── proxy/ # API handlers & Kiro client
│ ├── handler.go # HTTP routing & admin API
│ ├── kiro.go # Kiro API client
│ ├── kiro_api.go # Kiro REST API (usage, models)
│ └── translator.go # Request/response conversion
├── auth/ # Authentication
│ ├── iam_sso.go # IAM SSO login
│ ├── oidc.go # OIDC token refresh
│ └── sso_token.go # SSO token import
├── web/ # Admin panel frontend
├── Dockerfile
└── docker-compose.yml
Disclaimer
This project is provided for educational and research purposes only.
- This software is not affiliated with, endorsed by, or associated with Amazon, AWS, or Kiro in any way
- Users are solely responsible for ensuring their use complies with all applicable terms of service and laws
- The authors assume no liability for any misuse or violations arising from the use of this software
- Use at your own risk
By using this software, you acknowledge that you have read and understood this disclaimer.