# ExternalMultiAgentEnv and QMIX for remote inference over HTTP with multiple clients

**URL:** <https://discuss.ray.io/t/externalmultiagentenv-and-qmix-for-remote-inference-over-http-with-multiple-clients/3695>\
**Category:** RLlib\
**Created:** [October 1, 2021, 5:27pm UTC](https://discuss.ray.io/t/externalmultiagentenv-and-qmix-for-remote-inference-over-http-with-multiple-clients/3695 "2021-10-01T17:27:21Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![robfitzgerald](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/robfitzgerald/32/1381_2.png) [@robfitzgerald](https://discuss.ray.io/u/robfitzgerald)\
**Post date:** [October 15, 2021, 8:39pm UTC](https://discuss.ray.io/t/externalmultiagentenv-and-qmix-for-remote-inference-over-http-with-multiple-clients/3695/7 "2021-10-15T20:39:40Z")

</div>

OK! i continued digging around. as pointed out [here](https://discuss.ray.io/t/client-server-and-tune/3145/2), the queue.Empty error surfaces when the observation space is not correct.

in particular, my observation space was a `Tuple([Tuple([Box, Box]), Tuple([Box, Box])])`, which covers both groups, but a multiagent observation’s `Space` should only describe the righthand side of each multiagent observation in the multiagent observation dictionary. in my case, this should have been `Tuple[Box, Box]`.

same problem with my action space, it should have been `Tuple([Discrete, Discrete])`.

this made me confused as to how we can have heterogeneous agent groupings, but, i’m guessing that’s where the multiagent mapping section of the trainer config comes in to play.

---

_[View the full topic](https://discuss.ray.io/t/externalmultiagentenv-and-qmix-for-remote-inference-over-http-with-multiple-clients/3695)._
