Environment Variables
Environment Variables
Section titled “Environment Variables”This reference covers all environment variables used by UniCraft for configuration and setup.
Required Variables
Section titled “Required Variables”UniCraft API Key
Section titled “UniCraft API Key”# Your UniCraft API key (required)UNICRAFT_API_KEY=uc_1234567890abcdefOptional Variables
Section titled “Optional Variables”API Configuration
Section titled “API Configuration”# UniCraft API base URL (default: https://api.unicraft.com/v1)UNICRAFT_BASE_URL=https://api.unicraft.com/v1
# Request timeout in milliseconds (default: 30000)UNICRAFT_TIMEOUT=30000
# Number of retry attempts (default: 3)UNICRAFT_RETRIES=3
# Delay between retries in milliseconds (default: 1000)UNICRAFT_RETRY_DELAY=1000Provider API Keys
Section titled “Provider API Keys”OpenAI
Section titled “OpenAI”# OpenAI API keyOPENAI_API_KEY=sk-1234567890abcdef
# OpenAI organization ID (optional)OPENAI_ORGANIZATION=org-123456789
# OpenAI project ID (optional)OPENAI_PROJECT=proj-123456789Anthropic
Section titled “Anthropic”# Anthropic API keyANTHROPIC_API_KEY=sk-ant-1234567890abcdef
# Anthropic version (optional, default: 2023-06-01)ANTHROPIC_VERSION=2023-06-01# Google AI API keyGOOGLE_API_KEY=AIzaSy1234567890abcdef
# Google project ID (optional)GOOGLE_PROJECT_ID=your-project-idCohere
Section titled “Cohere”# Cohere API keyCOHERE_API_KEY=co_1234567890abcdefHugging Face
Section titled “Hugging Face”# Hugging Face API keyHUGGINGFACE_API_KEY=hf_1234567890abcdefCustom Providers
Section titled “Custom Providers”# Custom provider API keyCUSTOM_API_KEY=your-custom-api-key
# Custom provider base URLCUSTOM_BASE_URL=https://your-api.com/v1Configuration Variables
Section titled “Configuration Variables”Routing Configuration
Section titled “Routing Configuration”# Default routing strategy (default: cost_optimized)UNICRAFT_ROUTING_STRATEGY=cost_optimized
# Maximum cost per request (default: 0.01)UNICRAFT_MAX_COST_PER_REQUEST=0.01
# Quality threshold (default: 0.8)UNICRAFT_QUALITY_THRESHOLD=0.8
# Response time limit in milliseconds (default: 5000)UNICRAFT_RESPONSE_TIME_LIMIT=5000Cost Management
Section titled “Cost Management”# Daily cost limit (default: 100.00)UNICRAFT_DAILY_COST_LIMIT=100.00
# Weekly cost limit (default: 500.00)UNICRAFT_WEEKLY_COST_LIMIT=500.00
# Monthly cost limit (default: 2000.00)UNICRAFT_MONTHLY_COST_LIMIT=2000.00
# Enable cost optimization (default: true)UNICRAFT_COST_OPTIMIZATION=trueFailover Configuration
Section titled “Failover Configuration”# Enable failover (default: true)UNICRAFT_FAILOVER_ENABLED=true
# Number of retry attempts (default: 3)UNICRAFT_FAILOVER_RETRIES=3
# Delay between retries in milliseconds (default: 1000)UNICRAFT_FAILOVER_DELAY=1000
# Enable circuit breaker (default: true)UNICRAFT_CIRCUIT_BREAKER_ENABLED=true
# Circuit breaker failure threshold (default: 5)UNICRAFT_CIRCUIT_BREAKER_THRESHOLD=5
# Circuit breaker recovery timeout in milliseconds (default: 30000)UNICRAFT_CIRCUIT_BREAKER_TIMEOUT=30000Monitoring Configuration
Section titled “Monitoring Configuration”# Enable metrics collection (default: true)UNICRAFT_METRICS_ENABLED=true
# Metrics collection interval in milliseconds (default: 60000)UNICRAFT_METRICS_INTERVAL=60000
# Metrics retention period in days (default: 30)UNICRAFT_METRICS_RETENTION=30
# Enable alerts (default: true)UNICRAFT_ALERTS_ENABLED=trueCaching Configuration
Section titled “Caching Configuration”# Enable caching (default: true)UNICRAFT_CACHE_ENABLED=true
# Cache type (default: memory)UNICRAFT_CACHE_TYPE=memory
# Cache TTL in seconds (default: 3600)UNICRAFT_CACHE_TTL=3600
# Cache max size in MB (default: 1000)UNICRAFT_CACHE_MAX_SIZE=1000
# Enable cache compression (default: true)UNICRAFT_CACHE_COMPRESSION=trueRedis Configuration (if using Redis cache)
Section titled “Redis Configuration (if using Redis cache)”# Redis host (default: localhost)REDIS_HOST=localhost
# Redis port (default: 6379)REDIS_PORT=6379
# Redis password (optional)REDIS_PASSWORD=your-redis-password
# Redis database number (default: 0)REDIS_DB=0
# Redis key prefix (default: unicraft:)REDIS_KEY_PREFIX=unicraft:Security Configuration
Section titled “Security Configuration”# Enable API key rotation (default: false)UNICRAFT_API_KEY_ROTATION_ENABLED=false
# API key rotation interval in days (default: 90)UNICRAFT_API_KEY_ROTATION_INTERVAL=90
# Enable rate limiting (default: true)UNICRAFT_RATE_LIMITING_ENABLED=true
# Requests per minute limit (default: 100)UNICRAFT_RATE_LIMIT_RPM=100
# Requests per hour limit (default: 1000)UNICRAFT_RATE_LIMIT_RPH=1000
# Burst limit (default: 200)UNICRAFT_RATE_LIMIT_BURST=200IP Whitelisting
Section titled “IP Whitelisting”# Enable IP whitelisting (default: false)UNICRAFT_IP_WHITELISTING_ENABLED=false
# Allowed IP addresses (comma-separated)UNICRAFT_ALLOWED_IPS=192.168.1.0/24,10.0.0.0/8
# Blocked IP addresses (comma-separated)UNICRAFT_BLOCKED_IPS=192.168.1.100,10.0.0.50Webhook Configuration
Section titled “Webhook Configuration”# Enable webhooks (default: false)UNICRAFT_WEBHOOKS_ENABLED=false
# Webhook secret for signature verificationUNICRAFT_WEBHOOK_SECRET=your-webhook-secret
# Webhook timeout in milliseconds (default: 5000)UNICRAFT_WEBHOOK_TIMEOUT=5000
# Webhook retry attempts (default: 3)UNICRAFT_WEBHOOK_RETRIES=3
# Webhook retry delay in milliseconds (default: 1000)UNICRAFT_WEBHOOK_RETRY_DELAY=1000Alert Configuration
Section titled “Alert Configuration”Email Alerts
Section titled “Email Alerts”# Enable email alerts (default: false)UNICRAFT_EMAIL_ALERTS_ENABLED=false
# SMTP server hostUNICRAFT_SMTP_HOST=smtp.gmail.com
# SMTP server port (default: 587)UNICRAFT_SMTP_PORT=587
# SMTP usernameUNICRAFT_SMTP_USERNAME=your-email@gmail.com
# SMTP passwordUNICRAFT_SMTP_PASSWORD=your-app-password
# Email recipients (comma-separated)UNICRAFT_EMAIL_RECIPIENTS=admin@company.com,team@company.com
# Email senderUNICRAFT_EMAIL_SENDER=noreply@company.comSlack Alerts
Section titled “Slack Alerts”# Enable Slack alerts (default: false)UNICRAFT_SLACK_ALERTS_ENABLED=false
# Slack webhook URLUNICRAFT_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
# Slack channel (default: #ai-alerts)UNICRAFT_SLACK_CHANNEL=#ai-alerts
# Slack username (default: UniCraft)UNICRAFT_SLACK_USERNAME=UniCraftWebhook Alerts
Section titled “Webhook Alerts”# Enable webhook alerts (default: false)UNICRAFT_WEBHOOK_ALERTS_ENABLED=false
# Webhook alert URLUNICRAFT_WEBHOOK_ALERT_URL=https://your-app.com/webhooks/unicraft-alerts
# Webhook alert headers (JSON format)UNICRAFT_WEBHOOK_ALERT_HEADERS={"Authorization": "Bearer your-token"}Logging Configuration
Section titled “Logging Configuration”# Log level (default: info)UNICRAFT_LOG_LEVEL=info
# Enable request logging (default: false)UNICRAFT_LOG_REQUESTS=false
# Enable response logging (default: false)UNICRAFT_LOG_RESPONSES=false
# Enable error logging (default: true)UNICRAFT_LOG_ERRORS=true
# Enable performance logging (default: false)UNICRAFT_LOG_PERFORMANCE=false
# Log file path (optional)UNICRAFT_LOG_FILE=/var/log/unicraft.log
# Log rotation (default: true)UNICRAFT_LOG_ROTATION=true
# Log rotation size in MB (default: 100)UNICRAFT_LOG_ROTATION_SIZE=100
# Log rotation count (default: 5)UNICRAFT_LOG_ROTATION_COUNT=5A/B Testing Configuration
Section titled “A/B Testing Configuration”# Enable A/B testing (default: false)UNICRAFT_AB_TESTING_ENABLED=false
# A/B testing duration in days (default: 7)UNICRAFT_AB_TESTING_DURATION=7
# A/B testing metrics (comma-separated)UNICRAFT_AB_TESTING_METRICS=cost,quality_score,user_satisfactionData Protection Configuration
Section titled “Data Protection Configuration”# Enable encryption (default: true)UNICRAFT_ENCRYPTION_ENABLED=true
# Encryption algorithm (default: AES-256-GCM)UNICRAFT_ENCRYPTION_ALGORITHM=AES-256-GCM
# Key rotation interval in days (default: 30)UNICRAFT_KEY_ROTATION_INTERVAL=30
# Data retention period for logs in days (default: 90)UNICRAFT_LOG_RETENTION=90
# Data retention period for metrics in days (default: 365)UNICRAFT_METRICS_RETENTION=365
# Data retention period for requests in days (default: 30)UNICRAFT_REQUEST_RETENTION=30
# Enable data anonymization (default: true)UNICRAFT_ANONYMIZATION_ENABLED=true
# Fields to anonymize (comma-separated)UNICRAFT_ANONYMIZATION_FIELDS=user_id,email,phoneEnvironment-Specific Variables
Section titled “Environment-Specific Variables”Development Environment
Section titled “Development Environment”# Development API keyUNICRAFT_DEV_API_KEY=uc_dev_1234567890abcdef
# Development base URLUNICRAFT_DEV_BASE_URL=https://api-dev.unicraft.com/v1
# Development OpenAI API keyOPENAI_DEV_API_KEY=sk-dev_1234567890abcdef
# Development cost limits (lower for testing)UNICRAFT_DEV_DAILY_COST_LIMIT=10.00UNICRAFT_DEV_MAX_COST_PER_REQUEST=0.001
# Development logging (more verbose)UNICRAFT_DEV_LOG_LEVEL=debugUNICRAFT_DEV_LOG_REQUESTS=trueUNICRAFT_DEV_LOG_RESPONSES=trueStaging Environment
Section titled “Staging Environment”# Staging API keyUNICRAFT_STAGING_API_KEY=uc_staging_1234567890abcdef
# Staging base URLUNICRAFT_STAGING_BASE_URL=https://api-staging.unicraft.com/v1
# Staging OpenAI API keyOPENAI_STAGING_API_KEY=sk-staging_1234567890abcdef
# Staging cost limitsUNICRAFT_STAGING_DAILY_COST_LIMIT=50.00UNICRAFT_STAGING_MAX_COST_PER_REQUEST=0.005
# Staging monitoringUNICRAFT_STAGING_METRICS_ENABLED=trueUNICRAFT_STAGING_ALERTS_ENABLED=trueProduction Environment
Section titled “Production Environment”# Production API keyUNICRAFT_PROD_API_KEY=uc_prod_1234567890abcdef
# Production base URLUNICRAFT_PROD_BASE_URL=https://api.unicraft.com/v1
# Production OpenAI API keyOPENAI_PROD_API_KEY=sk-prod_1234567890abcdef
# Production cost limitsUNICRAFT_PROD_DAILY_COST_LIMIT=1000.00UNICRAFT_PROD_MAX_COST_PER_REQUEST=0.05
# Production monitoringUNICRAFT_PROD_METRICS_ENABLED=trueUNICRAFT_PROD_ALERTS_ENABLED=trueUNICRAFT_PROD_WEBHOOKS_ENABLED=true
# Production securityUNICRAFT_PROD_RATE_LIMITING_ENABLED=trueUNICRAFT_PROD_IP_WHITELISTING_ENABLED=trueUNICRAFT_PROD_ENCRYPTION_ENABLED=trueDocker Environment Variables
Section titled “Docker Environment Variables”Docker Compose
Section titled “Docker Compose”version: "3.8"services: unicraft: image: unicraft/unicraft:latest environment: - UNICRAFT_API_KEY=${UNICRAFT_API_KEY} - UNICRAFT_BASE_URL=${UNICRAFT_BASE_URL} - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - GOOGLE_API_KEY=${GOOGLE_API_KEY} - UNICRAFT_CACHE_TYPE=redis - REDIS_HOST=redis - REDIS_PORT=6379 - UNICRAFT_METRICS_ENABLED=true - UNICRAFT_ALERTS_ENABLED=true depends_on: - redisDocker Run
Section titled “Docker Run”docker run -d \ --name unicraft \ -e UNICRAFT_API_KEY=uc_1234567890abcdef \ -e OPENAI_API_KEY=sk-1234567890abcdef \ -e ANTHROPIC_API_KEY=sk-ant-1234567890abcdef \ -e GOOGLE_API_KEY=AIzaSy1234567890abcdef \ -e UNICRAFT_CACHE_TYPE=redis \ -e REDIS_HOST=localhost \ -e REDIS_PORT=6379 \ -e UNICRAFT_METRICS_ENABLED=true \ -e UNICRAFT_ALERTS_ENABLED=true \ -p 3000:3000 \ unicraft/unicraft:latestKubernetes Environment Variables
Section titled “Kubernetes Environment Variables”ConfigMap
Section titled “ConfigMap”apiVersion: v1kind: ConfigMapmetadata: name: unicraft-configdata: UNICRAFT_BASE_URL: "https://api.unicraft.com/v1" UNICRAFT_TIMEOUT: "30000" UNICRAFT_RETRIES: "3" UNICRAFT_CACHE_TYPE: "redis" UNICRAFT_METRICS_ENABLED: "true" UNICRAFT_ALERTS_ENABLED: "true"Secret
Section titled “Secret”apiVersion: v1kind: Secretmetadata: name: unicraft-secretstype: Opaquedata: UNICRAFT_API_KEY: dWNfMTIzNDU2Nzg5MGFiY2RlZg== OPENAI_API_KEY: c2stMTIzNDU2Nzg5MGFiY2RlZg== ANTHROPIC_API_KEY: c2stYW50LTEyMzQ1Njc4OTBhYmNkZWY= GOOGLE_API_KEY: QUl6YVN5MTIzNDU2Nzg5MGFiY2RlZg==Deployment
Section titled “Deployment”apiVersion: apps/v1kind: Deploymentmetadata: name: unicraftspec: replicas: 3 selector: matchLabels: app: unicraft template: metadata: labels: app: unicraft spec: containers: - name: unicraft image: unicraft/unicraft:latest envFrom: - configMapRef: name: unicraft-config - secretRef: name: unicraft-secrets ports: - containerPort: 3000Environment Variable Validation
Section titled “Environment Variable Validation”Validation Script
Section titled “Validation Script”#!/bin/bash
# Required variablesREQUIRED_VARS=( "UNICRAFT_API_KEY")
# Optional variables with defaultsOPTIONAL_VARS=( "UNICRAFT_BASE_URL=https://api.unicraft.com/v1" "UNICRAFT_TIMEOUT=30000" "UNICRAFT_RETRIES=3" "UNICRAFT_CACHE_TYPE=memory" "UNICRAFT_METRICS_ENABLED=true" "UNICRAFT_ALERTS_ENABLED=true")
# Check required variablesfor var in "${REQUIRED_VARS[@]}"; do if [ -z "${!var}" ]; then echo "Error: Required environment variable $var is not set" exit 1 fidone
# Set default values for optional variablesfor var in "${OPTIONAL_VARS[@]}"; do name="${var%%=*}" default="${var#*=}" if [ -z "${!name}" ]; then export "$name=$default" echo "Set $name to default value: $default" fidone
echo "All environment variables validated successfully"Best Practices
Section titled “Best Practices”1. Security
Section titled “1. Security”- Never commit API keys to version control
- Use environment-specific API keys
- Rotate API keys regularly
- Use secrets management systems
2. Organization
Section titled “2. Organization”- Use consistent naming conventions
- Group related variables together
- Document all environment variables
- Use environment-specific configurations
3. Validation
Section titled “3. Validation”- Validate environment variables at startup
- Provide meaningful error messages
- Set appropriate default values
- Test configuration in different environments
4. Monitoring
Section titled “4. Monitoring”- Monitor environment variable usage
- Alert on missing required variables
- Track configuration changes
- Document environment setup
Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”-
Missing Required Variables
- Check environment variable names
- Verify variable values
- Ensure proper export/import
-
Invalid Variable Values
- Validate variable formats
- Check for typos
- Verify data types
-
Environment-Specific Issues
- Check environment-specific variables
- Verify environment detection
- Test in target environment
-
Docker/Kubernetes Issues
- Check container environment
- Verify secrets/configmaps
- Test variable injection
Debug Tips
Section titled “Debug Tips”-
List All Variables
Terminal window env | grep UNICRAFT -
Check Variable Values
Terminal window echo $UNICRAFT_API_KEY -
Validate Configuration
Terminal window ./validate-env.sh -
Test API Connection
Terminal window curl -H "Authorization: Bearer $UNICRAFT_API_KEY" \https://api.unicraft.com/v1/health
Support
Section titled “Support”For environment variable support:
- Documentation: UniCraft Docs
- Configuration Guide: UniCraft Configuration Guide
- Community: UniCraft Community
- Support: support@unicraft.com
Next Steps
Section titled “Next Steps”After setting up environment variables:
- Validate Configuration: Run validation scripts
- Test Connection: Verify API connectivity
- Monitor Usage: Set up monitoring and alerts
- Document Setup: Document environment configuration
- Regular Reviews: Periodically review and update variables