# Copy to .env and fill in your key: cp .env.example .env BOBSHELL_API_KEY="bob_prod_..." BOB_MODE=unrestricted-dev # Bob runs from the container root so it governs the whole container. BOB_WORKDIR=/ # --- Slack bot (optional; only needed for the slack / serve-all services) --- # Create a Slack App with Socket Mode enabled (see README) and paste its tokens. SLACK_BOT_TOKEN="xoxb-..." SLACK_APP_TOKEN="xapp-..." # Optional: restrict the bot to specific channel IDs (comma-separated). Empty = all. SLACK_ALLOWED_CHANNELS= # Optional: default channel ID where scheduled runs post their result when the # schedule itself doesn't specify one (see "Schedule recurring tasks" in README). SLACK_DEFAULT_CHANNEL= # Optional attachment storage and per-file limit (defaults: path below, 25 MiB). # SLACK_UPLOAD_DIR=/workspace/slack_uploads # SLACK_MAX_FILE_BYTES=26214400 # SLACK_UPLOAD_TTL_SECONDS=604800 # retain attachments for 7 days # SLACK_UPLOAD_MAX_BYTES=536870912 # 512 MiB total quota # SLACK_UPLOAD_CLEANUP_SECONDS=3600 # cleanup every hour # SLACK_EVENT_TTL_SECONDS=3600 # ignore duplicate Slack events for 1 hour # SLACK_MAX_CONCURRENT=2 # simultaneous Bob requests from Slack # HARNESS_URL is set by docker-compose (http://localhost:8080); only override for # a bot-only container pointing at a remote API. # --- Scheduler (cron) ------------------------------------------------------- # Recurring runs are registered via POST /schedules and fired by the container's # cron daemon. These have sane defaults; only set them to relocate the files. # BOB_SCHEDULES_FILE=/workspace/schedules.json # persisted registry (survives restarts) # BOB_CRON_LOG=/workspace/cron.log # where each cron tick logs its curl