A voice-powered ChatGPT client for Apple Watch that provides seamless AI chats through speech recognition and text-to-speech synthesis.
- Voice Input: Record audio and get instant transcriptions via OpenAI Whisper
- AI Chat: Powered by ChatGPT for intelligent chats
- Text-to-Speech: Hear responses with customizable voice synthesis
- Watch-Optimized UI: Designed specifically for Apple Watch interaction
- Secure API: Uses Vercel proxy for secure OpenAI API access
- Real-time Status: Live connection status indicator
- Chat History: Save and manage multiple chats
- macOS with Xcode installed
- Apple Watch Simulator or physical Apple Watch
- Vercel account (for API deployment)
# Clone the repository
git clone <your-repo-url>
cd Whisperer
# Setup development environment (installs watchOS SDK if needed)
make setup
# Build and run on simulator
make runmake setup # Set up development environment (install Xcode and watchOS SDK)
make build # Build the watchOS app
make install # Build and install app on Watch Simulator
make run # Build, install, and launch app on Watch Simulator
make debug # Build, install, and launch app ready for debugging
make deploy # Deploy Vercel API endpoints
make list-simulators # List available Watch Simulators
make clean # Clean build artifacts
make open # Open project in Xcode
make help # Show help message- APIService: Manages OpenAI API connections with continuous health monitoring
- AudioManager: Handles voice recording and audio processing
- ChatManager: Manages chats and message history
- VoiceSynthesis: Provides text-to-speech functionality
- Settings: User preferences and configuration
The app uses a Vercel-hosted proxy for secure OpenAI API access:
- Chat API:
/api/chat- ChatGPT completions - Transcription API:
/api/transcribe- Whisper audio transcription - Status API:
/api/stats- Health check endpoint
For secure API key management and production deployment, see README-VERCEL.md for detailed setup instructions.
# Install Vercel CLI
npm install -g vercel
# Deploy API endpoints
make deployUpdate the Vercel deployment URL in APIService.swift:
private let baseURL = "https://your-vercel-app.vercel.app"Set in your Vercel dashboard:
OPENAI_CHAT_API_KEY=your_openai_chat_key
OPENAI_TRANSCRIBE_API_KEY=your_openai_transcribe_key
OPENAI_CHAT_MODEL=gpt-4o-mini
WHISPERER_REQUEST_SIGNING_SECRET=your_long_random_secret
WHISPERER_CLIENT_ID=whisperer-watch
# Optional fallback:
# OPENAI_API_KEY=legacy_key_for_all_endpoints
Set this in the watch app Info.plist (or Xcode build setting for Info.plist key):
WHISPERER_API_SIGNING_SECRET=must_match_vercel_WHISPERER_REQUEST_SIGNING_SECRET
Whisperer/
├── Whisperer/ # iOS/watchOS app source
│ ├── APIService.swift # API communication
│ ├── AppView.swift # Main UI
│ ├── AudioManager.swift # Audio recording
│ ├── ChatManager.swift # Chat logic
│ └── ...
├── api/ # Vercel API functions
│ ├── chat.js # ChatGPT proxy
│ ├── transcribe.js # Whisper proxy
│ └── stats.js # Health check
└── Makefile # Build automation
# Clean build
make clean
# Build only
make build
# Run with debugging
make debug
# List available simulators
make list-simulators- High-quality audio recording optimized for Apple Watch
- Real-time audio level monitoring
- Automatic transcription via OpenAI Whisper
- Context-aware ChatGPT responses
- Chat history management
- Customizable response length and behavior
- Multiple voice options
- Adjustable speech rate
- Automatic playback of AI responses
- Minimalist design optimized for small screens
- Real-time connection status indicator
- Intuitive gesture-based navigation
- Settings panel for customization
- Build Failures: Run
make setupto ensure all dependencies are installed - API Connection Issues: Check Vercel deployment and API key configuration
- Simulator Issues: Use
make list-simulatorsto see available devices
# Launch with debugger attached
make debug
# View detailed logs in Xcode consoleContributions and suggestions are welcome! The source is public so the community can review it and help improve it.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly with
make run - Submit a pull request
Note: forks are permitted only for the purpose of submitting contributions back to this project. By submitting a contribution you agree to the terms in the LICENSE.
Copyright (c) 2024-2026 Alex Spaulding. All rights reserved.
Whisperer is source-available but not open source. You may view the code and fork it to contribute improvements back, but you may not use, sell, redistribute, deploy, or incorporate it into other software. See the full LICENSE for details. For commercial or other permissions, contact the author.
For issues and questions:
- Check the troubleshooting section
- Review Vercel deployment logs
- Open an issue on GitHub