TaterTotterson/reachy_tater_embedded

Space

Reachy Tater Embedded

1

27 commits

1 linked in READMEs

updated Sep 19, 2026

See the code

README

Reachy Tater Embedded

A fresh all-in-one Reachy Mini app that runs the full Tater experience and the current native Reachy satellite together.

Reachy keeps its microphone, speaker, camera, local wake detection, expressive motion, music dancing, sleep behavior, and Idle Life features. Embedded Tater adds its own persistent memory, personal information, plugins, integrations, music recommendations, provider settings, and TaterOS interface on the same robot.

Like the SAT1 standalone image, this build uses Tater's lightweight edge profile. The assistant and UI run locally, while expensive STT, LLM, vision, and TTS work can use the remote APIs configured in Tater.

How it works

Reachy microphone / camera / motors
                |
                v
Native Reachy satellite -- localhost private token --> Embedded Tater :8501
                                                         |
                                                         +--> remote STT
                                                         +--> remote LLM/vision
                                                         +--> remote TTS
  • No pairing code is required; the app creates an owner-only local token.
  • The native satellite always connects to http://127.0.0.1:8501.
  • The first wake word is Hey Reachy.
  • Tater then controls wake word, wake sound, volume, and shared voice settings.
  • Received voice settings are cached on Reachy and survive restarts.
  • Tater code is replaced only by a manually published Reachy app release; memory, plugins, credentials, and runtime state live separately under ~/.reachy_tater_embedded/runtime.
  • The app never checks for or installs Tater releases in the background.
  • On first start after a Reachy app upgrade, the changed Tater bundle is installed atomically while personal data remains untouched.

Setup on Reachy

  1. Install Reachy Tater Embedded as a Reachy Mini app.
  2. Start the app and open its settings page.
  3. Select Open Tater.
  4. Complete Tater setup and choose remote providers for the heavier models.
  5. Open Reachy's satellite device inside Tater to change wake word, wake sound, volume, and other shared voice settings.
  6. Say Hey Reachy until a different wake word has been selected.

The embedded Tater UI is available on port 8501 of the Reachy host while the app is running.

What's new in 0.2.8

  • Adds always-on, bounded BLE advertisement observation for Tater room presence, with automatic voice and playback pauses and graceful fallback when Bluetooth is unavailable.
  • Bundles Tater v1.1.23, including its updated AirPlay dependency handling and managed FFmpeg fallback.
  • Declares the embedded FFmpeg package directly so the refreshed Tater edge runtime has every required Python dependency on a clean Reachy install.
  • Stores downloaded cores, Verbas, and portals outside the replaceable Tater application bundle and migrates existing downloads during the upgrade.
  • Keeps selectable AdaFace IR-50 WebFace4M Face ID with safe model-specific embedding migration and cached FaceNet rollback.
  • Follows the connected Spud Hub's selected Face ID model, re-embeds linked face crops through the Hub when needed, and never downloads AdaFace to the Reachy Spudlet.
  • Adds a default-off Store Face ID Photos preference for Reachy Core. When enabled, one good face crop per genuine tracking session can strengthen a known Person's Face ID profile or create an unknown entry for later sorting.
  • Keeps Face ID matching read-only when photo storage is disabled and preserves the one-snapshot-per-presence-session limit.
  • Reconnects and retries once when Reachy's SDK control socket drops during a motor command instead of leaving the app alive but behavior frozen.
  • Detects stale face-tracker frames, reinitializes camera media with bounded exponential backoff, and retries tracking without adding another vision job.
  • Restarts an unexpectedly stopped Idle Life room scan and reports degraded camera, control, or motion health through Reachy's settings status.
  • Closes owned Reachy SDK clients through the supported context-manager cleanup so camera and media processes cannot be left behind by this app.
  • Continues to keep the deliberate manual Reachy release path; embedded Tater never self-updates in the background.

