Sign inSign up

drumsergio/ownhealth

By drumsergio

•Updated about 9 hours ago

Self-hosted health data layer you own: labs, records, genome, MCP server. AGPL.

Image
0

574

drumsergio/ownhealth repository overview

⁠OwnHealth

License

OwnHealth is a self-hosted health data layer you own. It keeps your lab results, medical records from any country, wearable data and genome findings in one place you run yourself. You read it in two ways: a web page, and an MCP server that lets an agent such as Claude Code answer "how is my health right now?" with a source behind every value.

There is no chat agent and no AI model inside OwnHealth. The agent is yours, and it sees only what its token allows.

You run it yourself.

OwnHealth: the family dashboard in the dark theme, with synthetic data

Status: pre-alpha. Expect breaking changes before 1.0. Upgrades keep your data: see the changelog⁠.

⁠What it does

In 0.3.0:

  • One dashboard for the whole family, one profile per person, with OK, Watch, Out, Stale or No data per body system
  • Lab reports read from PDFs into trendable values, each linked to its page and position on the page; anything uncertain waits in a review queue
  • Inboxes, so data arrives without an upload: a mailbox of its own (allowed senders go to their profile, everything else waits in quarantine until you release it), a watched folder for a scanner or a synced phone folder, Paperless-ngx, the Android share target and an iOS Shortcut
  • Local OCR for scans and photos, in the drumsergio/ownhealth:<version>-ocr image and the ocr compose profile, on CPU; every value it reads is checked against the page. Without it, scans wait for your own agent to read them over MCP
  • FHIR and IPS bundles, the Apple Health export, Health Auto Export, Gadgetbridge, Nightscout with a CGM summary, and manual entry
  • Genome findings from OwnGenome⁠: drug response, carrier status and risk variants, joined with your medications and labs
  • A drug check that quotes the CPIC guideline for your genotype next to your current medications and relevant labs
  • An MCP server with 10 tools, scoped per person and per token, with a citation behind every answer; connect with a token or with OAuth 2.1 (claude.ai and Claude Code, no client registration)
  • Passkeys, an append-only audit log, a full export, and restic backups with a scripted restore test
  • Dark theme, Spanish and English

Limits in 0.3.0. Lab PDFs are read with generic table rules plus one template, for the fictional LabNorte lab. Real lab layouts come later as contributed templates. The LOINC set is a curated subset of 202 codes, so a test outside it waits in review. OCR rows go to review unless a vendor template matches.

Later: imaging (DICOM), more wearables and US patient portals. See the roadmap⁠.

⁠Quick start

You need Docker with Compose v2. OwnHealth runs as one app container, a single Rust binary with the web UI built in (a 364 MB image), next to PostgreSQL 17. OCR is optional: the ocr profile adds a worker from the -ocr image (436 MB), see deploy/README.md⁠.

git clone https://github.com/GeiserX/OwnHealth.git
cd OwnHealth
cp .env.example .env
openssl rand -hex 32     # paste as OWNHEALTH_DB_PASSWORD in .env
openssl rand -hex 32     # paste as OWNHEALTH_APP_DB_PASSWORD in .env
openssl rand -hex 48     # paste as OWNHEALTH_SECRET_KEY in .env
openssl rand -base64 32  # paste as OWNHEALTH_SECRETS_KEY in .env (encrypts inbox passwords and tokens)
mkdir -p inbox && sudo chown 10001:10001 inbox   # the watched folder, writable by the app
docker compose up -d

Open http://localhost:8080⁠, create your account with a passkey, and import a lab report under Import & review. To have reports arrive by themselves, add a mailbox, the folder, Paperless-ngx or a phone under Inbox; the recipes⁠ cover each one.

Connect Claude Code with a token from MCP & access:

export OWNHEALTH_PAT=oh_pat_...   # the token you copied
claude mcp add --transport http ownhealth http://localhost:8080/mcp \
  --header "Authorization: Bearer ${OWNHEALTH_PAT}"

The app listens on 127.0.0.1 only. For HTTPS on your network, backups and restores, see deploy/README.md⁠. The full walk-through, with a demo family to look around first, is in docs/quickstart.md⁠.

⁠Intended purpose

OwnHealth is for personal record keeping and for showing values computed from published formulas, each with its source. It is information, not diagnosis. It does not tell anyone what to take or stop; pharmacogenomic results quote the published guideline and link it.

⁠Documentation

OwnGenome⁠ produces the genome findings OwnHealth shows. It turns a whole genome or a consumer chip into drug-response, carrier and risk findings; OwnHealth ingests them and joins them with your medications and labs.

⁠License

AGPL-3.0-or-later⁠

Tag summary

Content type

Image

Digest

sha256:107e35c1f…

Size

103.6 MB

Last updated

about 9 hours ago

docker pull drumsergio/ownhealth:0.3-ocr