ChatGPT on your wrist. For real.
A native watchOS client for ChatGPT with streaming chat, live voice conversations,
Codex coding tasks, and OpenAI text-to-speech — all from your Apple Watch.
- Streaming responses from GPT-5.4, GPT-5.3, GPT-4o, o3, o4-mini, and 14 more models
- Full conversation history persisted with SwiftData
- Quick prompt suggestions
- Message timestamps, model indicators
- Tap mic → speak → hear the answer — no typing needed
- Records audio on-device via AVAudioRecorder
- Transcribes with OpenAI Whisper API
- Sends to ChatGPT, speaks response with OpenAI TTS
- Full conversation loop: Record → Transcribe → Think → Speak → Repeat
- Animated waveform and phase indicators
- Every assistant message has a speaker button — tap to hear it read aloud
- Uses OpenAI TTS API (
tts-1model,alloyvoice) - Falls back to system
AVSpeechSynthesizerif API is unavailable - Auto-speak — responses are read aloud automatically when streaming finishes
- "Stop speaking" bar to cancel playback
- Run coding tasks on your Mac remotely from your wrist
- 8 project directories pre-configured
- Real-time task status tracking (queued → running → completed/failed)
- View code output, file changes, and diffs
- Relay health indicator with setup instructions
- Powered by Node.js relay server + Cloudflare Tunnel
- Built for watchOS 26 with Apple's design language
- Original ChatGPT logo throughout
- Dark theme with green (Chat) and purple (Codex) accents
- Horizontal swipe: Home ← → Settings
- Smooth animations and haptic feedback
ChatGPTWatch/
├── WatchApp/
│ ├── App/ ContentView (Home + Settings), AppState
│ ├── Views/ Chat, Codex, Settings, Voice screens
│ ├── Components/ MessageBubble, TypingIndicator, StatusBadge
│ ├── ViewModels/ ChatViewModel, CodexViewModel, SettingsViewModel
│ ├── Services/ OpenAIService, WhisperService, TTSService, CodexService
│ ├── Models/ ChatModels, CodexModels, SwiftDataModels
│ └── Utilities/ DesignTokens, Extensions, Constants
├── CompanionApp/ iPhone companion for API key setup
├── Widgets/ Circular, Rectangular, Inline watch widgets
├── codex-relay/ Node.js relay server for Codex CLI
└── Shared/ KeychainService, SharedModels
- Xcode 26+
- Apple Watch with watchOS 26+ (Series 6 or later)
- OpenAI API key (get one here)
git clone https://github.com/techygarry/ChatGPTWatch.git
cd ChatGPTWatch
open ChatGPTWatch.xcodeprojAdd your API key in WatchApp/Services/AuthService.swift:
private static let embeddedKey = "sk-proj-your-key-here"Select your Apple Watch, hit Run.
cd codex-relay && npm install && node server.js
cloudflared tunnel --url http://localhost:4819Update the tunnel URL in WatchApp/Services/CodexService.swift.
| UI | SwiftUI, watchOS 26 |
| State | @Observable, SwiftData |
| Chat | OpenAI Chat Completions API, SSE streaming |
| Voice In | AVAudioRecorder + OpenAI Whisper API |
| Voice Out | OpenAI TTS API + AVSpeechSynthesizer fallback |
| Storage | Keychain, SwiftData, UserDefaults |
| Codex | Node.js relay + Codex CLI + Cloudflare Tunnel |
Chat: GPT-5.4, GPT-5.3, GPT-5.2, GPT-5.1, GPT-5, GPT-4o, GPT-4o Mini, o3, o3 Mini, o4-mini, GPT-4.1, GPT-4.1 Mini, GPT-4.1 Nano, GPT-4.5
Codex: GPT-5.3 Codex, GPT-5.2 Codex, GPT-5.1 Codex, GPT-5.1 Codex Max, GPT-5.1 Codex Mini, GPT-5 Codex
PRs welcome. For major changes, open an issue first.
Built by @techygarry with Claude Code
