A personal calorie, nutrition, and water tracker for iPhone, iPad, and Apple Watch. Everything logged is saved to Apple Health, there's no account to sign up for and data always remains yours.
Runs on iPhone, iPad, and Apple Watch (iOS 18 / watchOS 10 or newer).
Built 100% agentically with Claude Code.
- Calorie & nutrition tracking β your day at a glance: what you ate minus what you burned (Apple Health active + resting energy), with the calories you have left for the day.
- Weight goal β set a target weight and date. Onigiri works out the daily calorie budget to get there and projects your finish date from your real weight trend (smart scale β Apple Health).
- Barcode, label & food scanning β scan a product barcode or snap a photo of the nutrition-facts label, and calories and nutrients fill themselves in. On Apple Intelligence devices, photograph the food itself: Onigiri names the dish, lists its typical components, and estimates calories and sodium for your review β all on-device.
- Siri β "Log water in Onigiri," "Log chicken and rice in Onigiri," "How many calories do I have left in Onigiri?": log water, saved meals, and favorite foods by voice, ask about your day, and (with Apple Intelligence) describe a food and confirm the estimate hands-free. The same shortcuts work from Spotlight, the Action button, and the watch.
- Fast logging β log foods and water in a tap or two. Every entry is editable, with swipe to edit or delete and one-tap undo.
- Custom meals β bundle the foods you eat together into a meal, then log the whole thing in one tap.
- Water tracking β set your serving size and daily goal; log from the app, a widget, the watch, or a long-press on the add button.
- Apple Watch app β log on the go from a Favorites-then-Recent list, check your balance at a glance, and add balance and water complications to your watch face.
- Widgets β a Today widget (small, medium, large) with your calorie ring and a one-tap Log button, plus a month-stats card, water and streak widgets, and a Control Center water button.
- Light & dark mode β the app and its widgets follow your system appearance (screenshots below are light mode).
| Foods | Goal | Calendar |
|---|---|---|
![]() |
![]() |
![]() |
Onigiri reads your weight, what you eat, and what you burn from Apple Health, then turns them into a daily goal you can act on.
- Set a goal β a target weight and date. Onigiri works out the daily calorie deficit you need to get there (burning more than you eat).
- Eat within your budget β your budget is your average daily burn minus that deficit. As you log food, the Today ring shows how much you can still eat today and stay on pace.
- Lose weight β finish each day at or under your budget and you hit the deficit; do it consistently and the scale follows.
Example. Your average burn is ~2,800 kcal/day and your goal needs a 350 kcal/day deficit, leaving a 2,450 kcal budget. You've eaten 2,300 so far, so the ring reads 150 kcal left β room for 150 more and you'll still land on your target deficit by bedtime.
kcal leftβ₯ 0 β on track (still losing at your target pace).- Over budget β you'll fall short of the pace for your target date (you may still lose, just slower).
- Eat nothing more and the deficit only grows β you'd stop losing only if you ate all the way up to your full burn (~2,800).
The Daily goal card shows the same thing from the deficit side: "245 of 350 kcal deficit" is what you've banked so far β the rest of the day's burn is still coming, which is why "245 banked" and "150 left to eat" both point at the same 350 target.
- SwiftUI apps for iOS and watchOS; shared
OnigiriKitSwift package for models and logic - HealthKit is the log store: every food/water log is written as Health samples (dietary energy, sodium, water). Weight and energy burn are read from Health. This gives free iPhoneβWatch log sync, visibility in the Health app, and zero lock-in.
- SwiftData stores only the library: foods, meals, goals, settings. Synced to the watch via WatchConnectivity.
- XcodeGen (
project.yml) generates the Xcode project β no.xcodeprojmerge conflicts.
See plans/PLAN.md for the full design and roadmap.
- Xcode 26 (Mac App Store), then:
sudo xcode-select -s /Applications/Xcode.app sudo xcodebuild -license accept xcodebuild -downloadPlatform iOS -downloadPlatform watchOS
brew install xcodegencp local.yml.example local.yml(set your team ID there for device builds; the empty default builds for the simulator)xcodegen generatein the repo root, openOnigiri.xcodeproj- Xcode β Settings β Accounts β add your Apple ID (free personal team is fine)
- On iPhone and Watch: Settings β Privacy & Security β Developer Mode β on
- For
scripts/deploy-phone.sh:cp scripts/local-devices.env.example scripts/local-devices.envand fill in your device name and watch IDs
Free personal team note: apps expire after 7 days β re-deploy weekly (βR with your phone connected, or scripts/deploy-phone.sh).
PolyForm Noncommercial 1.0.0 β read it, build it, modify it, and run it freely for any noncommercial purpose. Commercial use, including selling this app or a derivative of it, is not permitted. Releases through v2.2.0 were published under MIT and remain so.
Required Notice: Copyright (c) 2026 Micheal Waltz
The Onigiri name and icon identify this project and its official builds; distribute forks under a different name and icon. This is a personal project β issues are welcome, pull requests generally aren't (see CONTRIBUTING.md).






