I’m Joe, creator of JoeBro and JoeBro Mobile. In my own setup, a Raspberry Pi runs the Python and SQLite backend headless. My Mac app and iPhone point to that host over Tailscale.
This is a description of what I personally run. The public 1.3 release bundles the Python standard-library backend inside the native Mac app and starts it with the app. The documented iPhone pairing connects to that Mac, which must be open and awake. There is no standalone Pi or Docker installation guide, so I cannot offer documented setup commands or call this a turnkey, supported mode.
Why I use a Pi
The practical reason is availability: the service can remain reachable without leaving my Mac running. Both clients reach the host through my Tailscale network. That gives me a self-managed arrangement whose maintenance and network access I control.
Self-hosting moves responsibility as well as control. I am responsible for the Pi, its operating system, access controls, network reachability, backups and updates. The published product path does not provide a Pi deployment walkthrough, so someone following only the README should use the documented Mac setup.
A self-hosted backend is not the same as local inference
Where the workspace backend runs and where the model runs are separate decisions. JoeBro does not bundle a model. I can configure Ollama at a local endpoint, or provide an API key for a hosted model. In the hosted case, relevant prompt content goes to that provider for processing, even if the JoeBro backend itself runs on hardware I manage.
Cloak Mode is enabled by default and replaces detected values such as passwords, API keys, email addresses and account numbers. That can reduce exposure of those values, but it does not make the model request local or remove the rest of a prompt. I still choose the endpoint and decide what context or tools to use.
The iPhone’s route to the host
The iPhone companion is source-only, with no App Store build. It requires iOS 17 or later and Xcode; a free Apple ID can install a build on a personal device. Pairing uses a token, and the documented workflow starts from the Mac app’s Mobile settings. The companion’s README recommends Tailscale for access away from home and warns against port-forwarding the listener to the public internet.
Those documented details describe the supported Mac pairing flow. My Pi changes where I point my clients, but it does not turn the Pi into an officially documented installation target. Optional push notifications require a paid Apple Developer account and the user’s own APNs key; the app can work without push.
Who should consider this path?
If you already manage a Raspberry Pi and a private network, my setup may be useful as an advanced personal experiment. You will need to understand your own deployment and accept that product documentation does not currently walk through it. If you want reproducible instructions and supportable setup steps, follow the documented Apple Silicon Mac path instead.
The documented Mac app requires macOS 26 or later on Apple Silicon. The companion requires iOS 17 or later and a self-build with Xcode. Both repositories are GPLv3, so the source is available to inspect and adapt; that does not make my particular Pi configuration an officially supported deployment.
The honest summary
I use a Pi because I want my own workspace reachable without an always-on Mac. That is my deployment choice and my maintenance burden. JoeBro’s documented release remains a Mac-bundled backend paired with the phone app. Treat those as two different levels of setup, and check the READMEs for the current supported path.
Read the source and current setup notes
JoeBro is GPLv3 software. The READMEs describe the supported release path and current requirements; check them before installing.