docs
The only requirement is a running Docker Desktop. Nothing is installed on the machine: no Go, no compilers, no packaging tools.
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
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.
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.