# LLM Provider Configuration (matching conversational_agent.py) # Choose one provider and set the corresponding API key # Provider selection (default: kimi) # Options: dashscope (== qwen/bailian), siliconflow, doubao, kimi, moonshot, openrouter LLM_PROVIDER=kimi # API Keys (set the one matching your provider) KIMI_API_KEY=your-kimi-api-key-here # DASHSCOPE_API_KEY=your-dashscope-api-key-here # SILICONFLOW_API_KEY=your-siliconflow-api-key-here # DOUBAO_API_KEY=your-doubao-api-key-here # OPENROUTER_API_KEY=your-openrouter-api-key-here # Universal OpenRouter fallback: # If the selected provider's key is missing but OPENROUTER_API_KEY is set, # the agent (event_loop_demo.py / server.py / quickstart.py) automatically # falls back to the 'openrouter' provider so it still runs. # Optional: Override default model for your provider # LLM_MODEL=kimi-k3 # Default models per provider: # - siliconflow: Qwen/Qwen3-235B-A22B-Thinking-2507 # - doubao: doubao-seed-1-6-thinking-250715 # - kimi/moonshot: kimi-k3 # - dashscope/qwen/bailian: qwen3.7-plus # - openrouter: google/gemini-3.5-flash # (also supports: openai/gpt-5, anthropic/claude-sonnet-4) # Optional: Custom server port (default: 8000) # AGENT_PORT=8000 # Experiment 6-1 real mailbox/calendar workflow # Obtain both values from the same Unipile project. The DSN normally has the # form apiN.unipile.com:PORT; never commit either real value. # UNIPILE_DSN=apiN.unipile.com:PORT # UNIPILE_ACCESS_TOKEN=your-unipile-api-key