docs
Build it yourself
The only requirement is a running Docker Desktop. Nothing is installed on the machine: no Go, no compilers, no packaging tools.
Updated · Vitalii Yemets
One script
git clone https://github.com/Vitalii-Yemets/holdtotype cd holdtotype .\build.ps1 # small model, about 466 MB .\build.ps1 -Model medium # more accurate, larger
The result lands in dist/:
holdtotype.exetray client: Go, WinAPI, WebView2
whisper-server.exerecognition, whisper.cpp, static build
sherpa-server.exerecognition, sherpa-onnx, official static build, pinned and checksum-verified
sherpa-online-server.exestreaming recognition, sherpa-onnx, from the same pinned archive
llama-server.exethe editor model for post-processing, llama.cpp
models/the model you chose at build time
config.default.jsondefault settings
What the pipeline does
MinGW-w64 cross-compilation of whisper.cpp and llama.cpp inside a Linux container, the Go client with cgo for microphone capture, icon generation, installer packaging. All of it is in build/Dockerfile. Both engines are pinned to specific upstream versions, so builds stay reproducible.
Tests
Everything runs in containers too, nothing to install:
docker build --file build/Dockerfile --target gotest . # Go unit tests and go vet, Windows target docker run --rm -v "${PWD}:/w" -w /w node:20 sh -c "node test/build-page.js && cd test && npm i --no-save --silent jsdom && node ui.test.js" # the settings page in jsdom
client/internal/...— unit tests for the pieces that carry logic: version comparison, hotkey duplicates, per-application rules, replacements, voice commands, history, prompt chains, sound analysis, file hashes and the lists file.test/ui.test.js— the real settings page rendered in jsdom: section switching, the translation matrix, the prompt editor, rules, replacements, commands, history, model deletion, the first-run wizard, and no JavaScript errors.test/locales.test.js— every one of the eight languages carries every string the page and the program ask for.test/setup.test.js— the installer page: the steps, the model choice, the silent switches.client/internal/theme— every design keeps its own face, corners, level marks and lamps.
Then run your own build instead of the downloaded one. It is the same program, made from the same sources.