The current state is that I'm a couple of days away from a beta release of my MQTT "micro-framework". I have now spent a couple of weeks quite happy updating code on remote boards that are only connected via one MQTTS connection. I have also done my first MP firmware OTA update over MQTTS of a remote "production" board, i.e. one I really didn't want to loose. I'm currently reworking various APIs based on learnings and need to update the docs.
The "framework" part concerns having various services and application portions in python modules that get loaded by main.py based on a board config. That makes it easy to add modules to boards. It also includes repl-like functionality over MQTT and remote logging, including buffering boot-time logs until a connection gets established so you can see how the thing booted up.
Everything is freely available at
https://github.com/tve/micropython-mqtt, but as mentioned, I'm making a pile of little changes... WRT communication, there are github issues, this forum, and I'm also active on the MP slack.
I should also mention that all the above relies on my fork of MP, which includes a bunch of PRs that are somewhere in the (glacial) PR pipeline. The most pertinent are adding TLS support for usyncio and fixing machine.RTC.memory so it actually works.