WinSTT logoWinSTT
Architecture

Architecture Overview

How WinSTT is built

WinSTT is a single-process desktop application built with Tauri 2: a Rust backend and a WebView2-rendered React frontend, compiled into one native executable. There is no separate server and no network hop — speech recognition and text-to-speech run in-process in Rust on ONNX Runtime (ort).

1
Native process
2
Layers — Rust + React
0
Network hops
0
Open sockets
React calls typed Tauri commands; Rust runs audio, STT, TTS, settings, and events.

The two layers

The renderer holds no model code and opens no sockets. It reaches Rust two ways, both type-checked end-to-end by tauri-specta.

  1. Tauri commands — typed request/response

    The React renderer calls into Rust through #[tauri::command] functions: a typed request goes out, a typed response comes back.

  2. Events — push notifications

    Rust pushes updates the other direction as events, so the UI reflects recording lifecycle, download progress, and other state without polling.

One binary, no sockets

WinSTT is a single binary: STT and TTS run in-process in Rust on ort, and the renderer reaches the backend through Tauri commands + events rather than any network relay. A thin native-bridge adapter maps the renderer's IPC calls onto Tauri.

Deep Dives

On this page