Skip to content

Environment Variables

Complete reference for all environment variables used in TradAI services.


Overview

TradAI uses a hierarchical configuration system:

  1. Root .env: Shared variables used across all services
  2. Service .env: Service-specific variables (e.g., services/backend/.env)
  3. 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

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