# ============================================================================= # ByteLyst Trading — Backend Environment Configuration # Copy this file to .env and fill in your values. # Production: pull secrets from Azure Key Vault (see docs/AZURE_INFRASTRUCTURE.md) # ============================================================================= # --- Server --- API_PORT=4018 CORS_ALLOWED_ORIGINS=http://localhost:5173 # --- Platform Auth (required for production) --- # Set PLATFORM_AUTH_ENABLED=true to require platform JWT (RS256) verification. # For local dev with legacy Supabase JWTs, set false and provide JWT_SECRET. PLATFORM_AUTH_ENABLED=false PLATFORM_API_URL=http://localhost:4003/api PLATFORM_JWT_ISSUER=bytelyst-platform PLATFORM_JWT_PUBLIC_KEY= PLATFORM_JWT_JWKS_URL= JWT_SECRET=change-me-for-local-dev # --- Azure Key Vault (optional — skipped if unset) --- # Set to trigger automatic secret resolution at startup via DefaultAzureCredential. # Pulls invttrdg-* secrets into the env vars below before the app starts. AZURE_KEYVAULT_URL= # --- Cosmos DB (primary data store) --- # Pulled from Key Vault in production (invttrdg-cosmos-*). COSMOS_ENDPOINT=https://cosmos-mywisprai.documents.azure.com:443/ COSMOS_KEY=your_cosmos_key COSMOS_DATABASE=invttrdg # --- Azure OpenAI (AI Foundry — preferred over direct OpenAI in production) --- # Pulled from Key Vault in production (invttrdg-azure-openai-*). # When set, LLM_PROVIDER is auto-detected as 'azure'. AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_KEY= AZURE_OPENAI_DEPLOYMENT=gpt-4o # --- Plug-and-Play Configuration --- PROVIDER=alpaca # Options: 'alpaca' or 'ccxt' # Asset Details SYMBOL=BTC/USD TIMEFRAME=1Min POLLING_INTERVAL=60000 # --- Alpaca Settings --- ALPACA_API_KEY=your_key ALPACA_API_SECRET=your_secret PAPER_TRADING=true ASSET_CLASS=crypto # 'crypto' or 'us_equity' # --- Research Data (Financial Modeling Prep) --- # Required for /api/research/* and /api/screener. Free tier: 250 req/day. # Register at https://financialmodelingprep.com/developer/docs; do not use the # shared "demo" key outside ad-hoc manual experiments. FMP_API_KEY=your_fmp_key # --- CCXT Settings --- EXCHANGE=binance CCXT_API_KEY=your_key CCXT_API_SECRET=your_secret # --- Notifications --- WEBHOOK_URL=https://discord.com/api/webhooks/your/url # --- AI Configuration --- AI_PROVIDER=perplexity PERPLEXITY_API_KEY=your_perplexity_key OPENAI_API_KEY=your_openai_key GEMINI_API_KEY=your_gemini_key AI_FALLBACK_LIST=perplexity,openai,gemini AI_MODEL=sonar AI_CONFIDENCE_THRESHOLD=70 AI_CACHE_HOURS=4 # --- Features --- LOW_STRESS_MODE=false ENABLE_TREND_ALERTS=true ENABLE_PULSE_ALERTS=true ENABLE_TRADING=true TOTAL_CAPITAL=1000 MAX_OPEN_TRADES=3 # Feature flags (opt-out: omit or true = enabled, false = disabled) ENABLE_BACKTEST=false BACKTEST_CUSTOMER_ENABLED=false TAB_MARKETPLACE_ENABLED=true TAB_MEMBERSHIP_ENABLED=true ENABLE_STRICT_CAPITAL_GUARD=true STRICT_CAPITAL_SLIPPAGE_BUFFER_PCT=1.0 STRICT_CAPITAL_FEE_BUFFER_PCT=0.15 STRICT_CAPITAL_MIN_RESERVE_USD=0 # --- Alpaca Omnibus Sub-tagging --- ENABLE_ALPACA_SUBTAG=false SUBTAG_OMNIBUS_ONLY=true ALPACA_SUBTAG_ENV=paper ALPACA_SUBTAG_MAX_LENGTH=48 ALPACA_SUBTAG_DISABLE_FOR_EXCHANGE= ALPACA_OMNIBUS_PROFILE_ALLOWLIST= # --- Reconciliation EXIT Backfill Safety --- ENABLE_RECON_EXIT_BACKFILL=true RECON_EXIT_BACKFILL_DRY_RUN=true RECON_EXIT_BACKFILL_REQUIRE_PAUSE=true RECON_EXIT_BACKFILL_DUST_ABS_QTY=0.001 RECON_EXIT_BACKFILL_DUST_REL_PCT=0.002 RECON_EXIT_BACKFILL_LOOKBACK_HOURS=72 RECON_EXIT_BACKFILL_REQUIRE_STRONG_ATTRIBUTION=true RECON_EXIT_BACKFILL_ALLOW_HEURISTIC_MATCH=false RECON_EXIT_BACKFILL_FILL_AFTER_TRADE_GRACE_MINUTES=5 # --- Reconciliation Parity Watchdog Auto-Resume --- ENABLE_RECON_WATCHDOG_AUTO_RESUME=true RECON_WATCHDOG_AUTO_RESUME_MIN_PAUSE_MS=900000 RECON_WATCHDOG_AUTO_RESUME_CLEAN_CYCLES=2 RECON_WATCHDOG_AUTO_RESUME_COOLDOWN_MS=1800000 # --- Supabase (legacy fallback — Cosmos DB is primary) --- # Required only if Cosmos DB is not configured or for legacy auth fallback. SUPABASE_URL=your_supabase_url SUPABASE_KEY=your_supabase_key # --- Product Identity --- # Auto-set from Key Vault (invttrdg-product-id) in production; default is fine for local dev. PRODUCT_ID=invttrdg