# Discord DISCORD_TOKEN= DATABASE_PATH=discord.sqlite # SQLite file path (use /data/discord.sqlite in Docker) ALLOWED_CHANNEL_IDS= # Comma-separated Discord channel IDs DISCORD_ROLE_ID= # Role ID that triggers the bot (optional, for @role mentions) DISCORD_CATEGORY_ID= # Optional category ID that is allowed DISCORD_REQUIRED_ROLE_ID= # Optional role required to talk to bot DISCORD_COMMAND_GUILD_ID= # Optional guild ID for instant slash command updates (dev only) # Daytona DAYTONA_API_KEY= DAYTONA_SNAPSHOT= # Optional; prebuilt snapshot name for faster sandbox creation # OpenCode (injected into sandboxes) OPENCODE_ZEN_API_KEY= GITHUB_TOKEN= # Optional; enables authenticated gh CLI inside sandbox # Observability LOG_LEVEL=info LOG_PRETTY=false HEALTH_HOST=0.0.0.0 HEALTH_PORT=8787 TURN_ROUTING_MODE=ai # off | heuristic | ai TURN_ROUTING_MODEL=claude-haiku-4-5 # Bot behavior SANDBOX_REUSE_POLICY=resume_preferred SANDBOX_TIMEOUT_MINUTES=30 PAUSED_TTL_MINUTES=180 RESUME_HEALTH_TIMEOUT_MS=120000 SANDBOX_CREATION_TIMEOUT=180 OPENCODE_MODEL=opencode/claude-sonnet-4-5