# Runtime NODE_ENV=development MONGODB_URI=mongodb://127.0.0.1:27017/opensquawk NUXT_PUBLIC_RADIO_BACKEND_URL=http://127.0.0.1:8000 # Authentication # Open mode is the self-hosted default: one persistent local identity, no login. AUTH_MODE=open # Generate strong, unique values, for example with `openssl rand -hex 32`. JWT_SECRET=CHANGE_ME APP_JWT_SECRET=CHANGE_ME # Only needed when AUTH_MODE=sso. NUXT_PUBLIC_AUTH_ISSUER= SERVICE_SECRET=CHANGE_ME # OpenAI-compatible services OPENAI_API_KEY= OPENAI_PROJECT= OPENAI_BASE_URL= OPENAIP_API_KEY= LLM_MODEL=gpt-5-nano ROUTER_LLM_MODEL=gpt-5-mini TTS_MODEL=tts-1 VOICE_ID=alloy # Optional telemetry mirror. Empty means nothing leaves this instance. TELEMETRY_URL= # Bug reports stay in MongoDB unless both a recipient and SMTP are configured. BUG_REPORT_NOTIFY_EMAIL= NOTIFY_EMAIL_FROM="OpenSquawk " NOTIFY_SMTP_HOST= NOTIFY_SMTP_PORT=587 NOTIFY_SMTP_SECURE=false NOTIFY_SMTP_USER= NOTIFY_SMTP_PASS= # Speech and audio NUXT_PUBLIC_PTT_MIN_WORDS=2 ATC_OUT_DIR=./storage/atc FLIGHTLAB_TTS_CACHE_DIR=./.cache/flightlab-tts USE_SPEACHES=false SPEACHES_BASE_URL= SPEECH_MODEL_ID=speaches-ai/piper-en_US-ryan-low USE_PIPER=false PIPER_PORT=5001 # Optional cockpit dome-light webhook. Empty disables forwarding. DOME_LIGHT_WEBHOOK_URL=