Rhasspy skills and mqtt ACL

I had started this project about 4 5 months ago but unfortunately for lack of time I couldn’t continue, my initial plan was to share the project when I arrived at a semi-functional state but I had to stop for lack of time before starting to work again on it I wanted to know if someone is already working on avoiding doing double work. I tried to design it so it needs little changes to the Rhasspy code. All skills will connect to the MQTT server put in bridge mode in fact this will act as an intermediary between the skills and the MQTT server managing access through ACL.


Each skill receives a username and password as environment variables to access the MQTT bridge and thanks to these credentials the server determines the topics which it can access. By default, there are some basic topics but the developer can add others if he needs to access them. To install new skills for now there is no graphical interface but I think that I will do a CLI that interface thanks to a rest API which sends a compressed archive with Dockerfile, a manifest.json the intent, and other files needed to run the container. Once decompressed, the server reads the manifest.json in which it will find the skills name, the permissions, the extra topics etc… Once the docker image is built the container is created and the credentials are passed as environment variables which are then hashed and after that registered in the “database”. Once done the container is started. For now, some parts are still missing for example the code that will have to deal with the creation of mosquitto.conf for the configuration of the MQTT bridge but if no one is already working on a similar project I could continue and then share the code once it reaches a functional state. Let me know if anyone has any advice or needs clarification.

After some work, I have published the source code. It is in alpha so some features are still missing but it is a good proof of concept. If someone wants to give feedback or suggestions I would be happy.

1 Like