# One worker, deliberately. The market stream lives in the app lifespan, so a
# second process opens a second Schwab connection — they fight over the one
# session the account allows, and every alert fires twice. Do not add
# --workers, and do not swap in gunicorn with a worker count.
web: uvicorn main:app --host 0.0.0.0 --port 8000
