# Deploying CLIProxyAPI on Hugging Face Spaces This guide explains how to deploy CLIProxyAPI with Kiro integration on Hugging Face Spaces. ## Quick Start 1. Create a new Space on Hugging Face with "Docker" SDK 2. Set the following Secrets in your Space settings: ### Required Secrets | Secret Name | Description | |-------------|-------------| | `KIRO_REFRESH_TOKEN` | Your Kiro refresh token (this is all you need!) | | `API_KEY` | API key for authenticating requests to the proxy | ### Optional Secrets | Secret Name | Default | Description | |-------------|---------|-------------| | `KIRO_REGION` | `us-east-1` | AWS region for Kiro API | | `DEBUG` | `false` | Enable debug logging | **Note:** `profile-arn` is automatically fetched from the token refresh API - you don't need to provide it! ## Getting Kiro Credentials ### Option 1: From Kiro Desktop App 1. Open Kiro IDE/Desktop app 2. Sign in to your account 3. Locate the credentials file (usually in `~/.kiro/` or similar) 4. Extract the `refreshToken` value ### Option 2: From kiro-cli 1. Install kiro-cli: `npm install -g @kiro/cli` 2. Login: `kiro login` 3. Find the database: `~/.local/share/kiro-cli/data.sqlite3` 4. Extract credentials using SQLite ### Option 3: Using AWS SSO If you have AWS SSO configured for CodeWhisperer: 1. Get your SSO credentials 2. Use the AWS SSO OIDC flow for token refresh ## Dockerfile Use `Dockerfile.hf-spaces` for HF Spaces deployment: ```bash # Rename for HF Spaces cp Dockerfile.hf-spaces Dockerfile ``` ## Environment Variables The startup script will automatically create a `config.yaml` from environment variables. See `config.example.yaml` for full configuration options. ## Usage Once deployed, use the Space URL as your API base URL: ```bash # OpenAI-compatible endpoint curl https://your-username-your-space.hf.space/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4.5", "messages": [{"role": "user", "content": "Hello!"}] }' ``` ## Supported Models (via Kiro) | Model ID | Description | |----------|-------------| | `auto` | Automatic model selection | | `claude-sonnet-4` | Claude 4 Sonnet | | `claude-sonnet-4.5` | Claude 4.5 Sonnet | | `claude-haiku-4.5` | Claude 4.5 Haiku | | `claude-opus-4.5` | Claude 4.5 Opus (may require paid tier) | | `claude-3.7-sonnet` | Claude 3.7 Sonnet (legacy, hidden but functional) | ## Claude API Configuration with Multiple Keys This version supports multiple Claude API keys with round-robin load balancing! ### Via Management UI 1. Access the management panel at `https://your-space.hf.space/management.html` 2. Go to **AI Providers** → **Claude API Configuration** 3. Click **Add Configuration** 4. In the **API Keys** section, add multiple keys with optional per-key proxy URLs 5. Save the configuration ### Via Config File You can also configure multiple Claude API keys directly in your `config.yaml`: ```yaml claude-api-key: - api-key-entries: # List your API keys and optional proxies here # See documentation for full syntax base-url: "https://api.anthropic.com" priority: 10 models: - name: claude-3-5-sonnet-20241022 alias: claude-sonnet ``` **Features:** - **Round-robin load balancing**: Requests automatically rotate between all API keys - **Per-key proxy support**: Each API key can have its own proxy configuration - **Backward compatible**: Single `api-key` field still works - **Automatic failover**: If one key fails, the system tries the next one ## Troubleshooting ### Token Refresh Errors - Ensure your refresh token is valid - Check that the profile ARN matches your account - Verify the region is correct ### 403 Errors - Token may have expired - restart the Space to trigger refresh - Check if your Kiro account has access to the requested models ### Connection Issues - If behind a firewall, you may need to configure proxy settings - Ensure port 7860 is the exposed port (HF Spaces default)