macSTT is a macOS-native speech-to-text app for dictation. It listens for a configured trigger, captures microphone audio, runs local speech-to-text, and types the final transcript at the current cursor location.
- Native macOS app instead of a browser-based dictation flow
- Local model lifecycle with visible readiness and download state
- Release pipeline that builds, notarizes, signs, and publishes a DMG
Download the latest macSTT release
Released builds install as a standard .app bundle and support Sparkle-based updates.
- Download the latest DMG and move
macSTT.appto/Applications. - Launch the app and grant microphone permission.
- Grant Accessibility permission so the app can type into other apps.
- Choose your trigger in Settings and wait for model status to reach
Ready. - Put the cursor in any app, trigger capture, speak, and let
macSTTtype the transcript.
# Build and run (kills any running instance first)
./run.sh
# Build only
swift build
# Run tests
swift testDevelopment builds run via swift run rather than a bundled .app.
run.sh will optionally codesign the debug binary if CODE_SIGN_IDENTITY is set:
CODE_SIGN_IDENTITY="Apple Development: Your Name (TEAMID)" ./run.shFeatures like Launch at Login require a bundled .app; in dev mode the control is shown but disabled.
- Model status is shown in Settings as
Initializing,Checking Models,Downloading Models,Loading Models,Ready, orError. - Models are stored under
~/Library/Application Support/macSTT/Models. - The app needs microphone permission for capture.
- The app needs Accessibility permission to type transcriptions into other apps.
# Generate Xcode project + build signed .app
fastlane mac buildOutput: build/macSTT.app
This path requires a local DEVELOPMENT_TEAM and a matching Developer ID signing identity. Sparkle is disabled for this local build path by default.
# Bump patch version, build, notarize, create DMG, publish to GitHub
fastlane mac releaseThis flow bumps the version in project.yml, builds a signed .app, notarizes it with Apple, creates a DMG, publishes to GitHub Releases, and updates the Sparkle appcast on the gh-pages branch.
Official release credentials are only needed for this path:
DEVELOPMENT_TEAM, FASTLANE_USER, APPLE_ID, FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD, SPARKLE_PUBLIC_ED_KEY
Apache 2.0. See LICENSE.