# Copy this file to .env and fill in real values. Never commit .env. # --- Application --- APP_NAME=agent-operator APP_ENVIRONMENT=development APP_DEBUG=true APP_API_PREFIX=/api/v1 # --- Database (PostgreSQL) --- DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/agent_operator DATABASE_POOL_SIZE=5 DATABASE_MAX_OVERFLOW=10 DATABASE_ECHO=false # --- LLM providers --- # Routed through LiteLLM (via langchain-litellm); none required to boot the # app. Set only the ones you actually use -- LiteLLM reads these directly # from the environment based on each model string's provider prefix. OPENAI_API_KEY= ANTHROPIC_API_KEY= GEMINI_API_KEY= OPENROUTER_API_KEY= TAVILY_API_KEY= # Optional: point every request at a self-hosted LiteLLM proxy ("omnirouter") # instead of calling vendor APIs directly -- one gateway for keys, budgets, # and cross-provider fallback. Leave blank to call providers directly. LITELLM_API_BASE= LITELLM_API_KEY= # --- Model routing --- # Values are LiteLLM model strings: "gpt-4o-mini" (OpenAI), # "claude-3-5-sonnet-20241022" (Anthropic), "gemini/gemini-1.5-pro" (Google), # or "openrouter/anthropic/claude-3.5-sonnet" (OpenRouter) all work. MODEL_ROUTER_DEFAULT_PROVIDER=litellm MODEL_ROUTER_FAST_MODEL=gpt-4o-mini MODEL_ROUTER_TOOL_CALLING_MODEL=gpt-4o MODEL_ROUTER_REASONING_MODEL=gpt-4o MODEL_ROUTER_STRONGEST_MODEL=gpt-4o # --- Browser (Playwright) --- # The browser agent works across ANY Chromium-based browser (Brave, Chrome, # Edge, Chromium, Opera) via Playwright's channel support. # BROWSER_CHANNEL=chrome — use Google Chrome # BROWSER_CHANNEL=msedge — use Microsoft Edge # BROWSER_CHANNEL=brave — use Brave (set BROWSER_EXECUTABLE_PATH if needed) # BROWSER_CHANNEL=chromium — use bundled Chromium (default) BROWSER_HEADLESS=true BROWSER_HEADLESS_MODE=new # headless=new (modern), headless=old, or false (visible) BROWSER_CHANNEL= BROWSER_EXECUTABLE_PATH= BROWSER_DEFAULT_TIMEOUT_MS=30000 BROWSER_NAVIGATION_TIMEOUT_MS=30000 BROWSER_USER_DATA_DIR= # --- Social integrations (no real publishing implemented yet) --- X_CLIENT_ID= X_CLIENT_SECRET= LINKEDIN_CLIENT_ID= LINKEDIN_CLIENT_SECRET= # --- Security --- SECURITY_SECRET_KEY=change-me-in-production SECURITY_ALLOWED_HOSTS=["*"] SECURITY_CORS_ORIGINS=["http://localhost:3000"] # --- Logging --- LOG_LEVEL=INFO LOG_JSON_FORMAT=true # --- Limits (prevent unbounded agent loops / runaway cost) --- LIMITS_MAX_ITERATIONS=25 LIMITS_MAX_TOOL_CALLS=50 LIMITS_MAX_EXECUTION_SECONDS=900 LIMITS_MAX_RETRIES=3 LIMITS_MAX_RESEARCH_SOURCES=15