HealthMule is an open-source iPhone and Apple Watch app that exports a small, read-only selection of Apple Health metrics as stable daily JSON files in your Google Drive.
- The iPhone owns HealthKit access, Google authorization, protected local staging, and Drive uploads.
- The Watch companion displays sanitized sync status and can request a sync while the phone is reachable.
- There is no developer backend, analytics, ads, or telemetry.
Implemented: the complete sync path, covered by deterministic core tests, Watch presentation-contract tests, and Simulator checks.
Unproven: HealthKit background delivery, real Drive uploads, and process-interruption recovery. Prove them with a signed build against the physical-device checklist.
Requirements:
- A full Xcode installation with the iOS 26 and watchOS 26 SDKs
- Matching iOS and watchOS Simulator runtimes for app builds and launches
- Swift 6
XcodeGen needs no separate install.
make project downloads the official release pinned in
scripts/install-xcodegen.sh, verifies its published SHA-256 digest, and keeps
it under .artifacts/toolchain.
Generate the project and launch the phone app in the first available iPhone Simulator. Xcode also builds and embeds the Watch companion:
make project
make runSet SIMULATOR_UDID to target a specific available simulator:
SIMULATOR_UDID=<simulator-udid> make runRun the unattended agent harness to boot a compatible iPhone Simulator, exercise the critical loading, sync, failure, and automatic-activity states, and retain screenshots plus a machine-readable test summary:
make harness- Each run writes a new directory under
.artifacts/agent-harness. - Set
HEALTHMULE_HARNESS_OUTPUTto place those artifacts elsewhere. - The fixtures are deterministic development data. They prove neither real HealthKit background delivery nor real Drive uploads.
The default build intentionally has no Google credentials. The UI and automated tests work in that state. Follow Google OAuth setup when you are ready to connect a Drive account.
Run make verify for the fast required gate. App and UI changes also need an
appropriate Xcode or Simulator check. The complete command matrix and pull
request expectations live in Contributing.
Releases are archived and uploaded by the manual, main-only GitHub Actions workflow rather than a developer Mac. See TestFlight distribution.
- HealthKit access is read-only and limited to the types in the product spec.
- The app has no developer backend, analytics, ads, or telemetry.
- Google access uses the narrow
drive.filescope. - Health values, OAuth tokens, exported records, and raw HealthKit metadata must never appear in logs or diagnostics.
- Local health staging, anchors, and saved day boundaries use file protection and are excluded from device backups.
- Google OAuth setup
- Physical-device acceptance testing
- Architecture and privacy boundaries
- Product and export contract
- TestFlight distribution
- Sync-store scaling decision
- Security reporting
Issues and pull requests are welcome. See Contributing for the development setup, validation commands, and privacy requirements.
HealthMule is available under the MIT License.
