Open-source desktop dashboard for visualizing and locally analyzing Google Health and Fitbit data with privacy-focused AI insights.
0
stars
36
commits
Python
primary language
Sep 11, 2026
updated
Your health history, privately understood.
VitalChronicle is a local-first desktop application for downloading, storing, exploring, and exporting personal data made available through the Google Health API. It combines adaptive visualisations with optional analysis performed by a local Ollama model. Health records stay on the computer unless the user explicitly exports them.
VitalChronicle is and will remain free and open-source software. If it is useful to you, a voluntary contribution through Buy Me a Coffee helps keep development active and the downloadable packages available.
Another valuable way to support this open-source project is to help translate VitalChronicle on Weblate. No programming experience is required.
VitalChronicle is an independent project. It is not affiliated with, endorsed by, or supported by Google. It is an exploratory wellness-data tool, not a medical device and not a replacement for professional medical advice.
Download the latest VitalChronicle release for Linux, Windows, or macOS
The exact current version is always shown by the release badge at the top of this README and by GitHub on the linked release page. These links update automatically whenever a new version is published.
| Platform | Release package | Notes |
|---|---|---|
| Linux x86-64 | AppImage + Sigstore bundle | No Python installation required |
| Windows x86-64 | Standalone .exe | Unsigned; SmartScreen may warn |
| macOS Apple Silicon | .dmg | Ad-hoc signed, not notarised |
| macOS Intel x86-64 | .dmg | Ad-hoc signed, not notarised |
| Python 3.10+ | Wheel and source archive | For development or unsupported systems |
| Android | Not currently included | Requires a separate mobile UI and OAuth flow |
Windows and macOS packages are not signed with paid platform certificates. Download
only from the official release page and verify SHA256SUMS.txt. The Linux AppImage is
attested through GitHub Actions and includes a detached Sigstore bundle.
Screenshots are generated from the real application using synthetic demonstration data. No personal health record or credential is included in this repository.

The overview distinguishes cumulative metrics from physiological measurements. Steps, sleep, and active-zone minutes use completion bars against the preceding seven-day average. Heart rate and other vital measurements use neutral above/below-baseline comparisons, compact trend plots, and a one-standard-deviation reference band.

Charts adapt to the selected record: daily bars for steps and energy, point clouds for dense measurements, stacked bars for sleep stages and heart-rate zones, and readable vertical ranges for noisy measurements. Panning and zooming operate on time.

The AI tab is a control centre; conversations open in a larger, resizable window with local thread history, follow-up questions, stop/regenerate controls, Markdown export, and an evidence drawer. Thinking and the final answer share one assistant area. Each conversation pins its data snapshot and visibly offers a refresh when newer local data become available.
Before Ollama receives anything, deterministic Python preparation calculates personal 7/28/90-day baselines, matched recent-versus-previous periods, robust anomalies, trends, weekly patterns, coverage gaps, sleep-stage and workout comparisons, plus same-day and one-day-lagged associations. Evidence is ranked so the model can synthesize sustained, multi-metric patterns instead of merely reporting that one day differs from another. Incomplete cumulative totals are compared only with previous days at the same local time.

