# Core
fastapi==0.115.0
uvicorn==0.29.0
pydantic==2.5.0
pydantic-settings==2.1.0
python-dotenv==1.0.0

# Database
sqlalchemy==2.0.23
psycopg2-binary==2.9.9
alembic==1.13.1

# Utilities
pyyaml>=6.0
apscheduler>=3.10.0
requests==2.31.0
fabric==3.2.2
# podman Python SDK only has Linux binaries — skip on macOS/Windows
podman==5.0.0; sys_platform == "linux"

# HTTP client (used in tests and health checks)
httpx==0.25.2

# Build queue — durable across API restarts. The watchtower.queue module
# falls back to in-process execution when REDIS_URL is unset, so dev /
# desktop installs without Redis still work.
redis==5.0.1
rq==1.16.2

# Agent — talks to ANY OpenAI-compatible chat-completions endpoint.
# Works with Ollama, LM Studio, vLLM, llama.cpp, OpenAI, OpenRouter,
# LiteLLM, etc. Operators pick their own LLM via WATCHTOWER_LLM_BASE_URL
# — WatchTower itself is provider-agnostic.
openai>=1.50.0

# Rate limiting — protects auth and webhook endpoints from brute force /
# DoS even on single-operator installs without a CDN/WAF in front.
slowapi>=0.1.9
