The single-server ceiling
One FastAPI process can hold tens of thousands of WebSocket connections, but it cannot hold a million. To scale horizontally — multiple servers behind a load balancer — you hit a structural problem: connections in the same room may live on different servers. Server A's broadcast cannot reach the user on Server B unless they share a message bus.
Redis Pub/Sub is the standard answer
Each server publishes outgoing messages to a Redis channel and subscribes to that same channel. Redis fans out to all subscribers. Each server then broadcasts the message to its local connections only. This pattern works for thousands of servers and millions of connections, with no central state.
cwkPippa's parallel pattern
cwkPippa is intentionally single-server (Mac Studio at home). But Pippa's Council pattern — where one user's question fans out to multiple brain processes and the responses converge — is the same shape. The transport differs (subprocess pipes, not Redis), but "fan out, fan in" is universal in distributed real-time.