A blazing fast transcription app with smart formatting, powered by Deepgram.
- Menu bar status item (Settings + Quit)
- Minimal settings window (API key + language)
- Push-to-talk hotkey (hold to record)
- Listening overlay
- WebSocket streaming to Deepgram
- Logs tab for connection/debugging
- Auto-paste transcript on release (requires Accessibility permission)
- macOS 13+
- Xcode or the Swift toolchain that ships with your current macOS
Package a .app bundle for permanent install:
bash package_app.shThis creates VibeScribe.app in the repo root. Move it to /Applications, launch it once, then add it to Login Items to run at login (System Settings > General > Login Items).
To customize the bundle name, id, or version, edit version.env.
Sign up for a free Deepgram API key at https://console.deepgram.com (new accounts typically include ~$200 in free credit).
From source (development):
swift runswift buildbash scripts/test.shRequires xcbeautify:
brew install xcbeautify- Launch the app (it appears in the menu bar).
- Open the main window and paste your Deepgram API key.
- Hold the Option hotkey to listen while pressed (push-to-talk).
- Tap the Option hotkey to toggle listening on/off.
- The app restores your previous clipboard contents after pasting the transcript.
- Microphone access is required.
- For global hotkeys, macOS may prompt for Input Monitoring or Accessibility permissions.
- Hotkey:
Sources/VibeScribeCore/HotkeyListener.swift - Overlay UI:
Sources/VibeScribeCore/UI/OverlayView.swift - Deepgram model/language options:
Sources/VibeScribeCore/DeepgramClient.swiftandSources/VibeScribeCore/DeepgramLanguage.swift
Issues and PRs are welcome.
- Open an issue describing the change or bug.
- Keep changes focused and avoid adding backward-compatibility logic unless needed.
- If you add tests, include updates in the same PR and run
bash scripts/test.sh.
MIT license. In short, you can use, modify, and distribute the code (including commercially) as long as you keep the copyright notice and license text, and there is no warranty. See LICENSE.
This is intentionally minimal to keep the architecture easy to extend. The API key is stored in UserDefaults in plaintext for convenience.
