A revolutionary voice-first running assistant for Apple Watch, powered by AI coaching and real-time voice feedback. RunbotAIWatch is a companion app to the Runbot iOS app, offering a fully voice-led experience optimized for wrist interaction.
- Real-time voice coaching: AI-powered guidance during your run
- Scheduled AI feedback: Automatic coaching tips every 5 minutes (auto-terminates after 20s)
- Voice selection: Choose between Apple Samantha or GPT-4 Mini voice synthesis
- Natural conversation: Voice-led interactions for hands-free experience
- Tile-based display: Distance, pace, calories, elevation on quick-access tiles
- Real-time updates: Live stats during active run
- Visual feedback: Runbot infinity logo animation during coaching
- Start/Stop: One-tap run control
- Session management: Automatic termination of all AI sessions on stop or logout
- Safety protocols: All AI coaching ends immediately when user stops
- Coach Personality: Select from different coaching styles
- Coach Energy: Adjust coaching intensity (Low/Medium/High)
- Voice AI: Switch between Apple Samantha and GPT-4 Mini
- Session preferences: Customize feedback frequency and intensity
- Complete isolation: No dependencies on Runbot iOS code
- Shared backends: Uses same Supabase and AI services
- Clean separation: Easy to manage and update independently
- Companion connectivity: Optional Watch Connectivity when paired with iOS app
RunbotAIWatch/
โโโ RunbotAIWatch/ # Main app target
โ โโโ RunbotAIWatchApp.swift # App entry point
โ โโโ Views/ # SwiftUI views
โ โ โโโ ContentView.swift
โ โ โโโ RunningView.swift
โ โ โโโ StatsView.swift
โ โ โโโ SettingsView.swift
โ โ โโโ AuthView.swift
โ โโโ Models/ # Data models
โ โ โโโ RunDataModels.swift
โ โ โโโ AICoachManager.swift
โ โ โโโ VoiceManager.swift
โ โ โโโ UserPreferences.swift
โ โโโ Services/ # Backend services
โ โ โโโ SupabaseService.swift
โ โ โโโ OpenAIService.swift
โ โ โโโ LocationService.swift
โ โโโ Assets.xcassets/ # Images, animations
โ โโโ Config.plist # Configuration
โโโ Runbot AI WatchKit Extension/ # WatchKit extension (if needed)
โโโ Runbot AI Watch.app/ # Watch app bundle
## Safety & Compliance
### AI Session Safety
- โ
All AI sessions terminate when user taps Stop
- โ
All AI sessions terminate on logout
- โ
Scheduled coaching auto-terminates after 20 seconds
- โ
Voice synthesis stops immediately on interruption
- โ
Memory is cleared between sessions
### Data Privacy
- Uses same Supabase authentication as iOS app
- Encrypted communication with AI services
- No personal data stored locally on watch
- Session data synced to secure backend
## Setup
### Requirements
- watchOS 9.0+
- Xcode 15.0+
- Swift 5.9+
- Supabase account (shared with iOS app)
- OpenAI API key (shared with iOS app)
### Installation
1. **Clone repository** (or create in Xcode)
```bash
# This is a separate project
cd /Users/ranga/Desktop/Runbot/RunbotAIWatch
-
Open project
open RunbotAIWatch.xcodeproj
-
Configure
- Copy
Config.plist.templatetoConfig.plist - Add your Supabase credentials
- Add your OpenAI API key
- Copy
-
Build & Run
- Select "RunbotAIWatch (Watch) - WatchKit App" scheme
- Choose Apple Watch simulator or device
- Build and run
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
<key>SUPABASE_URL</key>
<string>your_supabase_url</string>
<key>SUPABASE_KEY</key>
<string>your_supabase_key</string>
<key>OPENAI_API_KEY</key>
<string>your_openai_key</string>
</dict>
</plist>- Tap Start on main screen
- Watch begins tracking GPS and stats
- Runbot animates with coaching feedback
- Voice feedback: Listen to AI coaching every 5 minutes
- Quick stats: Swipe to view running metrics
- Adjust settings: Tap settings icon (if needed mid-run)
- Tap Stop - immediately ends all AI sessions
- Confirms run saved to Supabase
- Returns to main screen
- Tap Settings icon from main screen
- Adjust coach personality, energy, and voice preference
- Changes apply immediately
- Uses AVSpeechSynthesizer for Apple Samantha
- Uses OpenAI TTS for GPT-4 Mini voice option
- All voice is non-interruptible during playback for safety
- Uses same prompt system as iOS app
- Scheduled feedback fires every 5 minutes during active run
- Feedback automatically stops after 20 seconds
- Safety: All voice/text generation stops on Stop button
- Updates every 2 seconds during active run
- Uses Core Location for GPS data
- Stores in Supabase for sync with iOS app
- Minimal CPU: Efficient voice processing
- Battery conscious: Optimized location updates
- Network efficient: Batches stats updates
- Memory efficient: Clears sessions immediately
- Verify Config.plist is present and valid
- Check Supabase credentials
- Ensure watchOS version is 9.0 or higher
- Check speaker volume (not muted)
- Verify VoiceManager is initialized
- Try switching voice preference in Settings
- Verify location permission is granted
- Check GPS signal strength
- Restart app if needed
- Companion app connectivity (iOS โ Watch sync)
- Custom coaching prompts
- Music integration
- Advanced metrics (VO2 Max, training load)
- Social features (leaderboards, challenges)
- Haptic feedback integration
Same as Runbot iOS app
For issues or feature requests, contact: support@runbotapp.com
Separate Codebase for Easy Management โจ
RunbotAIWatch maintains complete independence from Runbot iOS while sharing backend services.