OVOS Rust Messagebus

As an experiment to write a real piece of software in Rust, I decided to try the OVOS/Mycroft messagebus in a native Rust implementation. While the initial build went out several months ago, this week I put in some time to fix reported bugs and get packages available. For the adventurous among you, I invite you to please test out this alternative to the Python bus.

If containers are your thing, I have one here on Docker Hub: https://hub.docker.com/r/oscillatelabs/ovos-rust-messagebus/tags

There are more architectures available on GitHub: https://github.com/OscillateLabsLLC/ovos-rust-messagebus/pkgs/container/ovos-rust-messagebus

If you prefer using a binary, you can either build from source or download them here: Releases · OscillateLabsLLC/ovos-rust-messagebus · GitHub

Finally, the code is available at GitHub - OscillateLabsLLC/ovos-rust-messagebus: OVOS Message Bus implementation in Rust, where you can also file issues if you come across bugs or feature requests.

I’ve been using this bus exclusively for my ovos-mac project for months now. I also tested on a Mark 2 running Neon. @goldyfruit has been using it in his Kubernetes cluster with OVOS as well as on a Mark 2 running OVOS. Please be aware that this is considered beta and there is every possibility that bugs exist. I’m happy to address those issues as they come up.

I haven’t done formal benchmarking, but it’s noticeably faster in every system I try it with. On my Mac, the logs scroll by so quickly that I can’t read them.

Enjoy!

3 Likes

Will take it for a spin. Considering you tested it on a Mark2 running NEON am I correctly assuming the GUI message can be handled as well?

Yes, as far as I know, although I may need to adjust the path to allow for it

It just need the OVOS_BUS_MAX_MSG_SIZE set to 100 like we do within mycroft.conf

You can point it at mycroft.conf with an environment variable. Also, that setting is directly configurable by environment variable. Should be good!

this issue with max size is exclusive to the framework used by the python implementation (tornado), the config option was introduced to work around default values of the framework. other implementations don’t need to worry about it

3 Likes