Use different API keys, models, and limits across dev/staging/prod.
// config/anthropic.ts
interface AnthropicConfig {
apiKey: string;
model: string;
maxTokens: number;
maxRetries: number;
}
const configs: Record<string, AnthropicConfig> = {
development: {
apiKey: process.env.ANTHROPIC_API_KEY!,
model: 'claude-haiku-4-5-20251001', // Cheap for dev
maxTokens: 256,
maxRetries: 1,
},
staging: {
apiKey: process.env.ANTHROPIC_API_KEY!,
model: 'claude-sonnet-4-20250514',
maxTokens: 1024,
maxRetries: 2,
},
production: {
apiKey: process.env.ANTHROPIC_API_KEY!,
model: 'claude-sonnet-4-20250514',
maxTokens: 4096,
maxRetries: 3,
},
};
export const config = configs[process.env.NODE_ENV || 'development'];
Use different Anthropic API keys for each environment:
# .env.development
ANTHROPIC_API_KEY=sk-ant-dev-...
# .env.staging
ANTHROPIC_API_KEY=sk-ant-staging-...
# .env.production
ANTHROPIC_API_KEY=sk-ant-prod-...
| Environment | Model | Why |
|---|---|---|
| Development | Haiku | Fast iteration, cheap |
| Staging | Sonnet | Match prod quality |
| Production | Sonnet (default) | Balanced cost/quality |
| Production (complex) | Opus | Complex reasoning tasks |
| Error | Cause | Solution |
|---|---|---|
| API Error | Check error type and status code | See clade-common-errors |
See Environment Configuration TypeScript pattern, API key separation strategy, and Model Selection Strategy table above.
See clade-observability for monitoring across environments.
clade-install-auth
Each section contains production-ready code examples. Copy and adapt them to your use case.
Integrate the patterns that match your requirements. Test each change individually.
Run your test suite to confirm the integration works correctly.