Skip to main content

Privacy-first Apple Health data analyzer powered by AI

Project description

🫀 healthai — Apple Health AI Analyzer

A terminal AI assistant for your Apple Health data. Chat with 8 years of personal health metrics using any LLM — local or cloud.

GitHub stars License Python 3.9+ PyPI DeepSeek-R1 Supported OpenClaw Skill

healthai CLI preview


Installation

curl -fsSL https://raw.githubusercontent.com/krumjahn/applehealth/main/install.sh | bash

Or install directly with pipx:

pipx install healthai

Then run:

healthai

On first launch, a setup wizard walks you through choosing your AI model (GPT-4o, Claude, Gemini, DeepSeek-R1, and 50+ more), setting your API key, and pointing to your export.xml. Re-run it any time with healthai --setup.

🚀 Prefer a GUI?

Visit applehealthdata.com for instant, interactive analysis without the terminal.


🧐 What is this?

A purpose-built CLI that turns your Apple Health export.xml into a conversational AI session. Think of it as having a personal health analyst in your terminal — one that knows your exact data and can answer questions, spot trends, and generate charts without sending anything to a third party unless you choose to.

It's built for developers, biohackers, and researchers who want full control over their health data pipeline.

✨ Key Features

  • 💬 Chat REPL: Ask questions in plain English. "What were my most active months last year?" — just type it.
  • 🧠 50+ AI Models: GPT-4o, Claude, Gemini, DeepSeek-R1, Grok, Mistral, Llama, and any Ollama local model.
  • 🔒 100% Private Mode: Run DeepSeek-R1 or Llama 3 locally via Ollama — no data leaves your machine.
  • 📊 Automated Charts: Heart rate cycles, sleep patterns, workout intensity — generated with one slash command.
  • 📤 High-Fidelity Export: XML → CSV/JSON preserving all metadata (Record, Workout, ActivitySummary).
  • 💍 Smart Ring Integration: Unified view of Oura, Whoop, and Samsung Ring data via Apple Health sync.
  • 🔄 WHOOP Integration: Specialized support for augmenting Apple Health data with WHOOP metrics.

💬 Chat with Your Health Data

After setup, healthai drops you into a chat interface. Just type naturally:

  🫀 healthai  v1.5.0
  AI      → OpenAI (ChatGPT)
  Outputs → ~/healthai_output

  › What were my most active weeks last year?
  › How does my sleep correlate with my workout intensity?
  › Show me my heart rate trends over the past 3 months

Slash commands handle data operations:

Command Description
/diagnose Full health data report across all metrics
/steps Analyze step count trends
/heartrate Heart rate trends and anomalies
/sleep Sleep duration and quality patterns
/workouts Workout history and intensity
/weight Weight and BMI trends
/csv Export all metrics to CSV
/json Export all metrics to JSON
/settings View and change AI provider
/setup Re-run the setup wizard
/help Show all available commands
/exit Quit

🛠️ "Steal My System": From 8 Years of Data to Actionable Training

I used this exact tool to analyze 8 years of my own fitness history. Here's the system:

  1. The Pattern: I discovered that my most active days (40k+ steps) almost never coincided with gym sessions—they were work-related.
  2. The Optimization: I used the AI Analyzer to identify "Heart Rate Cycles" (3-4 week recovery dips) to automate my deload weeks.
  3. The Result: A training plan that finally matches my biology instead of a generic app's schedule. Read the full case study here.

⚡ Quick Start

Recommended (install once, run anywhere):

curl -fsSL https://raw.githubusercontent.com/krumjahn/applehealth/main/install.sh | bash
healthai

Or clone and run directly:

git clone https://github.com/krumjahn/applehealth.git && cd applehealth
./run

For private local AI (DeepSeek-R1, free, no API key):

  1. Install Ollama and run ollama pull deepseek-r1.
  2. Launch healthai, choose Ollama in the setup wizard.

🖥️ Local LLM Setup

Run any model 100% on your own machine — no API key, no data leaving your device.

Ollama (easiest)

# 1. Install Ollama: https://ollama.ai
# 2. Pull a model
ollama pull llama3.1          # Meta Llama 3.1 8B
ollama pull deepseek-r1       # DeepSeek R1 reasoning
ollama pull mistral           # Mistral 7B
ollama pull qwen3             # Qwen3

# 3. Run healthai and pick Ollama from the Featured section
healthai --setup

Ollama runs on localhost:11434 automatically. No configuration needed.

Jan

Jan is a desktop app with a built-in model library and local API server.

1. Download Jan from https://jan.ai
2. Install a model inside the Jan app (e.g. Llama 3.1 8B)
3. Enable the API server: Settings → Local API Server → Start
4. Run: healthai --setup
5. Choose "Jan — local server (localhost:1337)"
6. Enter the model name shown in Jan (e.g. llama3.1-8b-instruct)

LM Studio

LM Studio lets you download and run GGUF models with a GUI.

1. Download LM Studio from https://lmstudio.ai
2. Download a model from the Discover tab
3. Go to Local Server tab → Start Server
4. Run: healthai --setup
5. Choose "LM Studio (localhost:1234)"
6. Enter the model name shown in LM Studio's server tab

llama.cpp

For advanced users running llama.cpp server mode:

# Start llama.cpp in server mode
./llama-server -m your-model.gguf --port 8080

# Then in healthai --setup, choose "llama.cpp server (localhost:8080)"
# Enter the model name (usually the filename without .gguf)

GPT4All

GPT4All has an optional local API server:

