Skip to content

fiddur/aurboda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

605 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aurboda - Self Quantification Aggregator

Backend Coverage

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.

HR Zone tracking Home screen widget Live BLE sensors

AI health insights

Quick Start (Docker)

# 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 -d

This starts:

  • aurboda (web + API) on port 8080
  • PostgreSQL with PostGIS
  • Watchtower for automatic updates

Creating Your User

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.

Environment Variables

Variable Description Default
SESSION_SECRET Secret for session tokens (32+ characters) Required
PGPASSWORD PostgreSQL password Required
ALLOW_SIGNUP Enable user registration endpoint true

Port Configuration

To change default port, modify "8080:80" to "YOUR_PORT:80" in docker-compose.yml.

Development Builds

Replace :latest with :develop in docker-compose.yml to use development builds.

Data Sources

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.

API Documentation

Interactive API documentation is available at https://aurboda.net/apispec (develop branch version).

MCP Integration

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"

Architecture

┌─────────────────┐
│  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 storage
  • apps/web - Preact-based visualization dashboard
  • apps/android - Health Connect data collector with HR zone widget

Development

pnpm install
pnpm fix    # Format and lint
pnpm check  # TypeScript checks

Backend requires PostgreSQL with PostGIS. Configure connection in .env:

PGHOST=localhost
PGPORT=5432
PGUSER=aurboda_service
PGPASSWORD=your_password
SESSION_SECRET=your_32_byte_secret

About the Name

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.

Contact

Questions or want access? Contact me on reddit.

About

Collect and aggregate your Quantified Self data

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •