Skip to content

Environment Variables

This reference covers all environment variables used by UniCraft for configuration and setup.

Terminal window
# Your UniCraft API key (required)
UNICRAFT_API_KEY=uc_1234567890abcdef
Terminal window
# 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=1000
Terminal window
# OpenAI API key
OPENAI_API_KEY=sk-1234567890abcdef
# OpenAI organization ID (optional)
OPENAI_ORGANIZATION=org-123456789
# OpenAI project ID (optional)
OPENAI_PROJECT=proj-123456789
Terminal window
# Anthropic API key
ANTHROPIC_API_KEY=sk-ant-1234567890abcdef
# Anthropic version (optional, default: 2023-06-01)
ANTHROPIC_VERSION=2023-06-01
Terminal window
# Google AI API key
GOOGLE_API_KEY=AIzaSy1234567890abcdef
# Google project ID (optional)
GOOGLE_PROJECT_ID=your-project-id
Terminal window
# Cohere API key
COHERE_API_KEY=co_1234567890abcdef
Terminal window
# Hugging Face API key
HUGGINGFACE_API_KEY=hf_1234567890abcdef
Terminal window
# Custom provider API key
CUSTOM_API_KEY=your-custom-api-key
# Custom provider base URL
CUSTOM_BASE_URL=https://your-api.com/v1
Terminal window
# 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=5000
Terminal window
# 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=true
Terminal window
# 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=30000
Terminal window
# 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=true
Terminal window
# 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=true

Redis Configuration (if using Redis cache)

