Your health data is scattered across apps and services. Aurboda aggregates it into one place, provides visualizations, and exposes it to AI assistants via MCP (Model Context Protocol).
What it does:
- Aggregates health data from Android Health Connect, Oura, OwnTracks, and RescueTime
- Visualizes heart rate zones, sleep patterns, location history, and exercise data
- AI-ready via MCP — optionally connect Claude or other AI assistants to your self-hosted instance to query your data
Currently in early development. No public signup, but self-hosting is straightforward.
# Download docker-compose.yml
curl -o docker-compose.yml https://raw.githubusercontent.com/fiddur/aurboda/main/docker-compose.yml
# Generate secure secrets (openssl ships with Git on Windows, standard on macOS/Linux)
sed -i.bak "s/REPLACE_DB_PASSWORD/$(openssl rand -hex 16)/" docker-compose.yml
sed -i.bak "s/REPLACE_SESSION_SECRET/$(openssl rand -hex 16)/" docker-compose.yml
rm docker-compose.yml.bak
# Start services
docker compose up -dThis starts:
- aurboda (web + API) on port 8080
- PostgreSQL with PostGIS
- Watchtower for automatic updates
Navigate to http://localhost:8080 and create your account through the web interface.
After creating your user, you can set ALLOW_SIGNUP=false in docker-compose.yml to disallow other signups.
| Variable | Description | Default |
|---|---|---|
SESSION_SECRET |
Secret for session tokens (32+ characters) | Required |
PGPASSWORD |
PostgreSQL password | Required |
ALLOW_SIGNUP |
Enable user registration endpoint | true |
To change default port, modify "8080:80" to "YOUR_PORT:80" in docker-compose.yml.
Replace :latest with :develop in docker-compose.yml to use development builds.
See docs/data-sources.md for detailed documentation on all data sources, including admin and user setup instructions.
| Source | Setup |
|---|---|
| Android Health Connect | Install the Android APK, enter your server URL (e.g., http://YOUR_SERVER_IP), and log in with your credentials |
| BLE Heart Rate Sensors | Pair Bluetooth heart rate monitors (e.g., Polar H10) via the app's Live screen for real-time HR and HRV tracking |
| BLE Step Sensors | Pair Bluetooth running pods (e.g., Zwift RunPod) via the app's Live screen for real-time cadence and step counting |
| OwnTracks | OwnTracks setup guide (JSON HTTP mode) |
| Oura | Connect via OAuth in user settings (web UI). Requires OURA_CLIENT and OURA_SECRET env vars on backend. |
| RescueTime | Configure API key in user settings (web UI). Get key from RescueTime API settings. |
| Last.fm | Configure API key in admin settings, username in user settings. See docs/lastfm.md. |
| Calendars | Add ICS URLs in user settings. See docs/calendars.md. |
Interactive API documentation is available at https://aurboda.net/apispec (develop branch version).
The backend exposes an MCP server, allowing AI assistants to query your health data. Configure your MCP client to connect to the backend endpoint.
Example queries an AI can answer:
- "How was my sleep quality this week compared to last week?"
- "What's the correlation between my exercise and sleep scores?"
- "Show me days where I hit my Zone 2 cardio goals"
┌─────────────────┐
│ Android App │─────────┐
│ (Health Connect) │
└─────────────────┘ │
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ OwnTracks │────▶│ Backend │◀────│ Web UI │
│ │ │ (API + MCP) │ │ (Preact) │
└─────────────────┘ └────────┬────────┘ └─────────────────┘
▲ │
┌─────────────────┐ │ │
│ Oura │─────────┘ │
│ RescueTime │ │
└─────────────────┘ ▼
┌─────────────────┐
│ PostgreSQL │
│ (PostGIS) │
└─────────────────┘
Components:
apps/backend- Node.js API server with MCP support, PostgreSQL/PostGIS for storageapps/web- Preact-based visualization dashboardapps/android- Health Connect data collector with HR zone widget
pnpm install
pnpm fix # Format and lint
pnpm check # TypeScript checksBackend requires PostgreSQL with PostGIS. Configure connection in .env:
PGHOST=localhost
PGPORT=5432
PGUSER=aurboda_service
PGPASSWORD=your_password
SESSION_SECRET=your_32_byte_secret
In Norse mythology, Aurboða (pronounced "owr-BO-tha", using a hard D in "aurboda") is a mountain jötunn associated with strength and vitality. Her name means "gravel-offerer" or "gold-offerer", reflecting her role as a gatherer and provider.
This project embodies that spirit: gathering scattered health data into a unified foundation for understanding your wellbeing.
Questions or want access? Contact me on reddit.



