TTSNative

Code signing policy

How TTSNative's Windows releases are signed, who may approve a signature, and what the app sends over the network.

Where things stand

What is signed

TTSNative.exe and the installer, TTSNative-Setup-X.Y.Z.exe. Both are built by the project's release workflow on GitHub-hosted runners from the public repository at the tagged commit, and SignPath checks that the files it signs came from that build. The programs and libraries TTSNative bundles from other projects (Python and its packages, uv, ONNX Runtime, espeak-ng, Microsoft's Visual C++ runtime) keep their own makers' signatures, or none; TTSNative doesn't sign them.

Separately, every installer carries an update signature made with the project's own key. The app installs an update only when that signature matches the public key built into it.

Who approves

Every signing request is approved by hand, after the release's tag is on main and the release run has passed its checks.

Everyone in these roles uses two-factor sign-in for GitHub and for SignPath. Changes from anyone else are reviewed before they're merged.

What TTSNative sends over the network

TTSNative doesn't send anything to other computers unless you ask it to or turn it on. It has no accounts, analytics or telemetry. The only network requests are:

Checking a signature

In File Explorer, right-click the file, choose Properties and open Digital Signatures. In PowerShell: Get-AuthenticodeSignature .\TTSNative-Setup-X.Y.Z.exe. Every release also lists SHA-256 checksums and a build attestation on its GitHub release page.

Reporting a problem

If a file claiming to be TTSNative is signed by someone else, or behaves unexpectedly, don't run it, and report it through the security policy with its SHA-256 checksum and where you got it.