1. Open GPT4All → Settings → Application → Advanced
2. Enable "Local API Server" on port 4891
3. Run: healthai --setup → choose "GPT4All (localhost:4891)"

Any OpenAI-compatible server

vLLM, LocalAI, Llamafile, and any other server that exposes an OpenAI-compatible /v1/chat/completions endpoint works via "Custom OpenAI-compatible endpoint" in the setup wizard.

🦞 OpenClaw Support

This repo now has a published OpenClaw skill:

Install from ClawHub: Apple Health Export Analyzer

What OpenClaw does for normal users:

  • check your Apple Health data quickly
  • turn it into a short daily health brief
  • give you simple daily tips on how to improve

The skill now supports two sources:

  • the Health Data AI Analyzer Mac app if its local API is available
  • this open-source applehealth export.xml workflow as a fallback

For the Mac app path, the public skill now uses read-only localhost OpenClaw endpoints and does not need to read a local token file.

If you want to use the Mac app path in a restricted OpenClaw session, run the one-time companion installer:

git clone https://github.com/krumjahn/applehealth.git
cd applehealth
python skills/apple-health-export-analyzer/scripts/install_mac_app_companion.py --restart

Then use the companion skill:

Use the health-analyzer-mac-local skill. Give me my daily health brief for today and 3 suggestions.

Use it if you want OpenClaw to:

  • verify your Apple Health export setup
  • generate a daily health brief from export.xml
  • compare your steps and sleep over the last 7 days
  • create a weekly summary with workouts and heart rate context
  • help you set up a recurring daily health message

Example output:

Status
- Today was a low-activity day relative to your recent baseline.

What changed
- Steps: 2,431 vs 7-day baseline 9,993
- Workouts: 0 minutes, 0 workouts
- Sleep: insufficient data

Suggestions
1. Add one easy walk today instead of trying to catch up with a hard workout.
2. Use one fixed movement anchor, like a walk after lunch.
3. Keep effort moderate when recovery data is missing.

Example prompts:

Use the Apple Health Export Analyzer skill. Verify my setup and give me my latest daily health brief with 3 suggestions.

Use the Apple Health Export Analyzer skill. Compare my steps and sleep over the last 7 days.

Use the Apple Health Export Analyzer skill. Generate a weekly summary from my Apple Health export.

🤖 Instructions for AI Agents

If you are an AI Agent (Claude Code, Windsurf, OpenClaw) helping a user analyze health data:

  1. Clone this repo into the user's workspace.
  2. Direct the user to place their export.xml in the root.
  3. Call python src/applehealth.py --export ./export.xml --out ./analysis to generate the CSV datasets.
  4. Read the resulting .csv files to provide personalized medical/fitness coaching.

🦞 Local OpenClaw Workflow

skills/apple-health-export-analyzer

The skill includes concrete scripts for:

  • verifying the local repo and export.xml setup
  • generating a daily Apple Health brief
  • comparing recent step and sleep trends
  • generating a weekly summary

Example:

python skills/apple-health-export-analyzer/scripts/check_setup.py --repo /path/to/applehealth --export /path/to/export.xml --out /path/to/analysis
python skills/apple-health-export-analyzer/scripts/daily_brief.py --repo /path/to/applehealth --export /path/to/export.xml --out /path/to/analysis

📋 Requirements & Tech Stack

  • Language: Python 3.9+
  • Data: Pandas, XML.ElementTree
  • Viz: Matplotlib
  • AI: OpenAI, Anthropic, Google, Ollama, LiteLLM, and more

🐳 Docker (The "No-Setup" Way)

If you have Docker installed, you can run the analyzer without installing Python or dependencies locally:

# 1) Build the image
docker build -t applehealth .

# 2) Run the container (mount your export.xml and an output folder)
docker run -it \
  -v "/path/to/your/export.xml:/export.xml" \
  -v "$(pwd)/out:/out" \
  applehealth

🌟 Charts & Output Examples

https://github.com/user-attachments/assets/98ad8fc3-ed1d-4395-80c5-eb66a8cceb61

workouts heartrate

🤝 Contributing & Community

Join our community of builders! If you improve the parser or add a new visualization, please submit a PR.

Join my community for updates, experiments, and AI-builder workflows.


If you find this tool useful, please give it a star ⭐️ to help others find it!

Star History Chart

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

healthai-1.9.0.tar.gz (52.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

healthai-1.9.0-py3-none-any.whl (49.5 kB view details)

Uploaded Python 3

File details

Details for the file healthai-1.9.0.tar.gz.

File metadata

  • Download URL: healthai-1.9.0.tar.gz
  • Upload date:
  • Size: 52.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for healthai-1.9.0.tar.gz
Algorithm Hash digest
SHA256 185e616b4c21d61bf9b6889c79358cef2bbb8fdec353c4d42b1236db6a8f21b0
MD5 b07a4faa3289051f7856808c8e14edd2
BLAKE2b-256 fae2bbb9a438cdf27edf32101b09ec03add460b34eab1aab029097767229b9b4

See more details on using hashes here.

File details

Details for the file healthai-1.9.0-py3-none-any.whl.

File metadata

  • Download URL: healthai-1.9.0-py3-none-any.whl
  • Upload date:
  • Size: 49.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for healthai-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bb9fba5a4181d8eb1421998bb6d5151d5c11f66b9ad418b23aee45e6bee58a0a
MD5 0ab7eccdd831c2d19a26cd945b5c857c
BLAKE2b-256 b91e47eab389db2c5fba0295d6e57ebd3d7b372c8bb27f889705c9fe6e683a86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page