Your whole health, in one place.
Website · Contribute · Security · MIT licence
Private, open-source, all-in-one health companion for iPhone (SwiftUI) and Android (Jetpack Compose): nutrition, workouts, health records, medications, a local mirror of Apple Health / Health Connect, fasting, water and an AI coach that runs on the API key the user brings, or on a model that stays on the phone. No account, no Ayuvo servers, no analytics.
Inspired by Fud AI by Apoorv Darshan. Ayuvo started from that MIT-licensed calorie tracker; its copyright notice is kept in
LICENSEand shown in the apps under Settings → Legal → Licenses.
| Area | What it does |
|---|---|
| Nutrition | Meals by photo (up to 10 at once), barcode (Open Food Facts), voice, text, saved meals or manual entry; review calories, macros and 30+ nutrients before saving; "What if?" previews; personalised targets (Mifflin-St Jeor / Katch-McArdle); custom meal times; nutrient goals and Home cards. |
| Workouts | Day-by-day diary with sets, reps, weight, RPE; calculated burn; 1,300-exercise library (shared/exercises) with photos/animations streamed from the upstream dataset. |
| Health data hub | Every Health Connect / HealthKit type the user grants, all history, mirrored into a local SQLite database (shared/health/schema.sql, metric_registry.json); Home tiles, category lists, D/W/M/6M/Y charts, Show All Data, Data Sources, unit options; export/import as ayuvo-health-data zips; never in cloud backups. Contract: docs/health-data.md. |
| Camera vitals | Manual finger scan (rear camera + torch, PPG) and face scan (front camera, remote PPG): heart rate, pulse intervals, HRV, respiratory rate, finger-vs-face compare, personal baselines and a recovery indicator. SpO₂ (experimental) and blood pressure (research) only after the user turns them on and calibrates against their own oximeter or cuff. Every value carries a classification and a confidence. Frames are processed on the device and never stored; scans are not written to Health. General wellness, not a medical measurement. Contract: docs/camera-vitals.md. |
| Cycle tracking | Opt-in period tracker: one-tap period start/end, calendar, daily flow, pain, symptoms, mood and notes, history, trend charts, discreet reminders, and calendar-based estimates of the next period, fertile window and ovulation (labelled as estimates; not birth control, never a diagnosis). Stored in its own local database excluded from cloud backups; optional read/write with Apple Health / Health Connect; Coach access only after consent. Contract: docs/cycle-tracking.md. |
| Fasting & water | Optional fasting timer (1–168 h) with editable history; optional water goals, reminders, widgets. Neither is written to Health. |
| AI coach | Multi-turn chat with tool calls over the user's own data (diary, workouts, weight trend, fasts, and Health data only behind a visible consent toggle). 15 BYOK providers, or on-device models (Gemma 4 E2B, Qwen3 and Google's MedGemma 1.5 4B, a gated research model under the Health AI Developer Foundations terms, not a medical device) / Apple Intelligence; see local-models/README.md; keys in Keychain / EncryptedSharedPreferences. |
| Platform | Apple Watch app + complications, iOS/Android widgets, Siri Shortcuts, iOS Share Extension, 18 languages, 18 accent tints with matching icons, Export/Import All Data zip on both platforms, which also moves a profile and its logs between iPhone and Android (docs/portable-data.md), plus optional Google Drive backup on Android (the Drive backup never includes health data or coach chat). |
Tabs on both platforms: Home · Health · Coach · Workouts · Settings. The Health tab switches between Progress (weight, body fat, calories, workouts) and Health Data (the hub).
Everything is stored on the device. Data leaves only when the user acts, and only to a service they chose:
| Flow | Sent | To | When |
|---|---|---|---|
| BYOK AI | photos, text, coach messages + requested context (health data only with the toggle) | provider the user configured | analyse / ask |
| Speech-to-text | audio clip | provider the user chose (or on-device) | voice input |
| Barcode | barcode number | Open Food Facts | scan |
| Exercise media | plain GET | raw.githubusercontent.com (© Gym visual) | browsing Workouts |
| Model download | plain GET | Hugging Face | tapping Download |
| Cloud backup (Android) | archive without health DB / chat | user's own Google Drive | toggle on |
| Google Health | OAuth sign-in; read-only health data downloaded | Google (accounts.google.com, oauth2.googleapis.com, openidconnect.googleapis.com, health.googleapis.com); Android custom-client mode also opens a one-shot 127.0.0.1 listener during consent |
connect, Sync now, app open if auto-sync on |
| Update check / review | none (public metadata) | Apple / Google | app open |
| OS backups | per OS settings; health DB and chat excluded | Apple / Google | — |
No analytics, crash or ad SDKs; no accounts; no first-party endpoints. Copy rule: never claim data "never leaves the device"; say "kept on this device, never stored in Drive backup, shared with your AI provider only through Coach".
ayuvo/
├── ios/ # SwiftUI app (target calorietracker), widgets, watch app, share extension, tests
├── android/ # Kotlin + Compose app (com.ayuvo.health), tests, docs
├── shared/ # exercises dataset + health registry/schema shared by both apps; shared/vitals = camera vitals DSP contract; shared/cycle = period tracker contract
├── web/ # static site (Firebase Hosting): landing, feature pages, privacy, terms, support. Generated by scripts/web_build.py
├── brand/ # mark geometry outputs, tints, fonts, brand README
├── scripts/brand/ # icon/marketing renderer (Pillow), scripts/web_check.py, scripts/brand_residue.py
├── scripts/web/ # site content + components, screenshot redaction, social cards (scripts/web_build.py builds web/)
├── marketing/ # logos, store graphics, screenshot storyboard + seed guide
├── docs/ # health-data contract, export format, cloud backup
├── local-models/ # on-device model catalog + third-party notices
├── APPSTORE.md · PLAYSTORE.md · RELEASE_NOTES.md · DEVELOPMENT.md · SECURITY.md
└── LICENSE · THIRD_PARTY_NOTICES.md · ASSET_CREDITS.md
# iOS
xcodebuild -project ios/calorietracker.xcodeproj -scheme calorietracker \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' build
# Android
export ANDROID_HOME=~/Library/Android/sdk
cd android && ./gradlew :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n com.ayuvo.health.debug/com.ayuvo.health.MainActivityFirst launch: onboarding (profile, goals, notifications, Apple Health / Health Connect with the Coach consent toggle, AI provider key). See DEVELOPMENT.md for tests, the web site, the brand pipeline, screenshots and the release checklist.
- Versions: iOS
MARKETING_VERSION/CURRENT_PROJECT_VERSIONinios/calorietracker.xcodeproj/project.pbxproj; AndroidversionName/versionCodeinandroid/app/build.gradle.kts. - Notes: add a
## vX.Ysection toRELEASE_NOTES.md(scripts/release_notes.pyrefuses to publish without it). - Tags:
vX.Y→ Xcode Cloud archive + GitHub release entry;android-vX.Y→ signed AAB uploaded to Play as a draft. - Store copy:
APPSTORE.md,PLAYSTORE.md; site:cd web && firebase deploy --only hosting.
Ayuvo is open source at github.com/astechtic/ayuvo. Code, translations, exercise data and docs are welcome: see CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.
MIT — see LICENSE. Ayuvo is inspired by, and built on, the MIT-licensed Fud AI code base; the original copyright notice is retained there and shown in the apps under Settings → Legal → Licenses. Third-party credits: THIRD_PARTY_NOTICES.md, ASSET_CREDITS.md, local-models/legal/.