Kiro/AmazonQ API requires the conversation history to start with a user message.
Some clients (e.g., OpenClaw) send conversations starting with an assistant message,
which is valid for the native Claude API but causes 'Improperly formed request' (400)
on the Kiro endpoint.
This fix detects when the first message has role=assistant and prepends a minimal
placeholder user message ('.') to satisfy the Kiro API's message ordering requirement.
Upstream error: {"message":"Improperly formed request.","reason":null}
Verified: original request returns 400, fixed request returns 200.
CLIProxyAPI Plus
English | Chinese
This is the Plus version of CLIProxyAPI, adding support for third-party providers on top of the mainline project.
All third-party provider support is maintained by community contributors; CLIProxyAPI does not provide technical support. Please contact the corresponding community maintainer if you need assistance.
The Plus release stays in lockstep with the mainline features.
Differences from the Mainline
- Added GitHub Copilot support (OAuth login), provided by em4go
- Added Kiro (AWS CodeWhisperer) support (OAuth login), provided by fuko2935, Ravens2121
New Features (Plus Enhanced)
- OAuth Web Authentication: Browser-based OAuth login for Kiro with beautiful web UI
- Rate Limiter: Built-in request rate limiting to prevent API abuse
- Background Token Refresh: Automatic token refresh 10 minutes before expiration
- Metrics & Monitoring: Request metrics collection for monitoring and debugging
- Device Fingerprint: Device fingerprint generation for enhanced security
- Cooldown Management: Smart cooldown mechanism for API rate limits
- Usage Checker: Real-time usage monitoring and quota management
- Model Converter: Unified model name conversion across providers
- UTF-8 Stream Processing: Improved streaming response handling
Kiro Authentication
Web-based OAuth Login
Access the Kiro OAuth web interface at:
http://your-server:8080/v0/oauth/kiro
This provides a browser-based OAuth flow for Kiro (AWS CodeWhisperer) authentication with:
- AWS Builder ID login
- AWS Identity Center (IDC) login
- Token import from Kiro IDE
Quick Deployment with Docker
One-Command Deployment
# Create deployment directory
mkdir -p ~/cli-proxy && cd ~/cli-proxy
# Create docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
cli-proxy-api:
image: eceasy/cli-proxy-api-plus:latest
container_name: cli-proxy-api-plus
ports:
- "8317:8317"
volumes:
- ./config.yaml:/CLIProxyAPI/config.yaml
- ./auths:/root/.cli-proxy-api
- ./logs:/CLIProxyAPI/logs
restart: unless-stopped
EOF
# Download example config
curl -o config.yaml https://raw.githubusercontent.com/router-for-me/CLIProxyAPIPlus/main/config.example.yaml
# Pull and start
docker compose pull && docker compose up -d
Configuration
Edit config.yaml before starting:
# Basic configuration example
server:
port: 8317
# Add your provider configurations here
Update to Latest Version
cd ~/cli-proxy
docker compose pull && docker compose up -d
Contributing
This project only accepts pull requests that relate to third-party provider support. Any pull requests unrelated to third-party provider support will be rejected.
If you need to submit any non-third-party provider changes, please open them against the mainline repository.
License
This project is licensed under the MIT License - see the LICENSE file for details.