Private · self-hosted · open source

All your wearables.
One clear read.

Vitals unifies every device you wear into a single morning readiness score, surfaces the trends that matter, and gives you an AI coach — all on a box you own, with your data never leaving home.

The Vitals dashboard: an 88/100 readiness ring reading 'Primed for training', with HRV, resting heart rate, sleep, vitals, a 14-day HRV trend, sleep stages, and today's run.

Bring the wearables you already wear

  • Fitbit Air
  • Apple Watch
  • Strava
  • Google Health
  • Oura
  • WHOOP
  • Garmin via adapter API

Toggle any source on or off in Settings — disabled devices simply disappear, never nagging you as “offline.” New sources are easy to add through a community-extensible adapter API.

The problem

Your health is scattered across a dozen apps.

Sleep in one app, heart rate in another, runs and meals somewhere else — each behind its own login, subscription, and cloud you can’t see into. No single place tells you, plainly, how you’re doing today.

The instrument

One clear signal, read from everything.

Vitals pulls every source into one dashboard on your own hardware, distills it into a single readiness read, and shows the trends that matter — confidently, privately, and entirely yours.

What you’ll see

A dashboard that reads like an instrument.

A bold readiness ring, sleep architecture, runs, energy in and out, gentle trends, and an AI coach — grouped by hairlines and whitespace, never buried in a grid of cards.

Light & dark

Soft Daylight by day, Soft Midnight by night.

Cool and bright when the sun’s up, deep and calm after dark — with a flicker-free theme switch and a single electric-blue accent that holds either way.

Vitals dashboard in its light Soft Daylight theme.
Soft Daylight
Vitals dashboard in its Soft Midnight dark theme.
Soft Midnight
The Sleep page: a full hypnogram across the night, stage breakdown, sleep debt, and a 14-day trend.
Sleep, charted. A full overnight hypnogram, stage breakdown, and your rolling sleep debt.
The Activity page: today's run, a list of recent Strava and Apple Watch workouts, steps, and energy balance.
Every run, in one place. Strava and Apple Watch workouts, steps, and energy balance — metric or imperial.
Vitals installed as a mobile app: the readiness ring and metrics with a bottom navigation bar.

In your pocket

Install it like any app.

Vitals is a progressive web app — add it to your home screen and it opens full-screen, works offline-first over your private Tailscale network, and sits right alongside your other health apps.

Ask AI · your coach

An AI coach that actually knows your data.

Ask Vitals anything — “How should I train today?”, “Why is my HRV up?” — and it answers from your real readiness, sleep, and runs. Each morning it also writes a plain-language brief. It’s bring-your-own-model: run it fully local with Ollama for 100% privacy and no cloud, or point it at Claude or Codex.

  • 100% local Run entirely on your machine with Ollama. Nothing ever leaves the box, and no API key is required.
  • Your choice Prefer a cloud model? Point it at Claude or Codex instead, and swap any time.
  • Ask anywhere A built-in MCP server lets you query your data from claude.ai or Claude Desktop.
The Ask AI page: a chat with an AI health coach that references your readiness, HRV and sleep, with suggestion chips.

Yours, by design

Private. Self-hosted. Open.

Vitals runs on your own always-on machine. Every reading lives in a local SQLite file on hardware you control.

Truly private

Your data lives in a local database on your own box — a Mac mini or any always-on machine. No vendor cloud, no telemetry. Reach it from anywhere over a private Tailscale network.

Self-hosted

You run Vitals yourself, on your own hardware, on your own terms. Keep it alive with launchd on macOS or systemd on Linux, and it quietly does its job 24/7.

Open source

A readable, friendly TypeScript codebase you can audit, fork, and extend. Add a wearable, reshape the brief, or run it untouched forever — it answers only to you.

Self-host in minutes

Up and running, fast.

  1. 1
    Clone & install. Grab the repo and install dependencies.
  2. 2
    Configure. Copy .env.example to .env and add your settings.
  3. 3
    Connect a wearable. Link Fitbit, Apple Health, Strava, Oura, or WHOOP in a few clicks.
  4. 4
    Run it. Start in dev, then keep it always-on with launchd or systemd.
Read the full setup
quickstart.sh
# clone the repo
git clone https://github.com/8tp/vitals-command-center.git
cd vitals-command-center

# configure your settings
cp .env.example .env

# install + run the app, API, and MCP server
npm install
npm run dev

# keep it always-on (macOS)
launchctl load ~/Library/LaunchAgents/com.vitals.api.plist

Bring your health home.

Clone it, connect your wearables, and own your data. New source adapters and contributions are always welcome.