Kiro API Proxy

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 - IAM SSO, SSO Token, Credentials import
  • 📊 Usage Tracking - Monitor requests, tokens, and credits

Quick Start

git clone https://github.com/Quorinex/kiro-api-proxy.git
cd kiro-api-proxy

# 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-api-proxy \
  -p 8080:8080 \
  -e ADMIN_PASSWORD=your_secure_password \
  -v /path/to/data:/app/data \
  --restart unless-stopped \
  ghcr.io/quorinex/kiro-api-proxy: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-api-proxy.git
cd kiro-api-proxy
go build -o kiro-api-proxy .
./kiro-api-proxy

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-api-proxy/
├── 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.

License

MIT

Description
No description provided
Readme MIT 1.1 MiB
Languages
Go 67.9%
HTML 32%
Dockerfile 0.1%