gitmyhub

horseflow

Python ★ 0 updated 3d ago

Self-hosted push-to-talk dictation with local Whisper and LLM cleanup

A self-hosted push-to-talk dictation tool that transcribes speech locally with Whisper and cleans it up with a local language model.

PythonWhisperOllamaDockerTailscalesetup: hardcomplexity 4/5

Horseflow is a self-hosted dictation tool that lets you talk instead of type. You hold down a hotkey, Ctrl+Space on Linux or Command+Space on Mac, speak while it is held, and when you release it, the spoken words are transcribed and pasted into whatever application you have focused. Everything runs on your own hardware rather than sending audio to a cloud service or requiring any account.

Speech is transcribed locally using a model called Whisper, and a separate local language model running through Ollama then cleans up the raw transcription, fixing punctuation and removing false starts and stumbles in speech. The whole pipeline, from hotkey press to pasted text, happens without any internet connection required, though the server and the client that listens for the hotkey can run on the same machine or on separate machines connected over a private network such as Tailscale.

Running the server requires a Linux machine with Docker installed and an NVIDIA graphics card with enough video memory, roughly 11 gigabytes, to run both the Whisper transcription model and a compact large language model at the same time. The Linux client listens for keyboard input directly and records audio through PipeWire, while the separate macOS client is a native application that uses Apple's own frameworks to capture the hotkey, record from the microphone, and paste the result, requiring the user to grant accessibility, input monitoring, and microphone permissions.

The project notes that Horseflow itself has no built in login or authentication, so it should only be exposed to your own computer or a trusted private network rather than made available publicly. The project's own source code is released under the MIT license, though the Whisper model, Ollama, and any downloaded model weights carry their own separate licenses.

Where it fits