Open Source · MIT License

Your sovereign
health agent.

Track the 50% of aging you can measure and change. Wearable and blood data scored daily against published mortality research, on your own machine.

python -m pipelines.chronos report
Chronos — Longevity Agent

Ingesting synthetic data...

The research

Roughly 20-30% of lifespan variation is genetic. You can't change that. But the remaining 70-80% is driven by behavioral, metabolic, and physiological factors that are both measurable and modifiable. Cardiorespiratory fitness, grip strength, sleep architecture, body composition, and blood biomarkers all have well-documented dose-response relationships with mortality across studies spanning hundreds of thousands of participants.

Chronos tracks the modifiable side. It takes published hazard ratios from longitudinal mortality studies, scores your daily data against NHANES population norms, and computes a composite health score. You won't see the full picture, but you'll see most of what you can actually act on.

Garmin
20 endpoints
HR, HRV, sleep stages, VO2max, steps, stress, body battery, SpO2
Withings
6 measures
Weight, body fat %, muscle mass, fat mass, bone mass, body water
Manual + Config
5 inputs
Grip strength, blood pressure, waist, smoking, alcohol
Blood Labs
10 biomarkers
HbA1c, hs-CRP, RDW, albumin, fasting glucose, WBC, alk phos

26 observation metrics feed into 24 biological age variables, scored daily against NHANES 2017-2020 population norms.

Sources: Mandsager 2018 · Leong 2015 · Paluch 2022

Hardware

The full stack runs on ~$410 of hardware. You only need a Garmin to start.

Garmin Forerunner 165VO2max, HRV, resting HR, sleep, steps, body battery
$250Buy
Withings Body SmartWeight, body fat %, muscle mass, BMI
$130Buy
Camry Hand DynamometerGrip strength
$30Buy

Affiliate links (Amazon Associates). Costs you nothing extra, helps fund an open-source project.

Health sovereignty

Your wearables generate thousands of data points per day. Right now that data sits in Garmin's cloud and Withings' servers. Chronos pulls it onto your machine, where you can actually do something with it.

Your data, your machine

No cloud. No corporate silos. Every metric on hardware you own.

An LLM that reads your biometrics

A local model queries your health data every morning and tells you what changed.

All devices, one dataset

Watch, scale, blood panel, body comp. One normalized Postgres schema.

Queryable by anything

Pipe your health data into Claude Code, custom scripts, or any tool you want.

How it works

Five steps to health sovereignty.

Quickstart

Clone, compose, done. Demo data loads immediately.

# Launching soon — star the repo to get notified
git clone https://github.com/thomasstartz111/health-sovereign.git
cd health-sovereign
docker compose up --build

# Dashboard at localhost:3000 with sample data
open http://localhost:3000

# CLI commands (inside the pipeline container)
python -m pipelines.chronos report   # Terminal bio-age report
python -m pipelines.chronos digest   # LLM daily brief
python -m pipelines.chronos trend hrv # 30-day trend for any metric
python -m pipelines.chronos demo     # Run with synthetic data

Docker Compose brings up PostgreSQL, the Next.js dashboard, the Python pipeline, and Ollama (local LLM). To connect your real Garmin, copy .env.example to .env and add your credentials.

The repo is launching soon. Hardware links above work now — get your Garmin while you wait.

What you see every morning

9-card dashboard. Dark mode. Refreshes on every load.

Heart Rate
62 bpm
Resting · 7-day trend
Sleep
7.2 hrs
Deep 1.4h · REM 1.8h
Body Comp
18.2 %bf
NHANES percentile + trend
Recovery
78 bb
Body battery · intraday
VO2max
42 ml/kg/min
β=0.38 · top predictor
P42 Risk
P42 percentile
Heuristic percentile · 58% completeness
HRV (RMSSD)
38.2 ms
Down 12% today · largest drag
Steps
8,412 steps
+812 vs 30d average
Daily Brief
HRV dropped 12% — prioritize recovery today...
Local LLM · Ollama

The model

24 metrics. Published coefficients. Sex-specific betas.

delta_years = -1 x Sum(beta_i x z_i)
biological_age = chronological_age + delta_years
zi = (your value - age-adjusted population mean) / population SD, from NHANES 2017-2020
betai = log(hazard ratio) per SD from published mortality studies, with sex-specific adjustments (17 of 24 metrics have M/F-specific betas)
risk_percentile = CDF(composite_z) x 100, where composite_z normalizes across however many metrics are available

The wearable tier (14 metrics) runs daily from Garmin, Withings, and manual inputs. When you add blood biomarkers, the composite tier activates all 24 metrics. Several variables use non-linear transforms to capture U-shaped or J-shaped mortality curves (sleep, glucose, BMI, exercise).

VariableBetaSourceCitation
Smoking Status0.50ConfigJha 2013 NEJM; Carter 2015 BMC (binary: current vs never/former)
VO2max0.38GarminMandsager 2018 JAMA Network Open; n=122,007
Exercise Volume0.22GarminArem 2015 JAMA Intern Med; n=661,137
Grip Strength0.18ManualLeong 2015 Lancet PURE; n=142,861
Systolic BP0.16ManualLewington 2002 Lancet PSC; n=1,000,000
HRV (RMSSD)0.14GarminJarczok 2022 Psychosom Med
Waist Circumference0.13ManualCerhan 2014 Mayo Clin Proc; n=650,000
Resting HR0.12GarminZhang 2016 CMAJ
BMI0.11WithingsGlobal BMI Mortality Collab 2016 Lancet
Sleep Duration0.10GarminCappuccio 2010 Sleep meta-analysis
Daily Steps0.10GarminPaluch 2022 Lancet Public Health
Chronic Stress0.09GarminHeld out — effect size under review
Sleep Efficiency0.08GarminHeld out — effect size under review
Alcohol0.07ConfigWood 2018 Lancet; n=599,912
HbA1c0.15BloodSelvin 2010 NEJM
RDW0.12BloodPatel 2009 Arch Intern Med
hs-CRP0.11BloodKaptoge 2010 Lancet (ERFC)
Albumin0.10BloodLevine 2018 Aging (PhenoAge component)
Fasting Glucose0.10BloodYi 2017 Sci Rep
Creatinine0.09BloodLevine 2018 Aging (PhenoAge component)
Alkaline Phosphatase0.08BloodLevine 2018 Aging (PhenoAge component)
Vitamin D (25-OH)0.06BloodTransform only — deficiency penalty
WBC0.06BloodLevine 2018 Aging (PhenoAge component)
Total Cholesterol0.05BloodReference only — U-shaped mortality curve

All 24 model variables shown. Dimmed rows are held out or reference-only pending further validation. Smoking is a binary modifier (0/1). Full catalog with evidence status, transforms, and population norms available in the repo.

What this doesn't cover. Genetics, epigenetic methylation (GrimAge, DunedinPACE), environmental exposures, and social determinants all influence aging but require different tools to measure. Chronos focuses on the behavioral and physiological signals you can track daily and actually change. The two approaches are complementary: epigenetic clocks are the calibration point, Chronos is the daily instrument panel.