Pulse
Recovery, strain and sleep from your Google Health data.
Daily scores from what your Fitbit or Pixel Watch syncs to Google Health. Built on Fitbit Air, free for personal use.
Get Pulse
Self-host: one Docker container with Postgres behind HTTPS, for you and the people you invite. The setup guide walks through Google Cloud, Docker and Tailscale.
Android: Pulse Mobile needs no server or account and scores everything on your phone, from Health Connect.
What you get
- Sleep, Recovery and Strain every morning, with a Strain Target for the day
- Pulse Age, Stress Monitor and Energy Bank through the day
- Health Monitor, Journal, Trends, Reports, My Dashboard and an optional AI coach with your own key
Every score is explained on the metrics pages and in docs/algorithms. More screens: docs/screenshots.md.
Try the demo
No Google account needed: demo mode generates 180 days of data.
git clone https://github.com/adityaongit/pulse.git && cd pulse pnpm install && cp .env.example .env docker compose -f compose.dev.yaml up -d && pnpm dev # http://localhost:3000
Documentation
Setup · Other setups · Admin · PWA · App shell · Technical details · Contributing · AGENTS.md
License
PolyForm Noncommercial 1.0.0 · Security · Code of Conduct
Credits. Design inspiration: the interface is inspired by the WHOOP app's look and flow. Pulse is a free, non-commercial community project by an independent developer. It is not affiliated with, endorsed by or competing with WHOOP, Inc., uses no WHOOP device, data, code or assets, and every score is computed from your own Google Health data. WHOOP is a trademark of WHOOP, Inc. If you represent WHOOP or any other company and have a concern, please email work.adityajindal@gmail.com and it will be changed or taken down.
noop: the recovery, strain, sleep and readiness scoring is ported from its analytics engine.
Hælan: its notes on how the Google Health API behaves saved a lot of trial and error.