# ============================================================================ # FlowSentinel Environment Variables # ============================================================================ # # SECURITY WARNING: Never commit the actual .env file to git! # This is a template file showing what variables you need to configure. # Copy this file to .env and replace the placeholder values with real credentials. # # Setup: cp .env.example .env # # ============================================================================ # ---------------------------------------------------------------------------- # SLACK INTEGRATION (Optional - Required for real notifications) # ---------------------------------------------------------------------------- # Get your Slack webhook URL at: https://api.slack.com/messaging/webhooks # Steps: # 1. Go to https://api.slack.com/apps # 2. Create a new app or select existing # 3. Enable "Incoming Webhooks" # 4. Add webhook to your desired channel # 5. Copy the webhook URL below # # Status: OPTIONAL (falls back to console logging if not set) SLACK_WEBHOOK_URL=h # ---------------------------------------------------------------------------- # IBM WATSONX.AI (Required for production AI analysis) # ---------------------------------------------------------------------------- # Get credentials from: https://cloud.ibm.com/ # Steps: # 1. Log in to IBM Cloud # 2. Go to watsonx.ai service # 3. Create API key from IAM (Identity and Access Management) # 4. Note your project ID from watsonx.ai project settings # # Status: OPTIONAL for demo (currently simulated), REQUIRED for production WATSONX_API_KEY=your_watsonx_api_key_here WATSONX_PROJECT_ID=your_project_id_here # watsonx.ai API endpoint (default: US-South region) # Other regions: # - EU-DE: https://eu-de.ml.cloud.ibm.com # - EU-GB: https://eu-gb.ml.cloud.ibm.com WATSONX_URL=https://us-south.ml.cloud.ibm.com # Model configuration for watsonx.ai # Recommended models: ibm/granite-13b-chat-v2, meta-llama/llama-2-70b-chat WATSONX_MODEL_ID=ibm/granite-13b-chat-v2 # ---------------------------------------------------------------------------- # IBM WATSONX ORCHESTRATE (Required for production automation) # ---------------------------------------------------------------------------- # Get credentials from: https://cloud.ibm.com/ # Steps: # 1. Log in to IBM Cloud # 2. Go to watsonx Orchestrate service # 3. Create API key and note instance ID # 4. Copy the service URL # # Status: OPTIONAL for demo (currently simulated), REQUIRED for production ORCHESTRATE_API_KEY=your_orchestrate_api_key_here ORCHESTRATE_INSTANCE_ID=your_instance_id_here ORCHESTRATE_URL=https://your-instance.watsonx-orchestrate.ibm.com # Orchestrate skills configuration (comma-separated skill IDs) ORCHESTRATE_NOTIFY_SKILL_ID=notify_user_skill_id ORCHESTRATE_CREATE_TASK_SKILL_ID=create_task_skill_id ORCHESTRATE_REPORT_SKILL_ID=generate_report_skill_id # ---------------------------------------------------------------------------- # GITHUB INTEGRATION (Optional - For enhanced PR/issue tracking) # ---------------------------------------------------------------------------- # Get a personal access token at: https://github.com/settings/tokens # Required scopes: repo, read:org, read:user # Steps: # 1. Go to GitHub Settings > Developer settings > Personal access tokens # 2. Generate new token (classic) # 3. Select scopes: repo (full control of private repositories) # 4. Copy the token below # # Status: OPTIONAL (not currently used, reserved for future features) GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx GITHUB_REPO_OWNER=your-github-username-or-org GITHUB_REPO_NAME=your-repository-name # ---------------------------------------------------------------------------- # JIRA INTEGRATION (Optional - For enhanced task tracking) # ---------------------------------------------------------------------------- # Get credentials from your Jira instance # Steps: # 1. Go to Jira Settings > System > API tokens # 2. Create API token # 3. Note your Jira site URL and email # # Status: OPTIONAL (not currently used, reserved for future features) JIRA_URL=https://your-domain.atlassian.net JIRA_EMAIL=your-email@example.com JIRA_API_TOKEN=your_jira_api_token_here JIRA_PROJECT_KEY=PROJ # ---------------------------------------------------------------------------- # GOOGLE CALENDAR INTEGRATION (Optional - For meeting tracking) # ---------------------------------------------------------------------------- # Get credentials from: https://console.cloud.google.com/ # Steps: # 1. Create a project in Google Cloud Console # 2. Enable Google Calendar API # 3. Create OAuth 2.0 credentials # 4. Download credentials JSON # # Status: OPTIONAL (not currently used, reserved for future features) GOOGLE_CALENDAR_CREDENTIALS_PATH=/path/to/credentials.json GOOGLE_CALENDAR_TOKEN_PATH=/path/to/token.json # ---------------------------------------------------------------------------- # APPLICATION SETTINGS # ---------------------------------------------------------------------------- # Server configuration APP_HOST=0.0.0.0 APP_PORT=8000 APP_DEBUG=false # Database configuration (for future PostgreSQL integration) DATABASE_URL=postgresql://user:password@localhost:5432/flowsentinel # Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) LOG_LEVEL=INFO # Analysis intervals (in seconds) AGENT_RUN_INTERVAL=300 # Run agent every 5 minutes EVENT_RETENTION_DAYS=30 # Keep events for 30 days # ---------------------------------------------------------------------------- # SECURITY SETTINGS # ---------------------------------------------------------------------------- # Secret key for JWT tokens (generate with: openssl rand -hex 32) SECRET_KEY=your_secret_key_here_min_32_characters_long # CORS allowed origins (comma-separated, or * for all) CORS_ORIGINS=http://localhost:3000,http://localhost:8080 # API rate limiting RATE_LIMIT_PER_MINUTE=60 # ---------------------------------------------------------------------------- # NOTES # ---------------------------------------------------------------------------- # Required for MVP/Demo: # - None! System works with simulation mode # # Required for Production: # - SLACK_WEBHOOK_URL (for notifications) # - WATSONX_API_KEY + WATSONX_PROJECT_ID (for AI analysis) # - ORCHESTRATE_API_KEY + ORCHESTRATE_INSTANCE_ID (for automation) # # Optional enhancements: # - GITHUB_TOKEN (for real GitHub integration) # - JIRA credentials (for real Jira integration) # - GOOGLE_CALENDAR credentials (for real calendar integration) # # ============================================================================ # ---------------------------------------------------------------------------- # DATABASE CONFIGURATION # ---------------------------------------------------------------------------- # Database URL for SQLAlchemy # SQLite (Development): sqlite:///./flowsentinel.db # PostgreSQL (Production): postgresql://user:password@localhost:5432/flowsentinel # MySQL: mysql://user:password@localhost:3306/flowsentinel DATABASE_URL=sqlite:///./flowsentinel.db # Environment (development, staging, production) ENVIRONMENT=development # Enable SQL query logging (true/false) DEBUG=false # ---------------------------------------------------------------------------- # REDIS CONFIGURATION (Phase 9: Scalability) # ---------------------------------------------------------------------------- # Redis is used for high-performance caching and rate limiting # If not set, the system falls back to in-memory caching # # Local: redis://localhost:6379/0 # Render Redis: redis://red-xxxxx:6379 # Redis Cloud: redis://user:password@host:port REDIS_URL= # ---------------------------------------------------------------------------- # WORKER POOL (Phase 9: Scalability) # ---------------------------------------------------------------------------- # Number of async workers for background tasks NUM_WORKERS=4 # Maximum queue size for background tasks WORKER_QUEUE_SIZE=1000 # ---------------------------------------------------------------------------- # SECURITY (Phase 8: Authentication) # ---------------------------------------------------------------------------- # JWT token settings JWT_ALGORITHM=HS256 JWT_EXPIRATION_HOURS=24 # Rate limiting (requests per minute per user) RATE_LIMIT_REQUESTS=100 RATE_LIMIT_WINDOW_SECONDS=60 # ---------------------------------------------------------------------------- # MONITORING (Phase 10: Reliability) # ---------------------------------------------------------------------------- # Enable Prometheus metrics METRICS_ENABLED=true # Health check interval in seconds HEALTH_CHECK_INTERVAL=30