Watch2Whoop

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: AGPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

WHOOP-style recovery, strain and sleep analysis from the Apple Watch you already wear. Self-hosted, any AI via MCP. Not affiliated with WHOOP or Apple.

README.md

Watch2Whoop

WHOOP-style recovery, strain and sleep analysis from the Apple Watch you already wear.
No subscription, no extra band. Your data lives on your own server, and any AI can read and write it through MCP.

CI GitHub stars License: AGPL-3.0 Releases MCP server Apple Watch + iOS app

Quick Start · Docs · User handbook · Roadmap · Releases · Changelog · Contributing · 简体中文

Today, trends, sleep and profile screens with synthetic demo data

[!IMPORTANT]
Not affiliated with WHOOP, Inc. or Apple Inc.; their names are trademarks, used only to say what this works with or resembles.
Not a medical device and not medical advice. Status: alpha, Apple Watch first. All screenshots use synthetic data.

Why

Your Apple Watch already records heart rate, HRV, sleep stages, SpO₂ and workouts, but turns little of it into daily
guidance. Subscription bands do, but the analysis stays in their app. Watch2Whoop is the missing part, and it is yours:

  • WHOOP-style numbers from raw watch data — recovery, strain, sleep need and debt, stress, body age, each against
    your own baseline. Formulas are built from published research literature, and every parameter is documented.
  • Any AI, through MCP — Claude, ChatGPT / Codex, Gemini, DeepSeek, a local Ollama … connect over MCP or an API key.
    Tools, memory and history live in your database, so switching models loses nothing.
  • No forms — you log food, workouts, weight, labs or how you slept by telling your AI, in text, a photo or by voice.
  • Self-hosted and multi-user — one server for your family, an account per person, sharing only when someone opts in.

Quick Start

Try it in about 5 minutes with 60 days of synthetic data, no watch or account needed. You need Docker (Compose v2)
and python3 ≥ 3.9.

git clone https://github.com/SongyuQi-Francisco/Watch2Whoop.git
cd Watch2Whoop
./quickstart.sh                                         # prints a login link for the Today page

It starts Body Engine and Open Wearables on 127.0.0.1 (SparkyFitness only with --sparkyfitness), imports the synthetic data through the real Apple
Health importer and computes every score. Ports, options and status / logs / down / reset: quickstart/README.md.
There is no hosted demo.

Features

Recovery Daily 0–100 score from overnight HRV, sleeping heart rate, sleep performance and respiratory rate vs. your 60-day baseline; illness flags
Strain Day strain 0–21 (Edwards TRIMP from raw heart rate), training load (CTL / ATL / TSB) and a daily target from the Strain Coach
Sleep Sleep score, stages, need and debt, consistency, efficiency; a Sleep Coach and a gradual bedtime-goal planner
Health monitor & stress Resting HR, HRV, respiratory rate, SpO₂ and wrist temperature vs. your normal range; daytime stress score
Body age Body age and pace of aging from 8 markers (steps, active minutes, strength training, VO₂max, resting HR, body composition, sleep duration and regularity)
Training Calendar that merges watch workouts (HR zones, calories) with strength sets; exercise library, 3 / 4 / 5-day splits and weekly plans adjusted by recovery; muscle-load map
Nutrition & records Meal templates, recipes with per-serving nutrition, lab results with reference ranges and trends, supplements, symptoms, a behaviour journal with next-day impact
Reports Weekly and monthly reports; rule-based reminders (load progression, calorie adjustment from the weight trend, pre-workout fueling)
Family Accounts per person, per-user tokens, opt-in sharing, friend circles

How every score is computed, with references and known limits: scoring methodology.
The scoring code is also split out as a standalone library, packages/openbodyscore (Apache-2.0).
The UI is in Chinese and English. Newer features ship behind feature flags that are off on a fresh install
(body-engine flags list, see docs/rollout.md).

Tour of the Today, trends, sleep and profile pages   Muscle-load map for the week

AI and MCP

Watch2Whoop is a data layer for your AI, not another chatbot. The AI is swappable; the data stays.

  • Remote MCP at /mcp (Streamable HTTP, a per-user AI token) for Claude, ChatGPT / Codex, Gemini / Antigravity and any
    other MCP client, plus a stdio MCP server for local use. Setup commands: body_engine/README.md.
  • 100+ tools to read scores, sleep, training, nutrition, labs and memory, and to log food, workouts, weight and more.
    Every tool call is authorized per user and audited. A compact get_briefing (~1.5k tokens) opens each conversation.
  • Prompts for common jobs: butler (the coach persona), weekly_review, plan_training_week, plan_shopping, log_meal_from_photo.
  • In-app chat with your own API key: Anthropic, OpenAI, Gemini or any OpenAI-compatible endpoint (DeepSeek, Qwen,
    Ollama). Keys are encrypted per user; deletes ask first; photos, video and push-to-talk (speech recognition runs on your server).
  • Long-term memory in your own database: profile, observations, a status card the AI keeps up to date.