Section titled “Redis Configuration (if using Redis cache)”
Terminal window
# 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:
Terminal window
# 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=200
Terminal window
# 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.50
Terminal window
# Enable webhooks (default: false)
UNICRAFT_WEBHOOKS_ENABLED=false
# Webhook secret for signature verification
UNICRAFT_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=1000
Terminal window
# Enable email alerts (default: false)
UNICRAFT_EMAIL_ALERTS_ENABLED=false
# SMTP server host
UNICRAFT_SMTP_HOST=smtp.gmail.com
# SMTP server port (default: 587)
UNICRAFT_SMTP_PORT=587
# SMTP username
UNICRAFT_SMTP_USERNAME=your-email@gmail.com
# SMTP password
UNICRAFT_SMTP_PASSWORD=your-app-password
# Email recipients (comma-separated)
UNICRAFT_EMAIL_RECIPIENTS=admin@company.com,team@company.com
# Email sender
UNICRAFT_EMAIL_SENDER=noreply@company.com
Terminal window
# Enable Slack alerts (default: false)
UNICRAFT_SLACK_ALERTS_ENABLED=false
# Slack webhook URL
UNICRAFT_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=UniCraft
Terminal window
# Enable webhook alerts (default: false)
UNICRAFT_WEBHOOK_ALERTS_ENABLED=false
# Webhook alert URL
UNICRAFT_WEBHOOK_ALERT_URL=https://your-app.com/webhooks/unicraft-alerts
# Webhook alert headers (JSON format)
UNICRAFT_WEBHOOK_ALERT_HEADERS={"Authorization": "Bearer your-token"}
Terminal window
# 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=5
Terminal window
# 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_satisfaction
Terminal window
# 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,phone
Terminal window
# Development API key
UNICRAFT_DEV_API_KEY=uc_dev_1234567890abcdef
# Development base URL
UNICRAFT_DEV_BASE_URL=https://api-dev.unicraft.com/v1
# Development OpenAI API key
OPENAI_DEV_API_KEY=sk-dev_1234567890abcdef
# Development cost limits (lower for testing)
UNICRAFT_DEV_DAILY_COST_LIMIT=10.00
UNICRAFT_DEV_MAX_COST_PER_REQUEST=0.001
# Development logging (more verbose)
UNICRAFT_DEV_LOG_LEVEL=debug
UNICRAFT_DEV_LOG_REQUESTS=true
UNICRAFT_DEV_LOG_RESPONSES=true
Terminal window
# Staging API key
UNICRAFT_STAGING_API_KEY=uc_staging_1234567890abcdef
# Staging base URL
UNICRAFT_STAGING_BASE_URL=https://api-staging.unicraft.com/v1
# Staging OpenAI API key
OPENAI_STAGING_API_KEY=sk-staging_1234567890abcdef
# Staging cost limits
UNICRAFT_STAGING_DAILY_COST_LIMIT=50.00
UNICRAFT_STAGING_MAX_COST_PER_REQUEST=0.005
# Staging monitoring
UNICRAFT_STAGING_METRICS_ENABLED=true
UNICRAFT_STAGING_ALERTS_ENABLED=true
Terminal window
# Production API key
UNICRAFT_PROD_API_KEY=uc_prod_1234567890abcdef
# Production base URL
UNICRAFT_PROD_BASE_URL=https://api.unicraft.com/v1
# Production OpenAI API key
OPENAI_PROD_API_KEY=sk-prod_1234567890abcdef
# Production cost limits
UNICRAFT_PROD_DAILY_COST_LIMIT=1000.00
UNICRAFT_PROD_MAX_COST_PER_REQUEST=0.05
# Production monitoring
UNICRAFT_PROD_METRICS_ENABLED=true
UNICRAFT_PROD_ALERTS_ENABLED=true
UNICRAFT_PROD_WEBHOOKS_ENABLED=true
# Production security
UNICRAFT_PROD_RATE_LIMITING_ENABLED=true
UNICRAFT_PROD_IP_WHITELISTING_ENABLED=true
UNICRAFT_PROD_ENCRYPTION_ENABLED=true
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:
- redis
Terminal window
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:latest
apiVersion: v1
kind: ConfigMap
metadata:
name: unicraft-config
data:
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"
apiVersion: v1
kind: Secret
metadata:
name: unicraft-secrets
type: Opaque
data:
UNICRAFT_API_KEY: dWNfMTIzNDU2Nzg5MGFiY2RlZg==
OPENAI_API_KEY: c2stMTIzNDU2Nzg5MGFiY2RlZg==
ANTHROPIC_API_KEY: c2stYW50LTEyMzQ1Njc4OTBhYmNkZWY=
GOOGLE_API_KEY: QUl6YVN5MTIzNDU2Nzg5MGFiY2RlZg==
apiVersion: apps/v1
kind: Deployment
metadata:
name: unicraft
spec:
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: 3000
#!/bin/bash
# Required variables
REQUIRED_VARS=(
"UNICRAFT_API_KEY"
)
# Optional variables with defaults
OPTIONAL_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 variables
for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var}" ]; then
echo "Error: Required environment variable $var is not set"
exit 1
fi
done
# Set default values for optional variables
for var in "${OPTIONAL_VARS[@]}"; do
name="${var%%=*}"
default="${var#*=}"
if [ -z "${!name}" ]; then
export "$name=$default"
echo "Set $name to default value: $default"
fi
done
echo "All environment variables validated successfully"
  • Never commit API keys to version control
  • Use environment-specific API keys
  • Rotate API keys regularly
  • Use secrets management systems
  • Use consistent naming conventions
  • Group related variables together
  • Document all environment variables
  • Use environment-specific configurations
  • Validate environment variables at startup
  • Provide meaningful error messages
  • Set appropriate default values
  • Test configuration in different environments
  • Monitor environment variable usage
  • Alert on missing required variables
  • Track configuration changes
  • Document environment setup
  1. Missing Required Variables

    • Check environment variable names
    • Verify variable values
    • Ensure proper export/import
  2. Invalid Variable Values

    • Validate variable formats
    • Check for typos
    • Verify data types
  3. Environment-Specific Issues

    • Check environment-specific variables
    • Verify environment detection
    • Test in target environment
  4. Docker/Kubernetes Issues

    • Check container environment
    • Verify secrets/configmaps
    • Test variable injection
  1. List All Variables

    Terminal window
    env | grep UNICRAFT
  2. Check Variable Values

    Terminal window
    echo $UNICRAFT_API_KEY
  3. Validate Configuration

    Terminal window
    ./validate-env.sh
  4. Test API Connection

    Terminal window
    curl -H "Authorization: Bearer $UNICRAFT_API_KEY" \
    https://api.unicraft.com/v1/health

For environment variable support:

After setting up environment variables:

  1. Validate Configuration: Run validation scripts
  2. Test Connection: Verify API connectivity
  3. Monitor Usage: Set up monitoring and alerts
  4. Document Setup: Document environment configuration
  5. Regular Reviews: Periodically review and update variables