Linux-native voice satellite runtime for Tater
See the codeA Linux-native voice satellite runtime for Tater.
This project turns a Linux computer, Raspberry Pi, or robot such as Reachy Mini into a dedicated Tater voice satellite. It detects wake words locally, streams speech to Tater, plays Tater's reply, and reconnects automatically if the network or Tater restarts.
The satellite connects outbound to Tater's native WebSocket protocol. Tater handles pairing, speech recognition, conversation, tools, text-to-speech, and device management; this runtime handles the local microphone, speaker, wake word, and optional peripherals.
A microphone array with onboard noise reduction and echo cancellation will usually give the best far-field results.
Open Tater, go to Satellites, choose Add Satellite, and keep the pairing code visible.
git clone https://github.com/TaterTotterson/Tater-Linux-Satellite.git
cd linux-voice-assistant
./script/setup
Replace the Tater URL and pairing code with your own:
./script/run \
--name "Office Satellite" \
--tater-url http://tater.local:8501 \
--tater-token 123456 \
--tater-token-file ~/.config/tater-linux-satellite/device-token \
--tater-device-id office-satellite \
--tater-board linux \
--tater-room office
The base HTTP URL is converted to Tater's native satellite WebSocket endpoint
automatically. After the first successful connection, the durable device token
is saved to --tater-token-file; later starts can omit --tater-token.
The satellite reconnects automatically when Tater or the network becomes available again.
When native mode connects, Tater sends the device's current Voice settings. Changes made later in Tater are applied without restarting the satellite and are cached for the next boot. The bundled Hey Tater model and wake sounds work offline; catalog/custom wake words and custom sounds are downloaded once and then reused from the satellite's download directory.
When STT Wake Verification is enabled in Tater, the satellite keeps a short rolling microphone window and asks Tater to confirm the detected phrase before playing the wake sound or opening the conversation. Observe mode records the same checks without delaying or rejecting wakes. Verification errors and timeouts fail open so an unavailable STT service cannot disable the satellite.
On supported Linux satellites, native mode also observes nearby BLE advertisements and sends fixed-size batches to Tater for room presence. The observer never connects to or pairs with nearby devices. It uses raw HCI when the service has the required capabilities, otherwise it uses BlueZ through the optional Bleak package. If no Bluetooth adapter is available, voice service continues normally and the heartbeat reports the observer as unavailable.
List available audio devices:
./script/run --list-input-devices
./script/run --list-output-devices
Select devices when starting the satellite:
./script/run \
--audio-input-device "INPUT DEVICE" \
--audio-output-device "OUTPUT DEVICE" \
--tater-url http://tater.local:8501 \
--tater-token-file ~/.config/tater-linux-satellite/device-token
Wake-word models use a matching .json configuration and .tflite model.
Browse shared models and custom-word tooling in
Tater Wake Words, then
select an installed model with --wake-model.
Run ./script/run --help for all audio, wake-word, sound, timer, and peripheral
options.
| Command-line option | Environment variable | Purpose |
|---|---|---|
--tater-url | TATER_URL | Tater base URL or native WebSocket URL |
--tater-token | TATER_TOKEN | One-time pairing code or existing device token |
--tater-token-file | TATER_TOKEN_FILE | Loads and stores the durable paired token |
--tater-device-id | TATER_DEVICE_ID | Stable ID reported to Tater |
--tater-board | TATER_BOARD | Hardware identifier, such as linux or reachy_mini |
--tater-room | TATER_ROOM | Optional room reported to Tater |
--tater-reconnect-seconds | TATER_RECONNECT_SECONDS | Delay between reconnect attempts |
See .env.example for audio, wake-word, sound, and runtime settings.
./script/setup --dev
./script/test
./script/lint
This fork builds on the Linux audio and wake-word foundation from OHF-Voice/linux-voice-assistant.
Licensed under the Apache License 2.0.
Linux-native voice satellite runtime for Tater
See the codeA Linux-native voice satellite runtime for Tater.
This project turns a Linux computer, Raspberry Pi, or robot such as Reachy Mini into a dedicated Tater voice satellite. It detects wake words locally, streams speech to Tater, plays Tater's reply, and reconnects automatically if the network or Tater restarts.
The satellite connects outbound to Tater's native WebSocket protocol. Tater handles pairing, speech recognition, conversation, tools, text-to-speech, and device management; this runtime handles the local microphone, speaker, wake word, and optional peripherals.
A microphone array with onboard noise reduction and echo cancellation will usually give the best far-field results.
Open Tater, go to Satellites, choose Add Satellite, and keep the pairing code visible.
git clone https://github.com/TaterTotterson/Tater-Linux-Satellite.git
cd linux-voice-assistant
./script/setup
Replace the Tater URL and pairing code with your own:
./script/run \
--name "Office Satellite" \
--tater-url http://tater.local:8501 \
--tater-token 123456 \
--tater-token-file ~/.config/tater-linux-satellite/device-token \
--tater-device-id office-satellite \
--tater-board linux \
--tater-room office
The base HTTP URL is converted to Tater's native satellite WebSocket endpoint
automatically. After the first successful connection, the durable device token
is saved to --tater-token-file; later starts can omit --tater-token.
The satellite reconnects automatically when Tater or the network becomes available again.
When native mode connects, Tater sends the device's current Voice settings. Changes made later in Tater are applied without restarting the satellite and are cached for the next boot. The bundled Hey Tater model and wake sounds work offline; catalog/custom wake words and custom sounds are downloaded once and then reused from the satellite's download directory.
When STT Wake Verification is enabled in Tater, the satellite keeps a short rolling microphone window and asks Tater to confirm the detected phrase before playing the wake sound or opening the conversation. Observe mode records the same checks without delaying or rejecting wakes. Verification errors and timeouts fail open so an unavailable STT service cannot disable the satellite.
On supported Linux satellites, native mode also observes nearby BLE advertisements and sends fixed-size batches to Tater for room presence. The observer never connects to or pairs with nearby devices. It uses raw HCI when the service has the required capabilities, otherwise it uses BlueZ through the optional Bleak package. If no Bluetooth adapter is available, voice service continues normally and the heartbeat reports the observer as unavailable.
List available audio devices:
./script/run --list-input-devices
./script/run --list-output-devices
Select devices when starting the satellite:
./script/run \
--audio-input-device "INPUT DEVICE" \
--audio-output-device "OUTPUT DEVICE" \
--tater-url http://tater.local:8501 \
--tater-token-file ~/.config/tater-linux-satellite/device-token
Wake-word models use a matching .json configuration and .tflite model.
Browse shared models and custom-word tooling in
Tater Wake Words, then
select an installed model with --wake-model.
Run ./script/run --help for all audio, wake-word, sound, timer, and peripheral
options.
| Command-line option | Environment variable | Purpose |
|---|---|---|
--tater-url | TATER_URL | Tater base URL or native WebSocket URL |
--tater-token | TATER_TOKEN | One-time pairing code or existing device token |
--tater-token-file | TATER_TOKEN_FILE | Loads and stores the durable paired token |
--tater-device-id | TATER_DEVICE_ID | Stable ID reported to Tater |
--tater-board | TATER_BOARD | Hardware identifier, such as linux or reachy_mini |
--tater-room | TATER_ROOM | Optional room reported to Tater |
--tater-reconnect-seconds | TATER_RECONNECT_SECONDS | Delay between reconnect attempts |
See .env.example for audio, wake-word, sound, and runtime settings.
./script/setup --dev
./script/test
./script/lint
This fork builds on the Linux audio and wake-word foundation from OHF-Voice/linux-voice-assistant.
Licensed under the Apache License 2.0.