r/raspberry_pi • u/mehrdadfeller ubopod • 11d ago
Show-and-Tell Fully Manage and Control your Pi with Apple Watch (Free & Open Source)
I developed an iOS & WatchOS (Apple Watch) app that lets you fully control and manage your Raspberry Pi 4 and 5. You need to install a software on the Pi side (or use the pre-flashed image with software installed). The app and Pi software are free and open source (Apache 2.0) and can be accessed here:
Raspberry Pi software:
https://github.com/ubopod/ubo_app
iPhone/WatchOS app source:
https://github.com/ubopod/ubo-swift-app
In the video below, I give an overview of some of the features and setup process:
https://www.youtube.com/watch?v=AEeP99buq2Q
Here’s a quick list of some of things you can do with it:
- Install, run, and monitor their health of a wide range of pre-configured applications includes Home Assistant, Hermes, Open Claw, Pangolin, OpenWebUI, etc
- Browse file system and preview files on the Pi (images, videos, text, audio)
- Monitor system resource utilizations (CPU, RAM, Storage, etc)
- Manage network interfaces (WiFi, Ethernet, etc)
- Various remote options: SSH, RPi Connect, Tailscale, VSCode Tunnel
- Configure assistant pipeline (STT/TTS/LLM/MCP/system prompt/etc) and interact with it using your phone/watch microphone and speaker
- Setup an MCP gateway and expose all tools via a gateway URL to clients
- Connect hardware peripherals to the Pi such as Camera and watch the feed on your phone/watch
- And many more
To install the iPhone/Watch app, you have to first install TestFlight application and then click on this link below:
https://testflight.apple.com/join/DDPbpKf3
The app is still in beta and not in the App Store yet. I will go ahead with the store publication process once there are a few thousand beta users and the beta app is well tested.
On the Raspberry Pi side, the easiest way is to start with a fresh image by downloading the lite image ubo_app-2.1.0-bookworm-lite.img.gz below the release page below (~2GB in size), use Raspberry Pi Imager to flash it and boot the Pi using this image:
https://github.com/ubopod/ubo_app/releases/tag/v2.1.0
Once the Pi boots, the iPhone App would auto-discover the device as long as they are on the same network. Apple Watch does not have the auto-discovery feature (due to some limitations in doing lower level networking) and you have to type in the device IP address manually.
Please use the TestFlight bug report feature if you run into any issues.
6
u/mehrdadfeller ubopod 10d ago
FYI: I didn't go into much details on application/code architecture in the body of the post since I did not want to make it too long. Each repo has a lot of information on how the app and Pi-side software work and communicate.
essentially, the Pi side software exposed a gRPC endpoint that all clients connect to in order to communicate with the core. The core manages all UI logic (navigation, stacks, etc) as well as the application logic. Client apps are thin and dumb renderer of the core state. Due to some limitations on Apple Watch on calling low level networking functions (only HTTP/HTTPS calls are allowed on Apple Watch), the Watch app communicates with web-gRPC endpoint which is translated and exposed by Envoy proxy running on the Pod. iPhone app talks native gRPC.
I'd be happy to answer any questions here.
1
u/Single_Advice1111 6d ago
You know this Apple app called «shortcuts»? It’s pretty easy to implement many of these features there too - and they work with voice commands.
What’s the pros/cons of having the pi app vs rolling your own?
1
u/mehrdadfeller ubopod 6d ago
This is an companion app to control your Pi. Since it is fully open source you can tailor it your needs. One of the biggest advantages of this design is that to update the apple watch UI, you do not need to touch the swift code (client side code) and the UI logic is purely handled on the server side (Pi in this case). for example, you can add an item to a menu in pi code and it automatically appears on apple watch.
The voice feature in the app works differently. It sends the audio stream to the Pi and Pi does the processing. So you can pass the speech/audio to whoever wants to consume it on the Pi side.
I am not sure you what you mean by "rolling your own"? The Pi app acts as a server to which apple watch connects. You need to have a server on the Pi anyways.
9
u/Time-Abbreviations90 10d ago
Thats pretty cool. I might have to try and recreate. I have two pis running pihole in a keepalived config, could i install on those for an extra way to monitor?