Remote Output & Multi-Device Pairing
Relevant source files
The following files were used as context for generating this wiki page:
mausVoice includes a specialized multi-device pairing and remote output system designed to route finalized dictation from one machine to another. This feature enables a "Sender" device to capture audio and perform transcription, while a "Receiver" device accepts the resulting text and injects it into the focused application on its own operating system.
The system is built on a trusted-device model where machines are paired via encrypted invite codes or manual entry. This allows for a flexible workflow where high-performance transcription can happen on one machine while the output is directed to a specific field on a separate, potentially less powerful or more specialized workstation.
Sources: llms.txt, apps/desktop/PRODUCT.md, apps/desktop/src/components/settings/MultiDeviceDialog.tsx:327-340
Architecture and Roles
The multi-device system defines two primary roles for participating machines:
- Sender: The machine where the user speaks and the hotkey is pressed. It handles the native audio capture and transcription (either locally via Whisper or through cloud providers). If remote output is enabled, the final cleaned text is sent over the network instead of being typed locally.
- Receiver: The machine that listens for incoming text fragments from trusted senders. Upon receipt, it uses native keyboard injection to type the text into the application currently in focus.
System Data Flow
The following diagram illustrates the flow of a transcription from the Sender's microphone to the Receiver's focused application:
The system ensures that text is only accepted from devices that have been explicitly trusted through the pairing process.
Sources: apps/desktop/PRODUCT.md, apps/desktop/src/components/settings/MultiDeviceDialog.tsx:75-88, llms.txt
Device Pairing and Trust
Pairing is established through a shared secret and unique device IDs. The preferred method for pairing is via Invite Codes, which mausVoice generates on the Receiver machine.
Invite-Based Pairing
- Generate: The user enables the Receiver mode on the target machine, which generates an invite code containing the device ID, address, and shared secret.
- Import: The user copies this code to the Sender machine and imports it.
- Trust: Both devices are added to each other's "Trusted Devices" list, enabling secure communication.
Trusted Device Management
Users can manually manage paired devices, viewing details such as platform (macOS/Windows), role, and last known network address.
| Field | Description |
|---|---|
| Device Name | User-defined label for the paired machine. |
| Device ID | Unique identifier for the hardware. |
| Shared Secret | Encryption key used to secure the transport between devices. |
| Platform | OS of the remote device (Windows or macOS). |
| Last Known Address | The IP and Port used during the last successful communication. |
Sources: apps/desktop/src/components/settings/MultiDeviceDialog.tsx:180-205, apps/desktop/src/components/settings/MultiDeviceDialog.tsx:644-670
Receiver Configuration
The Receiver component acts as a background service listening for incoming dictation. It can be configured for automatic operation and specific network ports.
Configuration Options
| Option | Description | File Reference |
|---|---|---|
| Remote Receiver Port | The network port the machine listens on. Can be auto-assigned or fixed. | MultiDeviceDialog.tsx:109-148 |
| Auto-Start Receiver | Automatically starts the listening service when mausVoice launches. | MultiDeviceDialog.tsx:150-155 |
| Remote Output Enabled | Global toggle on the Sender to route text to the network. | MultiDeviceDialog.tsx:75-88 |
| Active Receiver | Selection of which trusted receiver should receive the output. | MultiDeviceDialog.tsx:408-433 |
Sources: apps/desktop/src/components/settings/MultiDeviceDialog.tsx:109-155, apps/desktop/src/components/settings/MultiDeviceDialog.tsx:408-433
Connectivity and Troubleshooting
The Multi-Device Dialog provides real-time status updates for the receiver, including the current listening address, the ID of the last sender, and the status of the last text delivery.
Status Indicators
- Last Delivery Status: Shows if the last incoming text was successfully injected.
- Last Target: Displays the window class and title of the application that received the text (e.g., "Tauri Window").
- Focus Warnings: If the target window is the mausVoice app itself or if no editable field is focused on the receiver, the UI provides a warning to ensure the user clicks into the destination application.
Sources: apps/desktop/src/components/settings/MultiDeviceDialog.tsx:327-375
Summary
The Remote Output & Multi-Device Pairing system transforms mausVoice from a single-machine utility into a distributed dictation tool. By leveraging encrypted network transport and a trusted-device security model, users can decouple the transcription process from the final text entry, facilitating complex cross-device workflows while maintaining the privacy and speed inherent to the project's architecture.
Sources: llms.txt, apps/desktop/PRODUCT.md, apps/desktop/src/components/settings/MultiDeviceDialog.tsx:75-88