Playground/YapRun/README.md
On-device voice dictation for iOS and macOS, powered by the RunAnywhere SDK. All speech recognition runs locally — your voice never leaves your device.
runanywhere.ai/yaprun | TestFlight Beta | Free on the App Store — no account required
<p align="center"> </p>yaprun://startFlow, yaprun://playground, yaprun://kill for keyboard ↔ app communicationYapRun/
├── YapRunApp.swift # App entry point (iOS WindowGroup + macOS agent)
├── ContentView.swift # iOS home screen (status cards, model hub, history)
├── Core/
│ ├── AppColors.swift # Design tokens (dark theme, orange CTA)
│ ├── AppTypes.swift # Shared enums and type aliases
│ ├── ModelRegistry.swift # ASR model definitions and SDK registration
│ ├── ClipboardService.swift # Cross-platform pasteboard access
│ └── DictationHistory.swift # Local history persistence
├── Features/
│ ├── Home/ # Model cards, download progress, home VM
│ ├── Playground/ # Record → transcribe test bench
│ ├── Notepad/ # Voice-first text editor
│ ├── Onboarding/ # Multi-step guided setup (mic, keyboard, model)
│ └── VoiceKeyboard/ # Flow session manager, Live Activity, deep links
├── Shared/
│ ├── SharedConstants.swift # App group keys, Darwin notification names, URL scheme
│ └── SharedDataBridge.swift # App ↔ keyboard extension shared state via UserDefaults suite
├── macOS/
│ ├── MacAppDelegate.swift # Agent lifecycle, hub window, flow bar
│ ├── Features/ # macOS-specific views (hub, playground, settings, onboarding)
│ └── Services/ # Hotkey, text insertion, audio feedback, permissions
├── YapRunKeyboard/ # iOS keyboard extension (separate target)
└── YapRunActivity/ # Live Activity widget (separate target)
yaprun://startFlow). The app starts AVAudioEngine while foregrounded, keeps alive via Live Activity, then receives Darwin notifications (startListening / stopListening) from the keyboard to gate audio buffering and transcription.UserDefaults suite and Darwin notifications — no network calls.| Platform | Minimum | Recommended |
|---|---|---|
| iOS | 16.0 | 17.0+ |
| macOS | 14.0 | 15.0+ |
| Xcode | 15.0 | 16.0+ |
cd Playground/YapRun
open YapRun.xcodeproj
Select the YapRun scheme and your target device/simulator.
Build and run. The onboarding flow will guide you through microphone permission, keyboard setup, and model download.
Keyboard Extension: To use the custom keyboard on iOS, go to Settings → General → Keyboard → Keyboards → Add New Keyboard and select YapRun. Enable Full Access when prompted.
All models are downloaded from GitHub Releases and cached on-device:
| Model | Backend | Size | Best For |
|---|---|---|---|
| Fast (whisperkit-tiny.en) | WhisperKit / Neural Engine | 70 MB | Quick notes, low battery |
| Accurate (whisperkit-base.en) | WhisperKit / Neural Engine | 134 MB | Longer dictation, higher accuracy |
| Compact CPU (moonshine-tiny-en-int8) | ONNX / sherpa-onnx | 118 MB | When Neural Engine is busy |
| Whisper CPU (whisper-tiny.en) | ONNX / sherpa-onnx | 75 MB | Maximum device compatibility |