APP_NAME=MediaRouter APP_VERSION=1.0.0 APP_ENVIRONMENT=development HOST=0.0.0.0 PORT=7860 CORS_ALLOWED_ORIGINS=http://localhost:3000 TEMP_DIR=./temp OUTPUT_DIR=./outputs TEMPLATE_DIR=./app/templates/categories MAX_UPLOAD_SIZE=1073741824 WHISPER_MODEL=small CLEANUP_MINUTES=60 CLEANUP_INTERVAL_SECONDS=60 MEDIA_ASSET_RETENTION_HOURS=24 MAX_WORKERS=2 LOG_LEVEL=INFO MAX_DURATION_SECONDS=21600 MAX_RESOLUTION_PIXELS=33177600 DOWNLOAD_TIMEOUT_SECONDS=300 ALLOW_PRIVATE_URLS=false BASE_URL= MEDIA_SIGNING_SECRET= MEDIA_SIGNED_URL_TTL_SECONDS=3600 FFMPEG_BINARY=ffmpeg FFPROBE_BINARY=ffprobe AUTH_ENABLED=true DATABASE_URL=sqlite+aiosqlite:///./data/mediarouter.db SECURITY_AUTO_MIGRATE=false SECURITY_DATABASE_ROLE=mediarouter_security_service SECURITY_ENFORCE_RLS=true AUTH_ROLE_SCOPES={} AUTH_BOOTSTRAP_KEY_HASH= AUTH_BOOTSTRAP_KEY_PREFIX= AUTH_BOOTSTRAP_KEY_NAME=Bootstrap Administrator AUTH_BOOTSTRAP_ENVIRONMENT=live AUTH_LAST_USED_UPDATE_SECONDS=60 AUTH_DEFAULT_REQUESTS_PER_MINUTE=100 AUTH_DEFAULT_CONCURRENT_JOBS=10 AUTH_DEFAULT_UPLOADS_PER_HOUR=20 AUTH_DEFAULT_PROCESSING_BYTES_PER_DAY=107374182400 AUTH_TRUST_PROXY_HEADERS=true MCP_STDIO_API_KEY= # Optional remote speaker-diarization backend. The backend receives the first # Whisper input as an authenticated raw media body and returns: # {"spans":[{"speaker":"SPEAKER_00","start":0.0,"end":1.2}, ...]} # Production deployments require an HTTPS endpoint and backend authentication. DIARIZATION_URL= DIARIZATION_API_KEY= DIARIZATION_REQUIRE_AUTH=true DIARIZATION_CONNECT_TIMEOUT_SECONDS=10 DIARIZATION_TIMEOUT_SECONDS=300 DIARIZATION_MAX_INPUT_BYTES=1073741824 DIARIZATION_MAX_RESPONSE_BYTES=1048576 DIARIZATION_MAX_SPANS=10000 SOCIAL_ENABLED=true SOCIAL_DATABASE_URL= SOCIAL_TENANT_DATABASE_ROLE=mediarouter_tenant SOCIAL_WORKER_DATABASE_URL= SOCIAL_WORKER_DATABASE_ROLE=mediarouter_social_worker SOCIAL_ENFORCE_RLS=true SOCIAL_AUTO_MIGRATE=false SOCIAL_WORKER_ENABLED=true SOCIAL_SCHEDULER_INTERVAL_SECONDS=30 SOCIAL_JOB_STALE_AFTER_SECONDS=900 SOCIAL_PUBLISH_RETRY_LIMIT=5 SOCIAL_OAUTH_REQUESTS_PER_HOUR=30 SOCIAL_PUBLISH_REQUESTS_PER_MINUTE=30 SOCIAL_SCHEDULE_REQUESTS_PER_MINUTE=60 SOCIAL_ANALYTICS_REQUESTS_PER_MINUTE=120 SOCIAL_OAUTH_ENCRYPTION_KEY= SUPABASE_URL= SUPABASE_SERVICE_ROLE_KEY= SUPABASE_VAULT_ENABLED=false SOCIAL_OAUTH_REDIRECT_BASE_URL= GENERATION_ENABLED=true GENERATION_JOB_RETRY_LIMIT=3 AI_WORKER_CONNECT_TIMEOUT_SECONDS=10 AI_WORKER_REQUEST_TIMEOUT_SECONDS=60 AI_WORKER_READ_TIMEOUT_SECONDS=300 AI_WORKER_MAX_RETRIES=3 AI_WORKER_RETRY_BACKOFF_SECONDS=0.5 WAN_SPACE_URL= WAN_SPACE_TOKEN= FLUX_SPACE_URL= FLUX_SPACE_TOKEN= GENERATION_WORKER_ENABLED=true GENERATION_WORKER_INTERVAL_SECONDS=5 GENERATION_WORKER_POLL_BACKOFF_SECONDS=2 GENERATION_WORKER_BATCH_SIZE=8 GENERATION_JOB_STALE_AFTER_SECONDS=900 EDITOR_STATE_MAX_BYTES=1048576 RENDER_WORKER_ENABLED=true RENDER_WORKER_INTERVAL_SECONDS=2 RENDER_JOB_STALE_AFTER_SECONDS=900 RENDER_JOB_TIMEOUT_SECONDS=7200 RENDER_JOB_RETRY_LIMIT=2 RENDER_MAX_ACTIVE_JOBS_PER_PROJECT=1 RENDER_MAX_TRACKS=32 RENDER_MAX_CLIPS=500 RENDER_MAX_DURATION_SECONDS=3600 RENDER_MAX_INPUT_BYTES=4294967296 GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= YOUTUBE_UPLOAD_CHUNK_BYTES=8388608 YOUTUBE_MAX_CONCURRENT_UPLOADS=2 YOUTUBE_REQUEST_TIMEOUT_SECONDS=60 YOUTUBE_PROCESSING_POLL_SECONDS=30 META_CLIENT_ID= META_CLIENT_SECRET= META_APP_ID= META_APP_SECRET= META_GRAPH_API_VERSION=v25.0 TIKTOK_CLIENT_KEY= TIKTOK_CLIENT_SECRET= TIKTOK_REDIRECT_URI= TIKTOK_DIRECT_POST_ENABLED=false TIKTOK_UPLOAD_CHUNK_BYTES=10000000 TIKTOK_REQUEST_TIMEOUT_SECONDS=60 TIKTOK_PROCESSING_POLL_SECONDS=30 RUN_TIKTOK_INTEGRATION_TESTS=false LINKEDIN_CLIENT_ID= LINKEDIN_CLIENT_SECRET= LINKEDIN_REDIRECT_URI= LINKEDIN_PUBLISHING_ENABLED=false LINKEDIN_REQUEST_TIMEOUT_SECONDS=60 LINKEDIN_MEDIA_PROCESSING_POLL_SECONDS=5 LINKEDIN_MEDIA_PROCESSING_TIMEOUT_SECONDS=600 RUN_LINKEDIN_INTEGRATION_TESTS=false X_CLIENT_ID= X_CLIENT_SECRET= X_REDIRECT_URI= X_PUBLISHING_ENABLED=false X_UPLOAD_CHUNK_BYTES=5242880 X_REQUEST_TIMEOUT_SECONDS=60 X_MEDIA_PROCESSING_POLL_SECONDS=5 X_MEDIA_PROCESSING_TIMEOUT_SECONDS=300 RUN_X_INTEGRATION_TESTS=false TELEGRAM_BOT_TOKEN= WHATSAPP_CLIENT_ID= WHATSAPP_CLIENT_SECRET=