3.3 Installing On A Remote Linux Host

Use this route when Emacs runs on a Linux host and speech plays on your workstation through an SSH reverse forward. It also works for remote-only Emacs under WSL, without Windows interoperability. Remote access is a preview feature. The workstation needs Omnivox 1.18.0 or newer, including --serve.

After cloning Emacsvox on the Emacs host, run:

cd ~/src/emacsvox
./bin/emacsvox-install --role remote-emacs --check
./bin/emacsvox-install --role remote-emacs

The first command reports prerequisites and paths without changing files. The second reuses Emacs 30.2 or newer and compiles Emacsvox. If Emacs is missing, it checks the local apt candidate and suggests sudo apt install emacs-nox when that version is suitable. To choose the source build instead, run ./bin/emacsvox-install --role remote-emacs --build-emacs. Add --check to inspect build prerequisites first. The checksum-verified GNU Emacs 31.1 source is built as a terminal-only installation under ~/.local/opt/emacs-31.1-terminal. Other Linux distributions currently need an existing Emacs 30.2 or newer. A supported GUI Emacs can also be reused. Explicit EMACS and local.mk selections are preserved; if they conflict or select an unsupported version, resolve the reported setting first.

No local Omnivox, sound device, GUI build packages, or Windows speech tools are required. Missing Debian/Ubuntu build packages are reported as one apt command for you to review and run. The installer never invokes sudo or changes a shell startup file. Build logs are kept below ~/.cache/emacsvox/logs, or the corresponding XDG_CACHE_HOME location.

Installation can finish before the workstation is connected. Follow Remote Workstation Speech to prepare its service, private token, and SSH reverse forward. Then run on the Emacs host:

./bin/emacsvox --remote --diagnose
./bin/emacsvox --remote --check
./bin/emacsvox --remote

Diagnosis reports local configuration without connecting or reading the token’s contents. The check connects both speech lanes, waits for workstation inventory and voice registration, and speaks a foreground announcement followed by a notification announcement. Confirm that both are audible. The last command starts an isolated terminal Emacsvox session.

The default forwarded endpoint is 127.0.0.1:6417. The token file defaults to ~/.config/omnivox/remote-token, respecting XDG_CONFIG_HOME when set. To select another forwarded port or private token path, supply environment values to the same command:

EMACSVOX_REMOTE_PORT=6418 \
EMACSVOX_REMOTE_TOKEN_FILE="$HOME/.config/omnivox/other-token" \
  ./bin/emacsvox --remote --check

EMACSVOX_REMOTE_HOST accepts only 127.0.0.1 or ::1. The token path must be absolute; its contents stay in the private file. Use the same settings when starting the session. Remote mode selects the Omnivox transport and skips local speech executable and playback probes; leave TTS_PROGRAM unset or set it to omnivox.

For updates, keep your speaking session open, pull the checkout with git pull --ff-only, and rerun the remote installer. It rebuilds byte-code with the selected Emacs. Perform the connected check while the workstation service is free, and test the updated session before closing the known-good one. A single service admits only one Emacs session at a time: use a separate test service or explicitly disconnect the old remote session before connecting its replacement.