chore: add documentation and fix script permissions
This commit is contained in:
260
README.md
Normal file
260
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user