# Kiro-Go [![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go)](https://go.dev/) [![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?style=flat&logo=docker)](https://www.docker.com/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) Convert Kiro accounts to OpenAI / Anthropic compatible API service. [English](README.md) | [δΈ­ζ–‡](README_CN.md) ## 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 ### Docker Compose (Recommended) ```bash 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 ```bash # 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 ```bash 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: ```json { "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 ```json { "refreshToken": "eyJ...", "accessToken": "eyJ...", "clientId": "xxx", "clientSecret": "xxx" } ``` ### 3. Call API #### Claude API ```bash 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 ```bash 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. ## License [MIT](LICENSE)