# Slack API Tokens (Required) SLACK_BOT_TOKEN=xoxb-your-bot-token-here SLACK_APP_TOKEN=xapp-your-app-token-here # Slack App Credentials (from App Credentials page) SLACK_APP_ID=your-app-id-here SLACK_CLIENT_ID=your-client-id-here SLACK_CLIENT_SECRET=your-client-secret-here SLACK_SIGNING_SECRET=your-signing-secret-here SLACK_VERIFICATION_TOKEN=your-verification-token-here # Notion API (for exporting to Notion) NOTION_TOKEN=secret_your_notion_token NOTION_PARENT_PAGE_ID=your-parent-page-id # ============================================================================ # GOOGLE OAUTH (for login + per-user Gmail access) # ============================================================================ # OAuth 2.0 Web client credentials from Google Cloud Console GOOGLE_CLIENT_ID=your-google-oauth-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-google-oauth-client-secret # Base URL of your backend used in the OAuth redirect URI # For local development this will usually be http://localhost:8000 GOOGLE_OAUTH_REDIRECT_BASE=http://localhost:8000 # Base URL of your frontend app # For local development this will usually be http://localhost:5173 # For production, set to your deployed frontend URL (e.g., https://app.yourdomain.com) FRONTEND_BASE_URL=http://localhost:5173 # Strong random string for signing session cookies and OAuth state SESSION_SECRET=change-me-to-a-long-random-string # Cookie domain for cross-subdomain auth (IMPORTANT for production) # Set to ".yourdomain.com" (with leading dot) when frontend and backend share the same root domain # e.g., if frontend is app.dinoagent.com and backend is api.dinoagent.com, set COOKIE_DOMAIN=.dinoagent.com # Leave empty for local development or if using different root domains (not recommended) COOKIE_DOMAIN= # Additional CORS origins (comma-separated) # Use this to allow additional origins beyond FRONTEND_BASE_URL # e.g., CORS_ALLOWED_ORIGINS=https://app.yourdomain.com,https://yourdomain.com CORS_ALLOWED_ORIGINS= # ============================================================================ # DATABASE CONFIGURATION # ============================================================================ DATABASE_URL=postgresql://user:password@localhost:5432/workforce_agent # Data storage paths DATA_DIR=data FILES_DIR=data/files EXPORT_DIR=data/raw_exports PROJECT_REGISTRY_FILE=data/project_registry.json # Rate limiting (requests per minute) # These control Slack API rate limits per tier TIER_1_RATE_LIMIT=1 TIER_2_RATE_LIMIT=20 TIER_3_RATE_LIMIT=50 TIER_4_RATE_LIMIT=100 DEFAULT_RATE_LIMIT=50 SPECIAL_RATE_LIMIT=1 # Logging LOG_LEVEL=INFO LOG_FILE=logs/slack_agent.log # Real-time streaming SOCKET_MODE_ENABLED=true MAX_RECONNECT_ATTEMPTS=10 # Optional: Workspace info WORKSPACE_NAME=your-workspace WORKSPACE_ID=T12345678 # ============================================================================ # OPENAI API (Required for AI Agent) # ============================================================================ OPENAI_API_KEY=sk-your-openai-api-key # ============================================================================ # AI AGENT CONFIGURATION (Optional) # ============================================================================ # Model configuration EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 RERANKER_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2 LLM_MODEL=gpt-5-nano # Performance settings EMBEDDING_BATCH_SIZE=32 USE_GPU=false # API Server API_PORT=8000 API_HOST=0.0.0.0 # SLACK_MODE can be: read_only, standard, admin SLACK_MODE=standard # Comma-separated channel names or IDs (without #) that are read-only or blocked SLACK_READONLY_CHANNELS= SLACK_BLOCKED_CHANNELS= # Gmail safe-send and scope # Modes: draft (never send, only return drafts), confirm (default, requires confirmation), auto_limited GMAIL_SEND_MODE=confirm # Comma-separated domains allowed for sending (e.g. @company.com,@partner.com) GMAIL_ALLOWED_SEND_DOMAINS= # Comma-separated domains to scope read/search results (e.g. @company.com) GMAIL_ALLOWED_READ_DOMAINS= # Optional default Gmail label to scope advanced searches (e.g. Work/Projects) GMAIL_DEFAULT_LABEL=Datasaur # Notion safety mode: standard or read_only NOTION_MODE=standard