HealthStack
Personal health intelligence — encrypted local-first observation capture, governed AI output envelope, sensitivity-tiered data sovereignty. Your data does not leave your machine without your explicit opt-in.
Personal health data lives in a dozen disconnected portals — one for labs, one for prescriptions, one for the hospital stay from three years ago. No longitudinal record. No privacy controls. No ability to correlate a lab trend with a medication change made six weeks prior.
A local-first, encrypted SQLite stack. Every observation is a governed fact row with a single registry entry. AI can observe and propose — never silently write. Sensitivity tiers determine what can leave the device. Context at the time of capture is preserved permanently.
Observation registry schema with five fact tables, AI output envelope standard, build toolchain with encrypted migration support, DuckDB analytics attach layer, and a capture model with a 30-second ceiling and save-first invariant.
Every AI output carries exactly one of three postures. No escape hatch. No unsolicited writes. Sensitivity inherits from the source observations. Confidence is derived from evidence count — never model-supplied.
Raw captured fact. Immutable once saved. Source and timestamp are the authority.
Pattern derived from two or more observations. Confidence is evidence-count, never model-supplied.
Ratifiable action or data row proposed by the AI extractor. Requires explicit human acceptance before writing.
Numbers commit before context is written. Context that gates a write eventually stops logging.
Capture must complete in under 30 seconds. Only timestamp and one value are required.
Observations are never edited in place. Corrections forward through new events — source is immutable.
AI cannot write to the registry. Every proposed row requires explicit human acceptance.
A derived fact inherits the highest sensitivity class of its source observations — no downgrade.
Analytics attach is read-only enforced. A write through DuckDB would bypass every trigger invariant.
SQLite was chosen over DuckDB as the write engine for one reason: triggers. Engine-enforced invariants — append-only, status transition validation, FK integrity across fact tables — are not available in DuckDB. DuckDB attaches the same file as READ_ONLY for analytics. The separation is load-bearing: it means the analytics layer can never bypass the write-path invariants, no matter how it is queried.
HealthStack · v0.1 · Local-First Personal Health Intelligence · Built by DDL · 2026