// the find
thetahealth/mirobody
Your Data, Your AI — Health, Finance & More. Open Source, Privacy-First.
Mirobody is a self-hosted Python platform that connects personal health data (wearables, EHR, Apple Health) to LLMs via an MCP server and a custom agent engine. It handles the hard parts of health data: FHIR mapping, LOINC/SNOMED/RxNorm vocabulary, normalization across 300+ device integrations, and pgvector-based indicator search. It's aimed at developers who want to build personal health AI without shipping their data to a third party.
The health vocabulary layer is genuinely substantial — embedding-based free-text to LOINC/SNOMED/RxNorm code resolution with a concept graph is real infrastructure, not a thin wrapper. The MixAgent two-phase design (one model handles tool calls, a cheaper model writes the response) is a practical cost optimization you'd want anyway and it's implemented explicitly rather than left as an exercise. The MCP server exposes tools over HTTP with OAuth and generates both REST and MCP bindings from plain Python docstrings, which is the right abstraction. The health data pipeline handles multi-format file ingestion — PDF, CSV, Excel, audio, genetic data — with LLM-powered indicator extraction, which is exactly the messy real-world problem that makes health integrations painful.
The frontend is shipped as pre-built minified JS blobs committed to the repo with no source — you cannot modify or contribute to the UI, which undercuts the 'open source' framing significantly. A platform positioning itself as 'privacy-first' has a hardcoded demo password of `777777` documented in the README, which is a bad signal regardless of intent. The tests require a running server and a pre-configured demo account with no isolation, meaning you can't run any meaningful verification without a full local deployment — the most complex logic (agent orchestration, indicator resolution) has no unit-level coverage. The boundary between the open-source engine and the commercial Theta Wellness product is blurry; the repo is structured as a product showcase as much as a reusable library, which makes it harder to adopt just the parts you want.