Environment Variables Complete reference for all environment variables used in TradAI services.
Overview TradAI uses a hierarchical configuration system:
Root .env : Shared variables used across all services Service .env : Service-specific variables (e.g., services/backend/.env) Environment variables : Runtime overrides Priority order: Environment variables > Service .env > Root .env
Security
Never commit .env files to git. Use .env.example files as templates.
Shared Configuration These variables are defined in the root .env file and shared across services.
AWS Configuration Variable Required Default Description AWS_REGION Yes us-east-1 AWS region for all services AWS_ACCESS_KEY_ID Dev only - AWS access key (use IAM roles in production) AWS_SECRET_ACCESS_KEY Dev only - AWS secret key (use IAM roles in production)
Docker Configuration Variable Required Default Description COMPOSE_PROJECT_NAME No tradai Docker Compose project name TAG No latest Docker image tag
MLflow Configuration Variable Required Default Description MLFLOW_TRACKING_URI Yes http://mlflow:5000 MLflow tracking server URL MLFLOW_TRACKING_USERNAME No - MLflow basic auth username MLFLOW_TRACKING_PASSWORD No - MLflow basic auth password
CLI Configuration Variable Required Default Description BACKEND_URL No http://localhost:8000 Backend service URL for CLI TRADAI_UI_URL No http://localhost:3000 TradAI UI URL for deep links
S3 Configuration Loading Variable Required Default Description S3_CONFIG No - S3 URI for remote config (e.g., s3://bucket/config.yaml)
Backend Service Environment prefix: BACKEND_
Server Settings Variable Required Default Description BACKEND_HOST No 0.0.0.0 Server bind host BACKEND_PORT No 8000 Server bind port BACKEND_DEBUG No false Enable debug mode BACKEND_LOG_LEVEL No INFO Logging level (DEBUG, INFO, WARNING, ERROR) BACKEND_CORS_ORIGINS No [] CORS origins (JSON array or comma-separated)
External Services Variable Required Default Description BACKEND_DATA_COLLECTION_URL No http://localhost:8002 Data collection service URL BACKEND_STRATEGY_SERVICE_URL No http://localhost:8003 Strategy service URL BACKEND_MLFLOW_TRACKING_URI No http://localhost:5001 MLflow tracking URI
AWS Resources Variable Required Default Description BACKEND_AWS_REGION No us-east-1 AWS region BACKEND_BACKTEST_QUEUE_URL No - SQS queue URL for backtest jobs BACKEND_S3_CONFIG_BUCKET No - S3 bucket for configurations BACKEND_S3_RESULTS_BUCKET No - S3 bucket for backtest results BACKEND_DYNAMODB_TABLE_NAME No - DynamoDB table for workflow state
Executor Configuration Variable Required Default Description BACKEND_EXECUTOR_MODE No sqs Executor mode: sqs, ecs, local, stepfunctions BACKEND_LOCAL_EXECUTION_MODE No docker Local mode: subprocess or docker BACKEND_USER_DATA_DIR No user_data Freqtrade user_data directory path BACKEND_USER_DATA_HOST_PATH No - Host path for Docker-in-Docker scenarios
ECS Executor Variable Required Default Description BACKEND_ECS_CLUSTER ECS mode - ECS cluster name BACKEND_ECS_TASK_DEFINITION_PREFIX No strategy- Task definition prefix BACKEND_ECS_SUBNETS ECS mode - VPC subnet IDs (comma-separated) BACKEND_ECS_SECURITY_GROUPS ECS mode - Security group IDs (comma-separated)
Step Functions Executor Variable Required Default Description BACKEND_STEPFUNCTIONS_STATE_MACHINE_ARN SF mode - State machine ARN
Cognito Authentication Variable Required Default Description BACKEND_COGNITO_USER_POOL_ID No - Cognito User Pool ID (None = auth disabled) BACKEND_COGNITO_CLIENT_ID No - Cognito App Client ID BACKEND_COGNITO_REGION No us-east-1 Cognito AWS region
Strategy Service Environment prefix: STRATEGY_SERVICE_
Server Settings Variable Required Default Description STRATEGY_SERVICE_HOST No 0.0.0.0 Server bind host STRATEGY_SERVICE_PORT No 8003 Server bind port STRATEGY_SERVICE_DEBUG No false Enable debug mode STRATEGY_SERVICE_LOG_LEVEL No INFO Logging level
S3 Configuration Variable Required Default Description STRATEGY_SERVICE_S3_CONFIG_BUCKET Yes - S3 bucket for strategy configs STRATEGY_SERVICE_RESULTS_BUCKET No - S3 bucket for results STRATEGY_SERVICE_MODELS_BUCKET No - S3 bucket for ML models
MLflow Configuration Variable Required Default Description STRATEGY_SERVICE_MLFLOW_TRACKING_URI No https://mlflow.tradai.smartml.me MLflow tracking URI STRATEGY_SERVICE_MLFLOW_USERNAME No - MLflow basic auth username STRATEGY_SERVICE_MLFLOW_PASSWORD No - MLflow basic auth password STRATEGY_SERVICE_MLFLOW_VERIFY_SSL No true Verify SSL certificates
Data Configuration Variable Required Default Description STRATEGY_SERVICE_ARCTIC_S3_BUCKET No - ArcticDB S3 bucket (empty = in-memory) STRATEGY_SERVICE_ARCTIC_LIBRARY No futures ArcticDB library name STRATEGY_SERVICE_EXCHANGE_NAME No binance CCXT exchange name STRATEGY_SERVICE_EXCHANGE_TRADING_MODE No futures Trading mode: spot, margin, futures STRATEGY_SERVICE_EXCHANGE_API_KEY No - Exchange API key STRATEGY_SERVICE_EXCHANGE_API_SECRET No - Exchange API secret STRATEGY_SERVICE_EXCHANGE_SECRET_NAME No - AWS Secrets Manager secret name
Backtest Configuration Variable Required Default Description STRATEGY_SERVICE_STRATEGY_PATH No - Path to strategy files STRATEGY_SERVICE_USER_DATA_DIR No user_data Freqtrade user data directory STRATEGY_SERVICE_HYPEROPT_TRIAL_TIMEOUT_SECONDS No 7200 Hyperopt trial timeout (2h default)
A/B Testing Variable Required Default Description STRATEGY_SERVICE_AB_TEST_TABLE_NAME No - DynamoDB table for A/B test state STRATEGY_SERVICE_SNS_REGISTRATION_TOPIC_ARN No - SNS topic for registration events
Data Collection Service Environment prefix: DATA_COLLECTION_
Server Settings Variable Required Default Description DATA_COLLECTION_HOST No 0.0.0.0 Server bind host DATA_COLLECTION_PORT No 8002 Server bind port DATA_COLLECTION_DEBUG No false Enable debug mode DATA_COLLECTION_LOG_LEVEL No INFO Logging level
ArcticDB Configuration Variable Required Default Description DATA_COLLECTION_ARCTIC_S3_BUCKET Yes - S3 bucket for ArcticDB DATA_COLLECTION_ARCTIC_LIBRARY No futures ArcticDB library name DATA_COLLECTION_ARCTIC_S3_ENDPOINT No s3.us-east-1.amazonaws.com S3 endpoint DATA_COLLECTION_ARCTIC_USE_SSL No true Use SSL (false for LocalStack) DATA_COLLECTION_ARCTIC_ACCESS_KEY No - S3 access key (for LocalStack/MinIO) DATA_COLLECTION_ARCTIC_SECRET_KEY No - S3 secret key (for LocalStack/MinIO) DATA_COLLECTION_ARCTIC_REGION No us-east-1 AWS region DATA_COLLECTION_ARCTIC_USE_VIRTUAL_ADDRESSING No true Virtual-hosted URLs (false for LocalStack)
Exchange Configuration Variable Required Default Description DATA_COLLECTION_EXCHANGES Yes - Exchange configs (JSON dict)
Exchange JSON format:
{
"binance_futures" : {
"name" : "binance" ,
"market_type" : "futures" ,
"api_key" : "..." ,
"api_secret" : "..."
}
}
Streaming Configuration Variable Required Default Description DATA_COLLECTION_STREAMING_BUFFER_SIZE No 100 Candles to buffer before flush DATA_COLLECTION_STREAMING_FLUSH_INTERVAL No 60 Max seconds between flushes DATA_COLLECTION_STREAMING_MAX_RECONNECTS No 5 Max WebSocket reconnection attempts
MLflow Service Server Settings Variable Required Default Description MLFLOW_HOST No 0.0.0.0 Server bind host MLFLOW_PORT No 5000 Server bind port MLFLOW_WORKERS No 2 Number of Gunicorn workers
Storage Configuration Variable Required Default Description MLFLOW_BACKEND_STORE_URI Yes - PostgreSQL connection string MLFLOW_DEFAULT_ARTIFACT_ROOT Yes - Artifact storage path (S3 URI or local path)
Backend Store URI examples:
# Development (Docker Compose PostgreSQL)
MLFLOW_BACKEND_STORE_URI = postgresql://tradai:tradai_dev@postgres:5432/mlflow
# Production (RDS)
MLFLOW_BACKEND_STORE_URI = postgresql://mlflowuser:${ PASSWORD } @rds-endpoint:5432/mlflow
Artifact Root examples:
# Development (local volume)
MLFLOW_DEFAULT_ARTIFACT_ROOT = /mlflow/artifacts
# Production (S3)
MLFLOW_DEFAULT_ARTIFACT_ROOT = s3://tradai-mlflow-prod/artifacts
Lambda Functions Lambda handlers use environment variables without prefixes.
Common Lambda Settings Variable Required Default Description ENVIRONMENT No dev Deployment environment PROJECT_NAME No tradai Project name for namespacing LOG_LEVEL No INFO Python logging level SNS_ALERTS_TOPIC_ARN No - SNS topic for alerts CLOUDWATCH_NAMESPACE No - CloudWatch metrics namespace
Health Check Lambda Variable Required Default Description DYNAMODB_TABLE_NAME No - DynamoDB table for state SERVICE_DISCOVERY_NAMESPACE No tradai.local Cloud Map namespace HEALTH_CHECK_TIMEOUT No 10 HTTP timeout in seconds CONSECUTIVE_FAILURES_THRESHOLD No 2 Failures before alert
Drift Monitor Lambda Variable Required Default Description DRIFT_STATE_TABLE No - DynamoDB table for drift state MLFLOW_TRACKING_URI No - MLflow server URL MLFLOW_TRACKING_USERNAME No - MLflow username MLFLOW_TRACKING_PASSWORD No - MLflow password PSI_MODERATE_THRESHOLD No 0.10 Moderate drift threshold PSI_SIGNIFICANT_THRESHOLD No 0.25 Significant drift threshold MIN_SAMPLES No 10 Minimum samples for analysis REFERENCE_PERIOD_DAYS No 30 Reference period in days CURRENT_PERIOD_DAYS No 7 Current period in days
Retraining Scheduler Lambda Variable Required Default Description ECS_CLUSTER Yes - ECS cluster for retraining ECS_TASK_DEFINITION_PREFIX No strategy- Task definition prefix ECS_SUBNETS Yes - Subnet IDs (comma-separated) ECS_SECURITY_GROUPS Yes - Security group IDs (comma-separated) ECS_CONTAINER_NAME No strategy Container name USE_SPOT No false Use Fargate Spot RETRAINING_INTERVAL_DAYS No 7 Days between retraining MIN_HOURS_BETWEEN_RETRAINING No 24 Minimum hours between runs DRIFT_STATE_TABLE No tradai-drift-state Drift state table RETRAINING_STATE_TABLE No tradai-retraining-state Retraining state table
Trading Heartbeat Lambda Variable Required Default Description HEARTBEAT_TIMEOUT_SECONDS No 300 Max age for valid heartbeat HEARTBEAT_TABLE_NAME No - DynamoDB table for heartbeats
Model Management Lambda Variable Required Default Description MLFLOW_TRACKING_URI Yes - MLflow server URL MLFLOW_TRACKING_USERNAME No - MLflow username MLFLOW_TRACKING_PASSWORD No - MLflow password MODEL_REGISTRY_NAME No tradai-models MLflow model registry name
Local Development Quick Start # Copy example files
cp .env.example .env
cp services/backend/.env.example services/backend/.env
cp services/data-collection/.env.example services/data-collection/.env
# Edit with your values
nano .env
Docker Compose Development # Required for local development
COMPOSE_PROJECT_NAME = tradai
TAG = latest
MLFLOW_TRACKING_URI = http://mlflow:5000 # Internal Docker network
# Backend connects to other services via Docker network
BACKEND_DATA_COLLECTION_URL = http://data-collection:8002
BACKEND_STRATEGY_SERVICE_URL = http://strategy-service:8003
LocalStack (Local AWS) For testing AWS services locally:
# ArcticDB with LocalStack
DATA_COLLECTION_ARCTIC_S3_ENDPOINT = localstack:4566
DATA_COLLECTION_ARCTIC_USE_SSL = false
DATA_COLLECTION_ARCTIC_USE_VIRTUAL_ADDRESSING = false
DATA_COLLECTION_ARCTIC_ACCESS_KEY = test
DATA_COLLECTION_ARCTIC_SECRET_KEY = test
Production Deployment IAM Roles (Recommended) In production, use IAM roles instead of access keys:
# Do NOT set these in production
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# IAM role attached to ECS task or EC2 instance handles authentication
AWS_REGION = us-east-1
Secrets Manager Use AWS Secrets Manager for sensitive values:
# Reference secrets by name, not value
STRATEGY_SERVICE_EXCHANGE_SECRET_NAME = tradai/exchange-credentials
Environment-Specific Configuration # Load config from S3 for environment-specific settings
S3_CONFIG = s3://tradai-config/production/config.yaml
See Also