On-device iOS AI assistant starter built for voice sessions, reminders, notes, widgets, and App Intents with Gemma-ready architecture.
GitHub Search Keywords: ios ai assistant, gemma ios app, swiftui voice assistant, on device ai, app intents, live activities, ios productivity app, mediapipe gemma
Buddy is an App-Store-safe starter repo for building a custom on-device iOS assistant with Gemma. The app focuses on daily productivity tasks like note capture, reminder creation, quick task summaries, and lightweight voice interaction on modern iPhones.
This repo intentionally does not claim unsupported iOS behavior like a permanent system overlay or continuous 24/7 background listening. Instead, it implements the closest compliant experience: a SwiftUI app, App Intents, widget entry points, a Live Activity during active sessions, local storage, and an on-device Gemma adapter wired for MediaPipe LLM Inference.
- SwiftUI app scaffold with conversation, onboarding, settings, and quick capture flows
BuddyCoreframework for assistant models, prompt assembly, wake phrase matching, response decoding, and JSON-backed stores- App Intents for
Talk to Buddy,Quick Note, andNew Reminder - Widget + Live Activity extension
- EventKit-backed reminder creation and local file-backed notes
- MediaPipe-ready Gemma engine adapter with a preview fallback for local development
- GitHub-ready docs, templates, CI, and release checklist
BuddyApp/
Sources/
BuddyApp/ SwiftUI app + iOS services
BuddyIntents/ App Intents shared by app and widget
BuddyShared/ Shared ActivityKit types
BuddyWidget/ Widget + Live Activity extension
Support/ plist and entitlement files
Tests/ app unit and UI tests
BuddyCore/
Sources/BuddyCore/ platform-neutral assistant domain logic
Tests/BuddyCoreTests/
docs/
.github/
project.yml
Podfile
- Wake phrase detection is scoped to an active voice session.
- Voice capture starts only after user action from the app, widget, or shortcut.
- The assistant name defaults to
Buddyand can be renamed. - Notes stay local on device.
- Reminders are written into Apple Reminders after permission is granted.
- Model assets are not tracked in git.
- Install Xcode 15 or later on macOS.
- Install XcodeGen and CocoaPods.
- Clone this repo.
- Run
xcodegen generate. - Run
pod install. - Place your local Gemma model in
Models/. - Open
BuddyApp.xcworkspacein Xcode. - Build and run on a recent iPhone or iOS 17+ simulator.
See docs/setup-models.md, docs/architecture.md, and docs/roadmap.md for details.
The default integration target is a small on-device Gemma variant suited to phone-class hardware:
FunctionGemma 270Mas the action-routing default- MediaPipe LLM Inference on iOS via the
MediaPipeTasksGenAIandMediaPipeTasksGenAICCocoaPods
Keep model assets outside git in Models/. The app falls back to a preview engine when no local model file is present so the UI and flows can still be developed.
GitHub Actions will:
- generate the Xcode project with XcodeGen
- install CocoaPods dependencies
- fail if tracked model binaries appear under
Models/ - run unit and UI test targets on an iOS simulator
- No system-wide overlay on top of other apps
- No always-listening background hotword detector
- No server-hosted inference in v1
- No long-term autonomous memory