The user enters installed RAM and receives a model-aware token recommendation. The value remains editable and is limited only by the physical context reported by Ollama.
Download the package for your operating system from the latest release.
Start VitalChronicle.
Select Google setup and follow the wizard.
Create a personal Google Cloud project, enable the Google Health API, and add your account as a test user if the OAuth project is in Testing mode.
Create an OAuth client of type Web application with this exact redirect URI:
http://localhost:8765/
Download the OAuth JSON once and import it in the wizard.
Sign in through the browser and select Download / update.
The complete procedure, screenshots, scope list, and troubleshooting steps are in the detailed user manual. A versioned PDF manual is attached to every release.
Python 3.10 or newer is required. On Fedora:
sudo dnf install python3 python3-pip
git clone https://github.com/SebRoLENS/google-health-dashboard-ai.git
cd google-health-dashboard-ai
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
vitalchronicle
On Windows activate the environment with .venv\Scripts\activate; on macOS and
other Unix-like systems use source .venv/bin/activate.
Testing mode is convenient for personal use and does not require public verification. Add the intended Google accounts under Audience → Test users. For an external OAuth project in Testing, Google normally issues refresh tokens that expire after seven days, so VitalChronicle may occasionally ask the user to sign in again.
Production status is not mandatory for personal use. Publishing an app that requests sensitive or restricted scopes to a wider audience can require Google verification. Each VitalChronicle user creates and controls their own OAuth client; client secrets and tokens must never be committed to GitHub or shared with the developer.
Install Ollama, start its service, and pull a compatible model. For example:
ollama pull qwen3.5:9b
ollama list
curl -sS http://127.0.0.1:11434/api/version
VitalChronicle does not present local-model output as a diagnosis. Wearable data may be incomplete or inaccurate, correlations do not establish causality, and important health decisions should be discussed with a qualified professional.
Health data are stored in a private local SQLite database. OAuth credentials use the
system keyring when available and otherwise fall back to a user-readable local file with
restricted permissions. Local Ollama analysis is sent only to 127.0.0.1. The only
remote services contacted are Google for authorised health-data access and the Ollama
registry when checking whether model weights have changed.
The application deliberately retains the historical internal GoogleHealthViewer data
directory name so that upgrading from 0.2.12 to current VitalChronicle releases preserves existing
records, credentials, and settings.
VitalChronicle is developed as free, open-source software and will remain so. No feature is placed behind a donation. If the project saves you time, you can support its continued development on Buy Me a Coffee.
An equally useful non-financial contribution is to translate the application on Weblate. Translations committed by Weblate are validated by GitHub Actions and included automatically in subsequent application releases.
The same link is available inside the application toolbar and Help menu.
Sebastiano Romi
sebastiano.romi@gmail.com
Bug reports and feature requests belong in the GitHub issue tracker.
VitalChronicle is released under the MIT License. The source code is public, and the software is free to use, study, modify, and redistribute under that license.
If you would like to help the project while keeping it open for everyone, Buy Me a Coffee.
Python
99.8%
Open-source desktop dashboard for visualizing and locally analyzing Google Health and Fitbit data with privacy-focused AI insights.
0
stars
36
commits
Python
primary language
Sep 11, 2026
updated
Your health history, privately understood.
VitalChronicle is a local-first desktop application for downloading, storing, exploring, and exporting personal data made available through the Google Health API. It combines adaptive visualisations with optional analysis performed by a local Ollama model. Health records stay on the computer unless the user explicitly exports them.
VitalChronicle is and will remain free and open-source software. If it is useful to you, a voluntary contribution through Buy Me a Coffee helps keep development active and the downloadable packages available.
Another valuable way to support this open-source project is to help translate VitalChronicle on Weblate. No programming experience is required.
VitalChronicle is an independent project. It is not affiliated with, endorsed by, or supported by Google. It is an exploratory wellness-data tool, not a medical device and not a replacement for professional medical advice.
Download the latest VitalChronicle release for Linux, Windows, or macOS
The exact current version is always shown by the release badge at the top of this README and by GitHub on the linked release page. These links update automatically whenever a new version is published.
| Platform | Release package | Notes |
|---|---|---|
| Linux x86-64 | AppImage + Sigstore bundle | No Python installation required |
| Windows x86-64 | Standalone .exe | Unsigned; SmartScreen may warn |
| macOS Apple Silicon | .dmg | Ad-hoc signed, not notarised |
| macOS Intel x86-64 | .dmg | Ad-hoc signed, not notarised |
| Python 3.10+ | Wheel and source archive | For development or unsupported systems |
| Android | Not currently included | Requires a separate mobile UI and OAuth flow |
Windows and macOS packages are not signed with paid platform certificates. Download
only from the official release page and verify SHA256SUMS.txt. The Linux AppImage is
attested through GitHub Actions and includes a detached Sigstore bundle.
Screenshots are generated from the real application using synthetic demonstration data. No personal health record or credential is included in this repository.