Included Reachy features

  • current native Tater handshake, reconnect, heartbeat, and live settings
  • Reachy SDK microphone, speaker, camera, and motor integration
  • always-on bounded BLE room-presence observation, paused automatically during voice and playback activity and harmless when no adapter is available
  • local microWakeWord detection with cached Tater-managed settings
  • local timers that keep counting through a Tater or network reconnect, with alarm playback, stop-word dismissal, cancel, and snooze support
  • secure opt-in vision snapshots
  • persistent music playback, measured-tempo dancing, and song reactions
  • local conversational, thinking, tool, listening, and result motions
  • Reachy Sleep verba and wake-from-sleep behavior
  • opt-in Idle Life room observation, ambient comments, and rest
  • opt-in Reachy Core Face ID using one locally approved snapshot per tracking session, default-off People Face ID photo storage, one greeting on a known match, and People-aware conversation identity
  • on-demand CPU attribution for Reachy tracking, the satellite, and embedded Tater without a background monitor

Tater updates

Tater is updated deliberately through this repository. Devices do not poll the main Tater repository or install releases on their own. Refresh the bundled snapshot, test it with the Reachy integration, and publish a new Reachy app release when that Tater revision is ready for robots. This release bundles Tater v1.1.23.

Refreshing the bundled snapshot

The source revisions used by a release are recorded in upstreams.toml. Refresh Tater from a clean Git commit with:

./scripts/sync_tater_vendor.sh /path/to/Tater <git-ref>

The sync command exports only tracked files from that commit, updates the bundle revision marker, and excludes Tater's desktop macOS wrapper and source tests. Commit the refreshed bundle and publish a new Reachy app release. On the next app start, that changed bundle is installed atomically and becomes the installed Tater version while user state remains in place.

Development

Python 3.11 or newer is required.

python3.11 -m venv .venv
source .venv/bin/activate
pip install -e .
pytest -q
reachy-mini-app-assistant check .

The Reachy entry point is reachy_tater_embedded.main:ReachyTaterEmbedded.

Status

The combined runtime and packaging are in active Reachy Mini hardware testing. Published test revisions preserve Tater state while refreshing the bundled app, satellite runtime, and pinned Linux voice dependency.

License

AGPL-3.0-only. The embedded Tater server is licensed under the GNU Affero General Public License v3.

Ai-Assistant
embedded-assistant
local-wake-word
reachy_mini
reachy_mini_python_app
static
Tater
Voice-Assistant

TaterTotterson/reachy_tater_embedded

Space

Reachy Tater Embedded

1

27 commits

1 linked in READMEs

updated Sep 19, 2026

See the code

README

Reachy Tater Embedded

A fresh all-in-one Reachy Mini app that runs the full Tater experience and the current native Reachy satellite together.

Reachy keeps its microphone, speaker, camera, local wake detection, expressive motion, music dancing, sleep behavior, and Idle Life features. Embedded Tater adds its own persistent memory, personal information, plugins, integrations, music recommendations, provider settings, and TaterOS interface on the same robot.

Like the SAT1 standalone image, this build uses Tater's lightweight edge profile. The assistant and UI run locally, while expensive STT, LLM, vision, and TTS work can use the remote APIs configured in Tater.

How it works

Reachy microphone / camera / motors
                |
                v
Native Reachy satellite -- localhost private token --> Embedded Tater :8501
                                                         |
                                                         +--> remote STT
                                                         +--> remote LLM/vision
                                                         +--> remote TTS
  • No pairing code is required; the app creates an owner-only local token.
  • The native satellite always connects to http://127.0.0.1:8501.
  • The first wake word is Hey Reachy.
  • Tater then controls wake word, wake sound, volume, and shared voice settings.
  • Received voice settings are cached on Reachy and survive restarts.
  • Tater code is replaced only by a manually published Reachy app release; memory, plugins, credentials, and runtime state live separately under ~/.reachy_tater_embedded/runtime.
  • The app never checks for or installs Tater releases in the background.
  • On first start after a Reachy app upgrade, the changed Tater bundle is installed atomically while personal data remains untouched.

Setup on Reachy

  1. Install Reachy Tater Embedded as a Reachy Mini app.
  2. Start the app and open its settings page.
  3. Select Open Tater.
  4. Complete Tater setup and choose remote providers for the heavier models.
  5. Open Reachy's satellite device inside Tater to change wake word, wake sound, volume, and other shared voice settings.
  6. Say Hey Reachy until a different wake word has been selected.

The embedded Tater UI is available on port 8501 of the Reachy host while the app is running.

