> Monix and ZIO strike me as lower level (...) to deal with than Akka
It depends on your point of view. Usually, the actor model is considered a lower-level abstraction when compared to streaming.
For example, if you want to implement a simple map-reduce in the actor model, you will need to create a set of mapper actors, a reducer actor, and an actor to distribute jobs between the mapper actors. Meanwhile, using a stream library, this will pretty much become something like `jobs.mapAsync(f).reduce(g)`.
However, since in this example you are implementing actors on top of the IO monad, it is natural that the actor model appears like an higher level abstraction. If the examples were backward (i.e. implementing streams on top of actors, like akka-stream), you would probably get the opposite idea.