Personal Health Ledger

Personal Health Ledger keeps a private timeline of feelings, measurements, events, administrations, safety notes, and plan changes. It can help prepare a clinician-ready summary while keeping observations separate from medical conclusions.

Personal Health Ledger journey view showing health signals over time and a private timeline.
The journey view preserves each signal's units and chronology instead of collapsing unlike observations into one score.

Why It Was Made

Sensitive personal data needs a clearer boundary than a generic CRUD sample. This example uses user-scoped storage, explicit research origins, specialist authority, a bounded MCP drafting tool, and VFS export while refusing to turn timing or model output into a diagnosis.

Surface Map

SurfaceWhat this example declares
UIWorkspace-left placement with user scope, one retained instance per workspace
Storagepersonal-health-ledger under the current user's package authority
External researchBounded HTTP access to NCBI, ClinicalTrials.gov, and FDA sources
SpecialistPackaged Personal Health Researcher contribution
QuickJS MCPdraft_administration tool for structured drafts, not direct ledger writes
Host APIsPrivate channel creation, specialist membership and invocation, and VFS writes
EventsSurface mount, surface unmount, and ledger changed

The code uses sdk.authorization, sdk.channels, sdk.http, sdk.specialist, sdk.storage, and sdk.vfs. The permission catalog separates view, manage, research, export, network, channel, specialist, and VFS authority.

Design Boundaries to Notice

  • The MCP tool can draft structured administration data, but the desktop surface revalidates it and requires confirmation before changing the ledger.
  • Research uses an explicit allowlist of public evidence sources.
  • Export is a separate authority from viewing or managing the private ledger.
  • Specialist output records source and tool receipts so a later reader can distinguish evidence from generated interpretation.

What to Read in the Code

Run It Locally

pnpm --filter @tap-examples/personal-health-ledger dev

Link apps/personal-health-ledger/.tap-package once. The desktop and QuickJS targets refresh through one watched package graph. Research and export still require their declared host authority.

Browse the source or return to the example gallery.