Skip to content

πŸš€ Convert Kiro accounts into OpenAI/Anthropic APIs. Features multi-account pooling, streaming, auto token refresh, and a web admin panel.

Notifications You must be signed in to change notification settings

Quorinex/Kiro-Go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kiro-Go

Go Version Docker License

Convert Kiro accounts to OpenAI / Anthropic compatible API service.

English | δΈ­ζ–‡

Features

  • πŸ”„ Anthropic Claude API - Full support for /v1/messages endpoint
  • πŸ€– 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 - AWS Builder ID, IAM Identity Center (Enterprise SSO), SSO Token, Local Cache, Credentials
  • πŸ“Š Usage Tracking - Monitor requests, tokens, and credits
  • πŸ“¦ Account Export/Import - Compatible with Kiro Account Manager format
  • πŸ”„ Dynamic Model List - Auto-synced from Kiro API with caching
  • πŸ”” Version Update Check - Automatic new version notification
  • 🌐 i18n - Chinese / English admin panel

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/data volume stores config.json with 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

Multiple methods available:

Method Description
AWS Builder ID Login with AWS Builder ID (personal accounts)
IAM Identity Center (Enterprise SSO) Login with IAM Identity Center (enterprise accounts)
SSO Token Import x-amz-sso_authn token from browser
Kiro Local Cache Import from local Kiro IDE cache files
Credentials JSON 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
claude-opus-4.6 claude-opus-4.6
gpt-4o, gpt-4 claude-sonnet-4-20250514
gpt-3.5-turbo claude-sonnet-4-20250514

Thinking Mode

Enable extended thinking by adding a suffix to the model name (default: -thinking).

Usage

# OpenAI API with thinking
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4.5-thinking",
    "messages": [{"role": "user", "content": "Solve this step by step: 15 * 23"}],
    "stream": true
  }'

# Claude API with thinking
curl http://localhost:8080/v1/messages \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4.5-thinking",
    "max_tokens": 4096,
    "messages": [{"role": "user", "content": "Analyze this problem"}]
  }'

Configuration

Configure thinking mode in the Admin Panel under Settings > Thinking Mode Settings:

Setting Description Options
Trigger Suffix Model name suffix to enable thinking Default: -thinking (customizable, e.g., -think, -reason)
OpenAI Output Format How thinking content is returned in OpenAI API reasoning_content (DeepSeek compatible), <thinking> tag, <think> tag
Claude Output Format How thinking content is returned in Claude API <thinking> tag (default), <think> tag, plain text

Output Formats

OpenAI API (/v1/chat/completions):

  • reasoning_content - Thinking in separate reasoning_content field (DeepSeek compatible)
  • thinking - Thinking wrapped in <thinking>...</thinking> tags in content
  • think - Thinking wrapped in <think>...</think> tags in content

Claude API (/v1/messages):

  • thinking - Thinking wrapped in <thinking>...</thinking> tags (default)
  • think - Thinking wrapped in <think>...</think> tags
  • reasoning_content - Plain text output

API Endpoints

Endpoint Description
GET /health Health check
GET /v1/models List models
GET /v1/stats Statistics
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
β”œβ”€β”€ version.json         # Version info for update check
β”œβ”€β”€ 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
β”‚   β”œβ”€β”€ builderid.go     # AWS Builder ID login
β”‚   β”œβ”€β”€ 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.

License

MIT

About

πŸš€ Convert Kiro accounts into OpenAI/Anthropic APIs. Features multi-account pooling, streaming, auto token refresh, and a web admin panel.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •