Free & open source Self-hosted health tracking

Your health data,
on your terms.

Klebb is a free, open-source, manifest-driven dashboard for tracking anything medical: supplements, peptides, bloods, weight, mood, sleep, whatever matters to you. Drop a JSON file, a card appears. No subscriptions, no database, no cloud, no compromises.

  • 100% free
  • Open source (AGPL-3.0)
  • Self-hosted
  • Passkey-only

Built by makeitbreakitfixit.com confessions of a backyard inventor

What it does

A dashboard that bends to you,
not the other way around.

Manifest-driven

Every card is a single JSON file. Add tracking for a new supplement, a new biomarker, a new mood scale: create a file, refresh the page, you have a card. No code changes, no schema migrations.

Self-hosted

Your data lives in plain JSON files on your own machine. No external service knows what you ate, what you took, or how you slept. git diff tells you exactly what changed.

AI chat with your data

An optional chat agent reads your manifests as context. Ask why your HRV tanked last week, or which supplement stack mapped to your best sleep. Bring your own gateway, any OpenAI-compatible endpoint works.

Passkey-only auth

WebAuthn, no passwords, no email, no SMS codes. One tap on your phone or hardware key and you are in. Multi-instance: every user gets their own isolated dashboard with separate data and credentials.

How it works

The manifest is the app.

A Klebb card is one file. Two halves: meta describes what it tracks and how to render it; data is the history. The server reads it, hands it to the browser, and the right renderer draws the card.

  • No catalog. Files on disk are the source of truth.
  • No build step. Edit a file, reload, done.
  • No lock-in. Your history is plain JSON; take it anywhere.
  • Composable. A renderer can pull from many manifests; complex views are just code, not infrastructure.
data/weight.json
{
  "schema": "klebb.datafile.v1",
  "meta": {
    "id": "weight",
    "title": "Body weight",
    "unit": "kg",
    "view": {
      "component": "eh-trend-card",
      "goal": 82
    }
  },
  "data": [
    { "date": "2026-05-19", "value": 84.2 },
    { "date": "2026-05-20", "value": 83.9 },
    { "date": "2026-05-21", "value": 83.6 }
  ]
}

Tech stack

Boring, on purpose.

Klebb is what falls out when you refuse to add a framework until you genuinely need one. No bundler, no database, no surprises.

Frontend

Lit web components loaded straight from esm.sh. No React, no bundler, no build pipeline.

Backend

Plain Node.js http. No Express, no ORM. Node 20+.

Storage

JSON files on disk. The filesystem is the database; rsync is the backup tool.

Auth

WebAuthn passkeys with recovery codes. No passwords stored, ever.

Deploy

One systemd unit per user, or a single Docker image. Multi-instance isolation comes for free.

Licence

AGPL-3.0-only. Run it, fork it, modify it; share what you change.

Trends

Plot any series over any window. Spot the curve in your weight, sleep, mood, or bloods at a glance.

Reports

Drop in DNA panels, blood results, lab PDFs. Klebbius reads them as context when you chat about your data.

Card types

A few card shapes,
lots of ways to use them.

Klebb cards come in a handful of shapes, each suited to a different kind of thing you might want to track. Pick the shape that fits; the dashboard takes care of how it looks.

Single number generic-card
⚖️ WEIGHT

83.6kg ▼ 0.6

7-day average 84.1 kg · goal 82.0

For anything you check once a day. Shows the latest reading, which way it's moving, and how close you are to a goal.

Good for weight, sleep score, resting heart rate, blood pressure, anything that's just one number a day.

Daily checklist checklist-card
💊 SUPPLEMENT STACK
  • Vitamin D3 5000 IU · morning
  • Magnesium glycinate 400 mg · evening
  • Creatine 5 g · morning
  • Omega-3 2 g EPA/DHA · with meals

A list of things you take each day. Tap the circle when you've taken one; tomorrow the list resets clean. Adherence is summed up automatically over time.

Good for supplement stacks, daily medications, morning rituals, evening wind-downs.

Schedule schedule-card
💉 INJECTIONS
  • BPC-157 0.25 mg · 5 units
    MTWTFSS
  • Ozempic 0.5 mg · 25 units
    MTWTFSS
  • Insulin (basal) 7.2 mg · 18 units
    MTWTFSS

One row per item, each with its own cadence and cycle. The ring on the left tracks where you are in the cycle; the dots show this week's plan; the circle on the right is today's dose, waiting to be ticked.

Good for injection protocols, multi-medication routines, anything with mixed daily, weekly, or on-and-off cadences.

Summary combination-card · rings
🌙 SLEEP & RECOVERY

One card that pulls together numbers from other cards in your dashboard. The rings layout draws each donor as a concentric gauge against its goal, so an overnight read is one glance.

Good for overnight summaries, training-day dashboards, a recovery-at-a-glance card that draws on sleep, HRV, and resting heart rate.

There's more: checklists, timelines, adherence summaries, charts, plain-text notes; mix as many cards as you like. Drop a JSON file, a card appears.

Klebbius chat

Talk to your data. Build cards by asking.

Klebbius is the chat agent that lives in the bottom-right corner of every page. Ask about your numbers, add an entry, or describe a card you want to exist. It writes the JSON, you eyeball the diff, it lands in your dashboard.

  • Chat about your data. Klebbius reads the same cards you do, so it can answer questions, draw comparisons, or spot a trend you'd miss eyeballing the dashboard.
  • Voice in, voice out. Tap the mic, ask anything, hear the answer back. Useful when your hands are full or you're wearing a sling.
  • Build cards by description. "Make me a card for HRV with a 60 ms goal" turns into a draft JSON manifest; you confirm, it lands.
  • Suggested follow-ups. Each reply offers a handful of chips ("Show the data", "Combine cards", "Add a goal line") so you don't always have to know what to ask.
  • Bring your own model. Klebbius talks to any OpenAI-compatible endpoint: hosted, self-hosted, or running on a box under your desk. One bearer token per instance.

Klebb is LLM-first. It runs without Klebbius, but every card and edit becomes hand-authored JSON; the chat is where the day-to-day happens.

Health Auto Export Apple Health, on your dashboard

Your iPhone's health data,
without the walled garden.

Klebb plugs into Health Auto Export, a third-party iOS app that reads from Apple Health and pushes the data wherever you tell it to. Point it at your Klebb instance and every workout, sleep night, step count and heart-rate reading flows in automatically: same JSON-on-disk model as the rest of your dashboard, no Apple cloud required.

  • Workouts & activity. Steps, exercise minutes, distance, calories, heart-rate splits, every session.
  • Sleep & recovery. Time asleep, deep / REM / core breakdown, HRV, resting heart rate, blood oxygen.
  • Body & vitals. Weight, body fat, blood pressure, mindful minutes, walking heart rate average.
  • Subscribe by manifest. Add "ingest": { "source": "hae", "metric": "..." } to a card and Klebb wires it up. Many cards can share one metric.

Reports

Drop in a lab PDF,
get a smarter chat.

Klebb takes more than just numbers. Upload your DNA panel, your latest blood test, an MRI summary, a clinician's letter; Klebbius (the optional chat agent) reads them all as context, alongside your tracked manifests.

  • Bring any PDF or text. Lab reports, genomic panels, clinic letters, supplement labels.
  • Stays on your machine. Reports live next to manifests, never leave unless you ask the agent.
  • Cited answers. Chat replies link back to the report and the relevant line.

From the maker

A blog about building, breaking, and fixing.

Klebb is built by the author of makeitbreakitfixit.com: confessions of a backyard inventor, write-ups of side projects, and the occasional rant about why software gets in its own way. If you like Klebb, the blog is the same flavour, longer-form.

Read the blog

Get started: free, forever

Run your own instance.

Klebb is free and open source under AGPL-3.0: no licence fee, no subscription, no paid tier. It's a single binary's worth of code and a directory of JSON files. The fastest way to try it is Docker; the most flexible is a systemd unit on whatever Linux box already runs your other things.

With Docker

docker run -d \
  --name klebb \
  -p 10002:10002 \
  -v $HOME/klebb-data:/app/data \
  -e HEALTH_RP_ID=klebb.local \
  ghcr.io/aristocles/klebb:latest

Multi-arch image (amd64 + arm64), published to GHCR on every release.

From source

git clone https://github.com/Aristocles/klebb.git
cd klebb
npm install
HEALTH_HOME=./data node server.js

Open http://localhost:10002, register a passkey, drop manifests into ./data.

View on GitHub Like what you see? Shout me a coffee Free & open source under AGPL-3.0. Issues and pull requests welcome.