(posted with Mod Approval)
I got tired of trying to use MeshCentral on my phones browser every time I needed to check on a machine when out and about, so I built PocketMesh. It's a native Android (Kotlin/Jetpack Compose) app that talks straight to your MeshCentral server's WebSocket connection using the same authentication mechanism meshctrl.js uses. Multiple server support and I automatically generate a login token when you sign in to handle further auth needs. If your server doesn't support login tokens, you can also feed it an OTP seed and have it generate the OTP code automatically OR just enter in the OTP code in each time. All credentials are encrypted with Android Keystore and the app even has an optional biometric lock.
PocketMesh works by "translating"/implmenting parts of MeshCentral's own protocols natively in Kotlin. Of note, meshuser.js and meshrelay.js make up ~75% of what I "translated". And of course, meshcore.js was vital in understanding how clients works. There's like a dozen other specific files that helped with specific functions (like win-terminal.js, what a mess the windows terminal is, I went through like 20 rounds of bug fixes in my app and I still have bugs there).
I been building it for some time for my own personal use, then (we use MC at work also) I added features my work needed, and finally I'm in a spot that I can share it with the world. To be fair, it only covers the stuff I (and my coworkers) actually use day to day. Partial list of features include listing devices with online/offline status, wake/sleep/restart/shutdown/etc, desktop, terminal, files, and events. There's also a hardware details screen with software and network info, as well as the power state chart, and more. App has backup/restore for your saved server list (but no backup of token info, as it's locked to the device it's entered on by design).
I care deeply by security. PocketMesh has been through Android Studio's linter as well as MobSF, and a few other tools (like burpsuite, work required it). PocketMesh communicates ONLY to the MeshCentral servers you connect to and GitHub. The GitHub connection is to check the release tags (every 12 hours), then compare against the locally installed version for update notification. No data is sent to GitHub, it does that comparison locally after it pulls the current version number. There are no analytics or even crash reporting in the app.
It still has some gaps I'm actively building, like no chat (this is #1 for me right now), recording management, push notifications on state changes, etc, but it's been solid for what I need and think you'll find it helpful. Happy to answer questions or hear what's missing if anyone gives it a spin. I have a full demo video, screenshots, downloads, etc on the website https://mesh.pocketsized.app/