chore: add documentation and fix script permissions

This commit is contained in:
Kunthawat Greethong
2025-12-29 09:26:24 +07:00
parent 2225a4ab1f
commit bd79b0c00e
2 changed files with 260 additions and 0 deletions

260
README.md Normal file
View File

@@ -0,0 +1,260 @@
# Chutes.ai Claude Code Setup Script
This script (`chutes.sh`) automates the installation and configuration of Claude Code for use with the Chutes.ai API. It handles Node.js setup, Claude Code installation, and API configuration with an interactive model selection interface.
## Overview
The script performs the following tasks:
1. **Node.js Installation**: Checks for Node.js (minimum v18) and installs v22 via nvm if needed
2. **Claude Code Installation**: Installs or updates `@anthropic-ai/claude-code` globally
3. **API Configuration**: Sets up your Chutes.ai API key and selects a model
4. **Environment Setup**: Configures all necessary settings for Claude Code to work with Chutes.ai
## Prerequisites
- **Operating System**: Linux or macOS
- **Internet Connection**: Required for downloading Node.js, nvm, and npm packages
- **Chutes.ai API Key**: You'll need an API key from [chutes.ai](https://chutes.ai/app/api)
## Installation
### Step 1: Download the Script
Ensure the script is executable:
```bash
chmod +x chutes.sh
```
### Step 2: Run the Script
Execute the script:
```bash
./chutes.sh
```
The script will guide you through the installation process.
## Installation Process
### 1. Node.js Setup
The script checks if Node.js is installed:
- **If Node.js v18+ is found**: Uses the existing installation
- **If Node.js < v18 is found**: Upgrades to Node.js v22
- **If Node.js is not found**: Installs Node.js v22 using nvm (Node Version Manager)
The nvm version used is `v0.40.3`.
### 2. Claude Code Installation
The script installs or updates Claude Code:
- **If already installed**: Updates to the latest version
- **If not installed**: Installs `@anthropic-ai/claude-code` globally via npm
### 3. API Configuration
You'll be prompted to enter your Chutes.ai API key:
```
Enter your chutes.ai API key: [your-api-key]
```
### 4. Model Selection
The script fetches available models from the Chutes.ai API and displays them in a two-column format:
```
Available models (per 1M tokens: input/output):
[TH] model-name-1 $1.00/$2.00 [TH] model-name-2 $0.50/$1.00
model-name-3 $0.80/$1.50 model-name-4 $0.30/$0.80
```
**Legend:**
- `[TH]` - Thinking models with enhanced reasoning capabilities
- Pricing shown as `$input_price/$output_price` per 1M tokens
Select a model by entering its number:
```
Select a model (1-10) [default: 1]: 1
```
## Configuration Files
The script creates/modifies the following files:
### `~/.claude/settings.json`
Main configuration file containing:
- **model**: Selected Claude model
- **alwaysThinkingEnabled**: Set to `true`
- **env**: Environment variables including:
- `ANTHROPIC_AUTH_TOKEN`: Your Chutes.ai API key
- `ANTHROPIC_BASE_URL`: `https://claude.chutes.ai` (proxy URL)
- `API_TIMEOUT_MS`: `6000000` (100 minutes)
- `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`: `1`
- Model defaults for Haiku, Sonnet, Opus, and subagent models
### `~/.claude.json`
Contains onboarding status:
```json
{
"hasCompletedOnboarding": true
}
```
## Using Claude Code
After installation, start Claude Code by running:
```bash
claude
```
This will launch the Claude Code interface with your configured Chutes.ai API and selected model.
## Environment Variables
The script sets the following environment variables in the configuration:
| Variable | Value | Description |
|----------|-------|-------------|
| `ANTHROPIC_AUTH_TOKEN` | Your API key | Authentication token for Chutes.ai API |
| `ANTHROPIC_BASE_URL` | `https://claude.chutes.ai` | Proxy base URL for API requests |
| `API_TIMEOUT_MS` | `6000000` | API request timeout (100 minutes) |
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | `1` | Disables non-essential network traffic |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Selected model | Default model for Haiku |
| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Selected model | Default model for Sonnet |
| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Selected model | Default model for Opus |
| `CLAUDE_CODE_SUBAGENT_MODEL` | Selected model | Model for subagent operations |
| `ANTHROPIC_SMALL_FAST_MODEL` | Selected model | Small/fast model variant |
## Non-Interactive Mode
For automation purposes, you can run the script in non-interactive mode by setting the `CLAUDE_NONINTERACTIVE` environment variable:
```bash
CLAUDE_NONINTERACTIVE=1 ./chutes.sh
```
In non-interactive mode:
- The first available model will be selected automatically
- You'll still need to provide the API key interactively
## Troubleshooting
### Node.js Installation Fails
If Node.js installation fails, try:
```bash
# Remove existing nvm installation
rm -rf ~/.nvm
# Run the script again
./chutes.sh
```
### API Key Issues
If you encounter API authentication errors:
1. Verify your API key is correct
2. Get a new API key from [https://chutes.ai/app/api](https://chutes.ai/app/api)
3. Re-run the script to update your configuration
### Model Selection Fails
If the script cannot fetch available models:
1. Check your internet connection
2. Verify your API key is valid
3. The script will fall back to the default model: `deepseek-ai/DeepSeek-R1`
### Permission Errors
If you encounter permission errors:
```bash
# Ensure the script is executable
chmod +x chutes.sh
# Run with appropriate permissions
sudo ./chutes.sh
```
### Claude Code Not Found
After installation, if `claude` command is not found:
```bash
# Reload your shell configuration
source ~/.bashrc # for bash
# or
source ~/.zshrc # for zsh
# Or add nvm to your PATH manually
export PATH="$HOME/.nvm:$PATH"
source "$HOME/.nvm/nvm.sh"
```
## Manual Configuration
If you need to manually update your configuration after installation:
### Update API Key
Edit `~/.claude/settings.json` and update the `ANTHROPIC_AUTH_TOKEN` value.
### Change Model
Edit `~/.claude/settings.json` and update the `model` value and all model-related environment variables.
### Re-run Configuration
You can re-run the script to update your configuration:
```bash
./chutes.sh
```
## Script Constants
The following constants are defined in the script (lines 10-20):
| Constant | Value | Description |
|----------|-------|-------------|
| `NODE_MIN_VERSION` | `18` | Minimum required Node.js version |
| `NODE_INSTALL_VERSION` | `22` | Node.js version to install |
| `NVM_VERSION` | `v0.40.3` | Node Version Manager version |
| `CLAUDE_PACKAGE` | `@anthropic-ai/claude-code` | npm package name |
| `CONFIG_DIR` | `$HOME/.claude` | Configuration directory |
| `CONFIG_FILE` | `$HOME/.claude/settings.json` | Settings file path |
| `PROXY_BASE_URL` | `https://claude.chutes.ai` | Proxy API URL |
| `BACKEND_BASE_URL` | `https://llm.chutes.ai` | Backend API URL |
| `API_TIMEOUT_MS` | `6000000` | API timeout in milliseconds |
## Support
For issues related to:
- **Chutes.ai API**: Visit [chutes.ai](https://chutes.ai)
- **Claude Code**: Check the [official documentation](https://docs.anthropic.com/claude/code)
- **This script**: Review the script comments or contact your system administrator
## Credits
This script is based on the original version created by Z.AI. The original version using z.ai can be found at:
https://cdn.bigmodel.cn/install/claude_code_zai_env.sh
## License
Please refer to the original source for licensing information.

0
chutes.sh Normal file → Executable file
View File