UberMensch Coach / Server
UberMensch Server
A bigger model behind your coach, on a machine you run.
UberMensch works entirely on your phone; you don't need this. The server is for people who want a bigger model behind the coach — Claude, ChatGPT or a large local model — with a longer memory of your history than a phone can hold, and who are happy to run a small service at home or on their own server.
UberMensch app --HTTPS--> ubermensch-server --> the model you configured
(your phone) (your machine) Claude · ChatGPT · OllamaThe app still does the thinking about what to ask: it assembles your goals, plan, the facts you gave the coach and a compressed history of daily values, and sends that with each question. The server passes it to the model and streams the answer back. When the answer moves a session or proposes a goal, the app checks the change against its own rules before applying it.
The server is open source: github.com/weese/ubermensch-server. Its README is the full reference; this page is the short version.
What answers
One line in the server's .env picks the model provider. All of them look the same to the app, so you can switch at any time.
anthropic- Claude through the Anthropic APINeeds an Anthropic API key.
claude-code- Claude Code on a Claude subscriptionNeeds a one-time login, no API key.
openai- ChatGPT, or any OpenAI-compatible serverNeeds an OpenAI API key, or that server's address.
ollama- a local model through OllamaNeeds Ollama on the same machine or network.
echo- a stand-in that repeats the question, for testingNeeds nothing.
1. Install
You need Docker with the compose plugin, on any Linux machine, a Mac or a NAS that stays on.
git clone https://github.com/weese/ubermensch-server.git
cd ubermensch-server
cp .env.example .env
openssl rand -hex 32 # paste the result as UBERMENSCH_TOKEN in .env
docker compose up -d --build
curl http://127.0.0.1:8099/v1/healthThat starts the server with the echo provider, listening only on the machine itself. Keep the token: the app needs it too.
2. Choose a model
Edit .env, then run docker compose up -d again.
Claude with an API key
UBERMENSCH_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...Claude on your subscription, no API key: set UBERMENSCH_PROVIDER=claude-code and log in once with ./scripts/login-claude-code.sh. It prints a link, you sign in in the browser and paste back the code. The login stays inside the container's own folder; nothing is installed on the machine itself.
ChatGPT
UBERMENSCH_PROVIDER=openai
OPENAI_API_KEY=sk-...A local model with Ollama
UBERMENSCH_PROVIDER=ollama
UBERMENSCH_MODEL=llama3.1:8b
OLLAMA_BASE_URL=http://host.docker.internal:11434With Ollama nothing leaves your machine at all. A coach reasoning over months of data wants a capable model, though: 8B is the floor, not the target.
3. Make it reachable from your phone
Three ways, safest first:
- Behind an HTTPS reverse proxy on a domain you own, for example
https://example.org/ubermensch. The repository has an nginx example; setUBERMENSCH_ROOT_PATH=/ubermenschto match. Works everywhere. - Over a VPN such as WireGuard or Tailscale: set
BIND_ADDRto the VPN address. - On your home network only: set
BIND_ADDRto the machine's LAN address. Works at home, not on the road.
Don't open port 8099 to the internet without HTTPS. The token protects the server, but what the app sends is a summary of your health.
4. Connect the app
In UberMensch, go to You → Settings → Coach engine → Server. Enter the address and the token and tap Check. The app then explains what will be sent and asks for your consent; agree and save. Every question to the coach now goes to your server.
You can switch back to an on-phone engine at any time. The server keeps nothing the app needs.
What the server sees and keeps
With each question it receives the coaching context the app assembled: your goals, plan, the facts you gave the coach, daily values such as steps, sleep, heart rate and weight, and the conversation. Raw health samples never leave the phone. The server stores only a short history of daily values, in a database file on your machine, and passes the rest to the model provider you chose: Anthropic, OpenAI, or nobody beyond your machine with Ollama.
Urgent symptoms (chest pain, fainting and the like) are caught by a fixed check before any model is asked, and the reply always opens with advice to see a doctor — even if the model fails.
Running it as a service
The repository includes a systemd unit that starts the server at boot. Details, every setting and the API are in the README.
See also the UberMensch privacy policy.