What's new in 0.2.8

  • Adds always-on, bounded BLE advertisement observation for Tater room presence, with automatic voice and playback pauses and graceful fallback when Bluetooth is unavailable.
  • Bundles Tater v1.1.23, including its updated AirPlay dependency handling and managed FFmpeg fallback.
  • Declares the embedded FFmpeg package directly so the refreshed Tater edge runtime has every required Python dependency on a clean Reachy install.
  • Stores downloaded cores, Verbas, and portals outside the replaceable Tater application bundle and migrates existing downloads during the upgrade.
  • Keeps selectable AdaFace IR-50 WebFace4M Face ID with safe model-specific embedding migration and cached FaceNet rollback.
  • Follows the connected Spud Hub's selected Face ID model, re-embeds linked face crops through the Hub when needed, and never downloads AdaFace to the Reachy Spudlet.
  • Adds a default-off Store Face ID Photos preference for Reachy Core. When enabled, one good face crop per genuine tracking session can strengthen a known Person's Face ID profile or create an unknown entry for later sorting.
  • Keeps Face ID matching read-only when photo storage is disabled and preserves the one-snapshot-per-presence-session limit.
  • Reconnects and retries once when Reachy's SDK control socket drops during a motor command instead of leaving the app alive but behavior frozen.
  • Detects stale face-tracker frames, reinitializes camera media with bounded exponential backoff, and retries tracking without adding another vision job.
  • Restarts an unexpectedly stopped Idle Life room scan and reports degraded camera, control, or motion health through Reachy's settings status.
  • Closes owned Reachy SDK clients through the supported context-manager cleanup so camera and media processes cannot be left behind by this app.
  • Continues to keep the deliberate manual Reachy release path; embedded Tater never self-updates in the background.

Included Reachy features

  • current native Tater handshake, reconnect, heartbeat, and live settings
  • Reachy SDK microphone, speaker, camera, and motor integration
  • always-on bounded BLE room-presence observation, paused automatically during voice and playback activity and harmless when no adapter is available
  • local microWakeWord detection with cached Tater-managed settings
  • local timers that keep counting through a Tater or network reconnect, with alarm playback, stop-word dismissal, cancel, and snooze support
  • secure opt-in vision snapshots
  • persistent music playback, measured-tempo dancing, and song reactions
  • local conversational, thinking, tool, listening, and result motions
  • Reachy Sleep verba and wake-from-sleep behavior
  • opt-in Idle Life room observation, ambient comments, and rest
  • opt-in Reachy Core Face ID using one locally approved snapshot per tracking session, default-off People Face ID photo storage, one greeting on a known match, and People-aware conversation identity
  • on-demand CPU attribution for Reachy tracking, the satellite, and embedded Tater without a background monitor

Tater updates

Tater is updated deliberately through this repository. Devices do not poll the main Tater repository or install releases on their own. Refresh the bundled snapshot, test it with the Reachy integration, and publish a new Reachy app release when that Tater revision is ready for robots. This release bundles Tater v1.1.23.

Refreshing the bundled snapshot

The source revisions used by a release are recorded in upstreams.toml. Refresh Tater from a clean Git commit with:

./scripts/sync_tater_vendor.sh /path/to/Tater <git-ref>

The sync command exports only tracked files from that commit, updates the bundle revision marker, and excludes Tater's desktop macOS wrapper and source tests. Commit the refreshed bundle and publish a new Reachy app release. On the next app start, that changed bundle is installed atomically and becomes the installed Tater version while user state remains in place.

Development

Python 3.11 or newer is required.

python3.11 -m venv .venv
source .venv/bin/activate
pip install -e .
pytest -q
reachy-mini-app-assistant check .

The Reachy entry point is reachy_tater_embedded.main:ReachyTaterEmbedded.

Status

The combined runtime and packaging are in active Reachy Mini hardware testing. Published test revisions preserve Tater state while refreshing the bundled app, satellite runtime, and pinned Linux voice dependency.

License

AGPL-3.0-only. The embedded Tater server is licensed under the GNU Affero General Public License v3.

Ai-Assistant
embedded-assistant
local-wake-word
reachy_mini
reachy_mini_python_app
static
Tater
Voice-Assistant