Creating many “clients” vs wrapping a “client” in an actor

Because they aren't Sendable. They're a giant pile of mutable state without synchronzation: you really, genuinely cannot use them in multiple concurrency domains. These not being Sendable is not an oversight, it's an intentional design decision.

This is accurate: ClientBootstraps are cheap, feel free to create plenty.

We've got tentative plans to deprecate-and-replace the current bootstraps, because they aren't really serving their purpose well anymore. In particular the builder pattern has aged poorly. The next versions will likely be value types, which makes this entire problem go away.

5 Likes