HoldToType

docs

Reference: config.json, command line, files and ports

Everything the program reads and writes, for when the settings window is not enough: the keys in config.json, the command-line flags, the files in the folder and the ports the engines listen on.

Updated · Vitalii Yemets

config.json

Plain text in the program's folder. Edit it by hand and press Re-read in the System section, or let the window write it.

dictation

keywhat it doesdefault
hotkey

The combination that starts a dictation.

"ctrl+win"

hotkey_mode

hold or toggle.

"hold"

language

The language you speak. Decides which model is used.

"auto"

lang_models

Which model serves which language, as a map.

{}

min_record_ms

Shorter presses are ignored as accidental.

300

max_record_seconds

A hard stop, so a stuck key cannot record forever.

120

whisper_prompt

The dictionary hint given to Whisper models.

a starter set

insertion

keywhat it doesdefault
paste_mode

clipboard, or type for character by character.

"clipboard"

restore_clipboard

Put the clipboard back after pasting.

true

auto_enter

Press Enter after inserting.

false

paste_delay_ms

Extra wait before the paste, for slow windows.

0

replacements

The list of what to fix after recognition.

[]

commands

Voice commands and what each does.

[]

engines

keywhat it doesdefault
stt_source

local, or remote to send audio to server_url.

"local"

server_url

The address of a recognition server on another machine.

""

server_exe

Path to whisper-server.

"whisper-server.exe"

server_port

Loopback port for whisper-server.

8910

server_autostart

Start it yourself, or let the program do it.

true

sherpa_port

Loopback port for sherpa-server.

8912

stream_port

Loopback port for the streaming server.

8913

llm_port

Loopback port for llama-server.

8911

threads

CPU threads given to the recogniser.

4

engine_idle_minutes

Unload an engine after this many idle minutes.

10

post-processing

keywhat it doesdefault
post_enabled

Run prompts after recognition.

false

post_source

local or api.

"local"

post_api_url

Your endpoint, when the source is api.

""

post_api_key

Stored encrypted with Windows DPAPI, never in the log.

""

profiles

The prompts themselves, in order.

two presets

active_profiles

Which of them run.

[]

llm_model

Path to the GGUF editor model.

""

history, interface, updates

keywhat it doesdefault
history

Keep a history of dictations at all.

false

history_keep_min

How long an entry lives, in minutes.

10080

history_max

How many entries at most.

200

history_skip

Programs never recorded from.

""

ui_language

Interface language, or auto.

"auto"

skin

editor, fluent, studio, soft, paper, neon, terminal.

"editor"

theme

Colour inside the terminal design.

"green"

overlay

Show the plate while recording.

true

overlay_position

bottom, caret, or a saved place.

"bottom"

check_updates

Ask GitHub for a newer version at start.

false

config_version

Written by the program. Used for migrations.

5

Command line

All flags go to holdtotype.exe unless said otherwise. A second copy started with a flag talks to the running one and exits.

Everyday

flagwhat it does
-settings [tab]

Open the settings window, optionally on a tab: state, system, mic, history, dictation, models, text, post, help, about, contacts.

-quit

Stop the running copy, engines included.

-wizard

Run the first-run wizard again.

-uninstall

Remove an installed copy. Add -silent for no questions.

Checks

flagwhat it does
-listmics

Print every capture device with its index.

-miclevel

Print the input level, to see whether the microphone is heard at all.

-modelcheck

Verify every downloaded model against its reference hash.

-routecheck

Print which model would serve which language, and whether it can translate.

-replcheck "phrase"

Run the replacement rules over a phrase and show the result.

-transcribe file.wav

Recognise a file with the current settings and print the text.

-postcheck "text"

Send a sample through the prompt chain.

-testpaste "text"

Insert a string the way a dictation would, to test insertion alone.

-dpi

Print how Windows is scaling each monitor.

The installer, holdtotype-setup.exe

flagwhat it does
-silent

Install without a window.

-dir "path"

Where to install.

-model name

Download a model during the install: base, small, medium, turbo, gigaam, or none.

-lang xx

Interface language of the installer itself.

-uninstall

Remove, with -silent if wanted.

Files and folders

Everything lives in the program's folder. The last column says what an update does with each.

filewhat it ison update
holdtotype.exe

The program. Sits in the tray, owns the shortcut.

replaced

whisper-server.exe, sherpa-server.exe, sherpa-online-server.exe, llama-server.exe

The engines.

replaced

config.json

Every setting.

kept

config.json.vN.bak

A copy made once before each migration.

kept

models\

Everything downloaded, several gigabytes typically.

kept

holdtotype.log, holdtotype.log.old

One megabyte each, then it rolls over.

kept

holdtotype-history.json

Only if history is switched on. Text, never audio.

kept

%TEMP%\holdtotype-webview-*

Scratch for the settings window, removed on exit.

temporary

Ports and engines

The engines are ordinary HTTP and websocket servers bound to 127.0.0.1. They are not reachable from the network, and the program refuses to start one on a port another process already holds.

portengineprotocolruns while
8910

whisper-server

HTTP

a Whisper model serves the language

8911

llama-server

HTTP, session key

post-processing is on

8912

sherpa-server

HTTP

a sherpa model serves the language

8913

sherpa-online-server

websocket

a streaming model is chosen