httpx>=0.25.0
requests>=2.28
pyyaml>=6.0
duckduckgo-search>=6.0

[all]
openai>=1.0
anthropic>=0.30
google-genai>=1.0
flask>=3.0
discord.py>=2.3
slack-sdk>=3.26
duckduckgo-search>=6.0
elevenlabs>=1.0
playwright>=1.40
sounddevice>=0.4
numpy>=1.24
mss>=9.0
Pillow>=10.0
docker>=7.0
paramiko>=3.0
modal>=0.60
opencv-python-headless>=4.8
pystray>=0.19
plyer>=2.1
pyperclip>=1.8
pyyaml>=6.0

[all-providers]
openai>=1.0
anthropic>=0.30
google-genai>=1.0

[anthropic]
anthropic>=0.30

[browser]
playwright>=1.40

[dev]
pytest>=8.0
ruff>=0.5

[docker]
docker>=7.0

[gateway]
flask>=3.0
discord.py>=2.3
slack-sdk>=3.26

[gemini]
google-genai>=1.0

[modal]
modal>=0.60

[openai]
openai>=1.0

[recording]
mss>=9.0
opencv-python-headless>=4.8
Pillow>=10.0

[screen]
mss>=9.0
Pillow>=10.0

[ssh]
paramiko>=3.0

[tray]
pystray>=0.19
Pillow>=10.0
plyer>=2.1
pyperclip>=1.8

[voice]
elevenlabs>=1.0
openai>=1.0
sounddevice>=0.4
numpy>=1.24

[web]
duckduckgo-search>=6.0
