I’m Joe, creator of JoeBro and JoeBro Mobile. I wanted persistent context to be something a person can inspect, not a vague promise that an assistant simply “knows” them.
There are two distinct memory paths. The Mac app’s Brain and the phone agent’s memory files serve different needs and are managed in different ways. Both live in the Mac app’s local data folder.
Brain: topic-based memory on Mac
The Mac app stores long-term memories in a SQLite-backed local data store. Each entry is a fact, experience or opinion filed on a topic page. You can inspect, search, edit or delete those entries yourself. When a message arrives, JoeBro selects relevant memories and anything you have pinned rather than adding the entire archive to every prompt. Repeated facts can be merged into a topic page.
This is persistent context, not a guarantee that a model will always interpret it correctly. What the model receives still depends on retrieval and the prompt, and if you use a hosted model API, selected context may be sent to that provider along with your message.
Phone memory: plain Markdown
The phone agent uses separate Markdown files under JoeBro’s data folder. They are readable and editable from the Mac’s Brain → Phone memory screen or on the phone. The about-me file is always included; other files contribute lines that overlap with the current message. The agent can use remember and forget tools, and an optional durable-facts pass can add information after a turn.
That phone memory is separate from Brain. A change to one system should not be assumed to update the other. If you are trying to correct the assistant’s context, check which memory surface the relevant conversation uses.
What ownership looks like in practice
- Find it: Brain entries are in the Mac app’s Brain view; phone memory is exposed as Markdown files.
- Change it: add, edit or delete Mac entries; read or edit the phone files.
- Choose what is retrieved: relevant memories and pinned items are selected for a message; the whole archive is not attached each time.
- Check the model path: locally stored memory can still be included in a request to the model endpoint you chose.
“Inspectable” does not mean “never leaves the device.” Storage and inference are separate boundaries.
Two formats, two jobs
SQLite fits the Mac app’s topic-based Brain store. Markdown makes the phone agent’s files directly readable and editable. Neither format is inherently more private or more intelligent. The meaningful point is that these mechanisms are visible and manageable by the person using the app.
In the documented 1.3 setup, JoeBro’s backend is bundled inside the Mac app and the phone pairs to that Mac. The Mac needs to stay open and awake. I also use a personal Raspberry Pi arrangement, but there is no documented supported standalone Pi mode or installer; that setup is not a supported promise.
A quick check before relying on memory
- Look in the correct memory surface for the Mac chat or phone agent you are using.
- Remove or revise details you do not want retained.
- Review the model endpoint: retrieved context may be part of a hosted request.
- Read the current repository guide for behavior and setup details.
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.