Note
The machine-wide installer (MSI) and managed settings are available from TypeWhisper for Windows 1.2.
Overview
As an administrator, you decide:
- how TypeWhisper is installed: once per device with the MSI, or per user with the setup;
- how it is configured: license, models, cloud processing, downloads, updates, and startup through managed settings;
- what it may reach: the network hosts below and the microphone.
Each Windows user keeps their own settings, models, and plugins in their profile. The policy key, in contrast, is device-wide and applies to every user.
Choose an installer
| Installer | Suited for |
|---|---|
TypeWhisper-win-x64.msi | All users of a device. Installs into C:\ in the system context and is updated by your deployment. The right choice for shared devices. |
TypeWhisper-win-x64-Setup.exe | One Windows user. Installs into %LocalAppData%\ in the user context and updates itself unless UpdateMode says otherwise. |
Both files are attached to the latest stable release, each with a .sha256 file for verification:
Get-FileHash .\TypeWhisper-win-x64.msi -Algorithm SHA256Important
Remove per-user installations from the devices before you roll out the MSI. Otherwise users see two entries with the same name, and the per-user installation keeps updating itself.
Machine-wide installer (MSI)
The MSI installs TypeWhisper once for all users of a device into C:\, or into the folder given in VELOPACK_INSTALLDIR. It adds Start menu and desktop shortcuts for all users and registers under the machine's uninstall key.
Like the setup, the MSI from GitHub is not code-signed. Application control policies that require a signature, such as App Control for Business or AppLocker, need an exception for it. Verify the file with its SHA-256 hash first.
Prerequisite: .NET 10 Runtime
The MSI needs the .NET 10 Runtime (x64). An interactive installation offers to install it; a silent installation does not. Deploy the runtime first, for example as an Intune dependency, which has to be a Win32 app itself. The installer is available at dotnet.microsoft.com.
.\dotnet-runtime-10.0.<patch>-win-x64.exe /install /quiet /norestart
# or
winget install Microsoft.DotNet.Runtime.10Install and uninstall
# Install for all users
msiexec /i TypeWhisper-win-x64.msi /qn /norestart
# Install into another folder
msiexec /i TypeWhisper-win-x64.msi /qn /norestart VELOPACK_INSTALLDIR="D:\Apps\TypeWhisper"
# Uninstall with the product code of the installed version
msiexec /x '{<product code>}' /qn /norestartThe product code changes with every version. Read it from the MSI's ProductCode property, or on a device with the app installed from QuietUninstallString under HKLM\. When you package the MSI for Intune, Intune fills in the uninstall command with the product code.
Updates
Your deployment updates a machine-wide installation. The app does not check for, download, or install app updates, shows “App updates are managed by your organization's deployment.” in Settings > Account & about, and locks the update channel. You don't need UpdateMode for this. If you set it anyway, keep it at 0 or 1: standard users cannot write to Program Files, so an installation started from the app under 2 fails. Plugin updates are not affected, because plugins live in the user's profile.
To upgrade, deploy the newer MSI the same way, for example through supersedence in Intune. It replaces the installed version in place. A Release Candidate sorts below the Stable release of the same version.
As an Intune Win32 app
| Item | Value |
|---|---|
| Package | IntuneWinAppUtil.exe -c <folder> -s TypeWhisper-win-x64.msi -o <output> |
| Install command | msiexec /i TypeWhisper-win-x64.msi /qn /norestart |
| Uninstall command | msiexec /x {<product code>} /qn /norestart, filled in by Intune |
| Install behavior | System |
| Dependency | .NET 10 Runtime (x64), packaged as its own Win32 app |
| Detection rule | Registry: HKEY_LOCAL_MACHINE\, value DisplayVersion, version comparison “Greater than or equal to” the packaged version. Use “Equals” for a Release Candidate, whose version carries a suffix. Alternatively the file C:\. |
| Upgrade | Deploy the newer MSI the same way, for example through supersedence |
Per-user installer
The setup installs TypeWhisper for the user who runs it: it writes to %LocalAppData%\, registers under the user's uninstall key, and starts the app when it finishes.
# Install for the current user
.\TypeWhisper-win-x64-Setup.exe --silent
# Uninstall for the current user
& "$env:LOCALAPPDATA\TypeWhisper\Update.exe" --uninstall --silentAs an Intune Win32 app
| Item | Value |
|---|---|
| Package | IntuneWinAppUtil.exe -c <folder> -s TypeWhisper-win-x64-Setup.exe -o <output> |
| Install command | TypeWhisper-win-x64-Setup.exe --silent |
| Uninstall command | powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& \. Intune does not expand environment variables in this field; PowerShell resolves the user's LocalAppData path. |
| Install behavior | User |
| Detection rule | Registry: HKEY_CURRENT_USER\, value DisplayVersion, version comparison “Greater than or equal to” the packaged version. Alternatively the file %LocalAppData%\. |
| Upgrade | Deploy the newer setup the same way; it upgrades in place and keeps the user's data |
With UpdateMode 0 your organization owns updates: deploy new installers through the same tools. With 1 the app announces new versions in Settings > Account & about, without an install button. On shared devices, use the MSI, or let each Windows user run the setup once; your deployment tool can install it in the user's context.
Network hosts
TypeWhisper only makes outbound HTTPS connections and uses the Windows proxy settings, including WPAD and PAC scripts; there is no separate proxy configuration. The app itself contacts these hosts:
| Host | Used for |
|---|---|
api.polar.sh | Activation and validation of commercial license keys, including ManagedLicenseKey. |
app.typewhisper.com | Premium account sign-in and account status. |
api.github.com, github.com, release-assets.githubusercontent.com | App update checks and downloads (unless UpdateMode is 0), plugin package downloads, and the model and runtime files that some local plugins download from GitHub releases (Qwen3 ASR 0.6B, Parakeet Ultra, the graphics card runtime of NVIDIA Parakeet, and the CrispASR runtime of Cohere Transcribe). |
typewhisper.github.io | The plugin catalog (plugins-v2.json). |
huggingface.co, *.hf.co | Model downloads of the local plugins: Parakeet (sherpa-onnx), dictionary boosting files, whisper.cpp, GigaAM, Qwen3 ASR 1.7B, Cohere Transcribe, Granite Speech, local text models, and local speech output. The host redirects to *.hf.co content hosts on several subdomain levels, such as us.aws.cdn.hf.co and cas-server.xethub.hf.co; the wildcard has to cover all of them. |
www.python.org, raw.githubusercontent.com, pypi.org, files.pythonhosted.org, download.pytorch.org, download-r2.pytorch.org | The Python runtime that Granite Speech installs with its model: embedded Python from www.python.org, the pip installer from raw.githubusercontent.com, Python packages from pypi.org and files.pythonhosted.org, and PyTorch from download.pytorch.org, which serves its files from download-r2.pytorch.org. |
developer.download.nvidia.com, api.nuget.org | Runtime files that some local plugins fetch while they load a model (whisper.cpp with CUDA, ONNX runtimes). AllowModelDownloads does not cover them. |
graph.microsoft.com, www.googleapis.com | Calendar access for the meeting feature, only when a user connects a calendar. |
www.typewhisper.com | Documentation links opened in the browser. |
Cloud plugins contact their vendor. The table lists the hosts of the plugins in the catalog as of TypeWhisper for Windows 1.2. Plugins with the configurable locality reach whatever endpoint the user enters.
| Plugin | Hosts |
|---|---|
| AssemblyAI | api.assemblyai.com, cdn.assemblyai.com |
| Cerebras | api.cerebras.ai |
| Claude | api.anthropic.com |
| Cloudflare ASR | api.cloudflare.com |
| Cohere | api.cohere.com |
| Deepgram | api.deepgram.com |
| ElevenLabs | api.elevenlabs.io |
| Fireworks | api.fireworks.ai |
| Gemini | generativelanguage.googleapis.com |
| GitHub Copilot | github.com and api.github.com for sign-in, and the Copilot service hosts under *.githubcopilot.com; GitHub's Copilot allowlist reference lists every host |
| Gladia | api.gladia.io, files.gladia.io |
| Groq | api.groq.com |
| Linear | api.linear.app |
| Meta | api.meta.ai |
| OpenAI | api.openai.com; auth.openai.com and chatgpt.com for ChatGPT sign-in |
| OpenAI Compatible | The configured endpoint |
| OpenRouter | openrouter.ai |
| Reson8 | api.reson8.dev |
| Smallest.ai | api.smallest.ai |
| Soniox | api.soniox.com, api.eu.soniox.com, api.jp.soniox.com |
| Speechmatics | eu1.asr.api.speechmatics.com, us1.asr.api.speechmatics.com |
| Voxtral (Mistral) | api.mistral.ai |
| xAI | api.x.ai |
| Authenticated CLI, Webhook, Script | The command, CLI, or URL the user configures |
| Local plugins: Parakeet, whisper.cpp, local LLM, Gemma, Qwen, GigaAM, Cohere Transcribe, Granite Speech, Supertonic TTS | huggingface.co and *.hf.co for most models, the GitHub hosts above for some; runtime hosts as above |
Microphone and permissions
TypeWhisper is a desktop app. Windows does not ask for microphone access per desktop app, so there is nothing to pre-approve. The app can record as long as two switches in Settings > Privacy & security > Microphone are on (on Windows 10: Settings > Privacy > Microphone):
| Switch | Registry value |
|---|---|
| Microphone access (device) | HKLM\, Value = Allow |
| Let desktop apps access your microphone (per user) | HKCU\, Value = Allow |
The Group Policy “Let Windows apps access the microphone” (Computer Configuration > Administrative Templates > Windows Components > App Privacy) governs packaged (Store or MSIX) apps only. It applies to the Microsoft Store version of TypeWhisper, whose package family name goes into its “Force Allow” list, and not to the GitHub installers. If a user turns a switch off, TypeWhisper reports the missing microphone in its status and setup instead of failing silently.
To run, TypeWhisper needs no administrator rights, no driver, and no firewall exception: it only makes outbound connections, and the optional HTTP API listens on the loopback interface only.
Provide models and plugins
- Models and plugins live in each user's profile. If you turn off
AllowModelDownloadsorAllowPluginDownloads, place the required packages and model files in the user's profile before the restriction applies. Never copy another user's settings, credentials, or DPAPI-protected data. - Some local plugins fetch runtime files while they load a model.
AllowModelDownloadsdoes not stop that; allow the runtime hosts from the table above or provide the files. - The policy is read before plugins and background work start. If it is present at the first launch, it applies right away.
Pilot checklist
Before the rollout, check on one or two managed devices:
- Install the .NET 10 Runtime and the MSI silently, then start TypeWhisper as a standard user.
- Import the Group Policy templates, set a few policies, and compare them with Settings > Advanced > Managed settings.
- Deploy
ManagedLicenseKeyand check Settings > Premium > License in a standard user's session. Restart twice and confirm that Polar shows no additional activations. Repeat with a second Windows user and with an offline first launch followed by Retry activation. - Confirm microphone access and the models your setup needs, especially with downloads turned off.
- Upgrade with the next MSI and uninstall it again.