In-app AI answering questions with data cards (synthetic data)

Getting your data in

Source How
iOS app Background HealthKit sync from iPhone + Apple Watch, with the Today page inside the app (apps/watch2whoop, Flutter). Build it yourself; a TestFlight beta runs for invited testers
Apple Health export Upload export.zip from the Health app in the app (chunked, resumable) to import years of history; admins can also run body-engine import-apple-zip
Hevy Upload Hevy's workout CSV export; exercise names are matched to the exercise library and muscle load is recomputed
iOS Shortcut No app needed: a Shortcut uploads Health samples on a schedule (shortcuts/, format spec docs/shortcut-sync-spec.md)
Your AI Everything you tell it: meals, workouts, weight, labs, supplements, symptoms, journal

How it works

flowchart LR
  W["Apple Watch + iPhone<br/>(iOS app or Shortcut)"] --> OW["Open Wearables<br/>raw wearable data"]
  W --> BE
  OW --> BE["Body Engine<br/>FastAPI + PostgreSQL<br/>scores · food / strength / weight logs · rules"]
  BE --> T["Today page<br/>(inside the iOS app)"]
  BE <-->|"MCP · API key"| AI["Your AI<br/>Claude · ChatGPT · Gemini · DeepSeek …"]

Built on open source: Open Wearables for wearable sync,
PostgreSQL, FastAPI, Flutter, and optionally Grafana. Food, strength and weight
logs live in Body Engine's own tables; SparkyFitness, which held them
before, is optional and no longer needed (only to migrate an older deployment: docs/own-food-weight-storage.md).
Services bind to 127.0.0.1 and are reached through Tailscale by default.

Self-hosting on a Mac mini or a Linux VPS: docs/README.md#self-hosting · Admin guide (Chinese): docs/admin-guide.md

Roadmap

Planned work and discussions live in issues; app builds and notes in releases and the app changelog.

  • Apple Watch: recovery, strain, sleep, body age, stress, coaches, reports
  • One-command local Quick Start with synthetic data
  • Remote MCP + API-key chat for any AI, per-user AI isolation
  • Training module v2: exercise library, splits, weekly plans, recovery-based adjustments (design)
  • Hevy CSV import, Apple Health history import
  • Self-service sign-up with invite codes (design)
  • Chinese and English UI (remaining gaps: #64)
  • In progress: friends page and circles (design)
  • In progress: own Apple Health sync engine to replace Open Wearables on iOS (#219)
  • RMSSD-based recovery (#117)
  • Coles / Woolworths prices and weekly specials: the sites block scraping and we do not work around that; prices come from the user's own receipts / shelf labels / AI, the opt-in grocery-sync component stays off, compliant sources are being surveyed (#292, plan and terms analysis)
  • Publish the scoring library openbodyscore
  • One-command Linux VPS installer
  • Other watches: Garmin, Oura, Polar, Android Health Connect … (help wanted)

Contributing

Contributions are welcome. Every change is a pull request from your own branch or fork; CI must pass and a maintainer
reviews. Read CONTRIBUTING.md first (new UI text is always bilingual, Chinese + English).

Good places to start:

Try changes locally with ./quickstart.sh; tests: cd body_engine && uv run pytest, cd apps/watch2whoop && flutter test.

Repository

Path What
body_engine/ Server: scores, records, rules, AI tools, MCP, Today page
apps/watch2whoop/ iOS app (Flutter)
packages/openbodyscore/ Standalone scoring library
packages/openbodyscore-js/ The same algorithms as one JS file the iOS app runs locally (JavaScriptCore)
examples/reading-notes/ The server's MCP framework (datalayer) on non-health data: reading notes on SQLite
shortcuts/ iOS Shortcut sync (no app needed)
quickstart/ One-command local demo
deploy/, assistant/ Deployment, ops, AI coach workspace
docs/ Design documents (mostly Chinese)

License

Part Licence
Server and everything else AGPL-3.0
iOS app apps/watch2whoop/ MIT
iOS Shortcut shortcuts/ MIT
Scoring library packages/openbodyscore/ Apache-2.0

Third-party services (Open Wearables, Grafana, the optional SparkyFitness) keep their own licences: docs/LICENSES.md.

Watch2Whoop is not affiliated with, endorsed by or connected to WHOOP, Inc. or Apple Inc. "WHOOP-style" only describes
the kind of analysis; the scores are independent implementations. The numbers are for personal insight and do not
constitute medical advice, diagnosis or treatment.

Yorumlar (0)

Sonuc bulunamadi