Talk instead of type. Anywhere on your Mac.
STTBar is a native macOS menu-bar app that turns your voice into clean, ready-to-paste text. Press a global hotkey, speak, press again: your words are transcribed with Whisper, optionally polished by an LLM, and pasted straight into whatever app has focus. No browser tab, no account, no subscription.
Typing is the bottleneck. Whether you are prompting an AI assistant, answering a customer, or drafting documentation, speaking is several times faster than typing. STTBar removes every step between your thought and the text field: one hotkey to start, one to stop, and the finished text appears at your cursor.
It was born from a very practical need: dictating long, structured prompts to coding agents without touching the keyboard. That is why STTBar ships with agent-ready cleanup prompts that turn rambling speech into precise, structured instructions, in German or with English output.
Your audio stays under your control. Run everything on-device with Parakeet or WhisperKit, point STTBar at your own self-hosted Whisper server, or use any Whisper-compatible API. Fully offline operation is a first-class setup, not an afterthought.
- Press your hotkey. A compact HUD with a live waveform appears and STTBar starts recording.
- Speak. Say what you want to write: a prompt, an email, a commit message, a support reply.
- Press again. Whisper transcribes, the optional LLM pass strips filler words and tightens the structure, and the result lands in the focused app.


![]() |
![]() |
![]() |
![]() |
- Three dictation modes on separate global hotkeys: full cleanup, raw transcript, and English output (speak German, paste English). English output requires an enabled, working LLM endpoint; unavailable translation is reported instead of silently inserting the original language.
- Transcription your way: fully on-device with NVIDIA Parakeet (default, about one second for three minutes of speech on an M1 Max, 25 European languages) or a WhisperKit model, loaded and warmed at app launch so the first dictation does not wait. The very first load takes 1 to 5 minutes once (download and preparation for the Neural Engine); after that the model is ready in about a second on every app start. Or transcribe on your own server via the included Docker Compose file, or any Whisper-compatible endpoint, in your network or on the internet, with an optional API key.
- Optional LLM cleanup with a local model (LM Studio, Ollama) or a hosted one through any OpenAI-compatible API such as OpenRouter, with an optional API key. In cleanup mode, the optional raw fallback inserts the original transcript if the LLM is unreachable. Turn it off to require successful cleanup.
- Built-in Agent V4 prompt presets for German and English-output workflows, plus a full prompt editor with profiles for your own presets.
- Live HUD with waveform and phase timeline, so you always see whether STTBar is recording, transcribing, or cleaning up.
- Vocabulary replacements that get names, jargon, and product terms right every time.
- Transcript history with privacy controls, and a sensitive mode that keeps dictations out of history. The native pipeline keeps the last result in memory instead of a temporary transcript file. Temporary native audio is removed after success, errors and cancellation. Expired history is removed while the app runs and when it next starts.
- German/English interface switch that also aligns the Whisper language and the active prompt.
- Native Swift menu-bar app: fast, small, and quiet. No Electron.
- macOS 14 Sonoma or later.
- A Mac with Apple silicon for the prebuilt release (it is built for arm64).
- To build from source: Xcode 16 or later (WhisperKit needs the macOS 15 SDK).
- Optional: a Whisper-compatible server instead of on-device transcription, and a local or hosted OpenAI-compatible endpoint for the LLM cleanup.
-
Download
STTBar.app.zipfrom the latest release. The app is signed with a Developer ID and notarized by Apple. -
Optional: compare the checksum with
STTBar.app.zip.sha256from the same release:shasum -a 256 STTBar.app.zip
-
Unzip the file and move
STTBar.appto/Applications. -
Open STTBar. Allow microphone access when asked, and enable STTBar under System Settings > Privacy & Security > Accessibility so it can paste the text into the focused app. Without Accessibility permission, copy the result from STTBar and paste it manually.
git clone https://github.com/ProjectMakersDE/STTBar.git
cd STTBar
bash install.shThe installer builds STTBar.app, installs it to /Applications when
possible, copies the backend scripts to ~/.local/share/stt, and starts the
LaunchAgent.
Open the menu-bar microphone icon and choose Settings… (Einstellungen…).
Use the Language / Sprache switch (menu bar or General tab) to run the whole
app in German or English.
Key settings:
- Whisper URL, for example
http://localhost:8082/v1/audio/transcriptions. - Whisper model, for example
Systran/faster-whisper-large-v3-turbo. - Optional LLM cleanup URL, model, provider, and timeout.
- Optional API keys for the Whisper server and the LLM endpoint.
- Prompt presets and active prompt.
- Hotkeys and HUD position.
The app stores these values in its sandbox container:
~/Library/Containers/de.projectmakers.sttbar/Data/Library/Application Support/STTBar/.env.
API keys are the exception. STTBar keeps them in the macOS keychain, filed under
the server's host name, and sends a key only to that host. They never go into
.env, its backups, profiles or exports.
- Create an API key at openrouter.ai.
- In Settings > Server, click
Use OpenRouter. This sets the LLM URL tohttps://openrouter.ai/api/v1/chat/completionsand the provider to OpenAI-compatible. - Paste the key into
API key, enter an OpenRouter model ID and clickApply.
Any other OpenAI-compatible service works the same way: its
/v1/chat/completions URL, its model ID and, if it needs one, its key.
The included docker-compose.yml starts a Speaches/faster-whisper server from
the CUDA image and reserves one NVIDIA GPU. It needs a host with an NVIDIA GPU
and the NVIDIA Container Toolkit, so it does not run on a Mac. On a Mac, use the
on-device transcription instead.
docker compose up -dSet STT_DOCKER_PORT and STT_MODEL in .env if needed, then set the Whisper
URL in STTBar to http://your-whisper-host:8082/v1/audio/transcriptions.
Every feat, fix or perf commit on master publishes a GitHub Release with STTBar.app.zip,
stt-scripts.zip, and matching SHA256 files. To update, either download the
latest release and replace STTBar.app, or pull the repository and rerun the
installer:
git pull
bash install.shYour configuration in the app container is not touched by updates.
swift test --package-path macos-app
for t in tests/*.sh; do bash "$t"; done
bash macos-app/build-app.sh /tmp/sttbar-build-checkReleases use Conventional Commits and Semantic Release on master.
STTBar has no account, no analytics and no tracking. Audio and text stay on your Mac unless you enter your own Whisper server or LLM endpoint. Details: Privacy Policy.
Questions and bug reports: GitHub Issues.
STTBar is free to use and its source code is public, under the PolyForm Shield License 1.0.0. You may use it at home and at work, build it yourself, change it and share copies together with the license. You may not sell STTBar or offer it, or a version built from it, as a product that competes with STTBar, even for free.
This makes STTBar source-available rather than open source in the OSI sense.