The overview distinguishes cumulative metrics from physiological measurements. Steps, sleep, and active-zone minutes use completion bars against the preceding seven-day average. Heart rate and other vital measurements use neutral above/below-baseline comparisons, compact trend plots, and a one-standard-deviation reference band.

Charts adapt to the selected record: daily bars for steps and energy, point clouds for dense measurements, stacked bars for sleep stages and heart-rate zones, and readable vertical ranges for noisy measurements. Panning and zooming operate on time.

The AI tab is a control centre; conversations open in a larger, resizable window with local thread history, follow-up questions, stop/regenerate controls, Markdown export, and an evidence drawer. Thinking and the final answer share one assistant area. Each conversation pins its data snapshot and visibly offers a refresh when newer local data become available.
Before Ollama receives anything, deterministic Python preparation calculates personal 7/28/90-day baselines, matched recent-versus-previous periods, robust anomalies, trends, weekly patterns, coverage gaps, sleep-stage and workout comparisons, plus same-day and one-day-lagged associations. Evidence is ranked so the model can synthesize sustained, multi-metric patterns instead of merely reporting that one day differs from another. Incomplete cumulative totals are compared only with previous days at the same local time.

The user enters installed RAM and receives a model-aware token recommendation. The value remains editable and is limited only by the physical context reported by Ollama.
Download the package for your operating system from the latest release.
Start VitalChronicle.
Select Google setup and follow the wizard.
Create a personal Google Cloud project, enable the Google Health API, and add your account as a test user if the OAuth project is in Testing mode.
Create an OAuth client of type Web application with this exact redirect URI:
http://localhost:8765/
Download the OAuth JSON once and import it in the wizard.
Sign in through the browser and select Download / update.
The complete procedure, screenshots, scope list, and troubleshooting steps are in the detailed user manual. A versioned PDF manual is attached to every release.
Python 3.10 or newer is required. On Fedora:
sudo dnf install python3 python3-pip
git clone https://github.com/SebRoLENS/google-health-dashboard-ai.git
cd google-health-dashboard-ai
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
vitalchronicle
On Windows activate the environment with .venv\Scripts\activate; on macOS and
other Unix-like systems use source .venv/bin/activate.
Testing mode is convenient for personal use and does not require public verification. Add the intended Google accounts under Audience → Test users. For an external OAuth project in Testing, Google normally issues refresh tokens that expire after seven days, so VitalChronicle may occasionally ask the user to sign in again.
Production status is not mandatory for personal use. Publishing an app that requests sensitive or restricted scopes to a wider audience can require Google verification. Each VitalChronicle user creates and controls their own OAuth client; client secrets and tokens must never be committed to GitHub or shared with the developer.
Install Ollama, start its service, and pull a compatible model. For example:
ollama pull qwen3.5:9b
ollama list
curl -sS http://127.0.0.1:11434/api/version
VitalChronicle does not present local-model output as a diagnosis. Wearable data may be incomplete or inaccurate, correlations do not establish causality, and important health decisions should be discussed with a qualified professional.
Health data are stored in a private local SQLite database. OAuth credentials use the
system keyring when available and otherwise fall back to a user-readable local file with
restricted permissions. Local Ollama analysis is sent only to 127.0.0.1. The only
remote services contacted are Google for authorised health-data access and the Ollama
registry when checking whether model weights have changed.
The application deliberately retains the historical internal GoogleHealthViewer data
directory name so that upgrading from 0.2.12 to current VitalChronicle releases preserves existing
records, credentials, and settings.
VitalChronicle is developed as free, open-source software and will remain so. No feature is placed behind a donation. If the project saves you time, you can support its continued development on Buy Me a Coffee.
An equally useful non-financial contribution is to translate the application on Weblate. Translations committed by Weblate are validated by GitHub Actions and included automatically in subsequent application releases.
The same link is available inside the application toolbar and Help menu.
Sebastiano Romi
sebastiano.romi@gmail.com
Bug reports and feature requests belong in the GitHub issue tracker.
VitalChronicle is released under the MIT License. The source code is public, and the software is free to use, study, modify, and redistribute under that license.
If you would like to help the project while keeping it open for everyone, Buy Me a Coffee.
Python
99.8%