Skip to content
DocumentationDocs
Docs navigation: macOSDeployment

macOS

Deployment

Roll out TypeWhisper for Mac across your organization: edition and installation, updates, the login item, permissions, and network hosts for allowlists.

On this page

Note

Managed settings, the example profiles, and the schemas for Jamf Pro and profile editors are available from TypeWhisper for Mac 1.8. The managed license key (ManagedLicenseKey) has been available since 1.6.1.

Overview

As an administrator, you decide:

  • which edition goes on the Macs and how: the direct download through your MDM or Homebrew, or the Mac App Store edition through Apple Business Manager;
  • how it is configured: license, models, cloud processing, downloads, updates, and startup through managed settings;
  • what it may do and reach: the login item, permissions, and the network hosts below.

TypeWhisper needs macOS 14 or later and no administrator rights to run. Each user of a Mac keeps their own settings, models, and plugins in their account. A device profile applies to every user, a user profile only to that user.

Choose an edition

EditionSource and updates
Direct downloadDMG or ZIP from the GitHub releases, signed with Developer ID and notarized, or the Homebrew cask. Updates come through Sparkle and follow UpdateMode, UpdateChannel, and AllowedUpdateChannels. Only this edition activates ManagedLicenseKey.
Mac App Store editionApple Business Manager > Apps and Books, assigned through your MDM. The App Store updates it, and its plugins are built in.

The two editions are separate apps with separate settings, so usually only one of them is installed. Apps and Books licenses do not include in-app purchases, so commercial license keys need the direct download.

Install the direct download

Every release includes TypeWhisper-v<version>.dmg and a ZIP file. Most MDMs install the DMG or a package built from it; place TypeWhisper.app in /Applications. The files are on the GitHub releases page. With Homebrew:

bash

brew install --cask typewhisper/tap/typewhisper

To uninstall, quit the app and delete it from /Applications. Settings, models, and plugins stay in the user's account; the installation page lists the paths for a complete cleanup. Deleting the app does not deactivate a managed license; remove the activation in Polar.

Updates

The direct download updates itself with Sparkle from https://typewhisper.github.io/typewhisper-mac/appcast.xml. UpdateMode controls this: 0 leaves updates to your deployment, 1 only announces new versions, and 2 installs only when the user starts it. Under 0, deploy new versions with your MDM.

An update that Sparkle downloaded for automatic installation before a restrictive UpdateMode arrived can still install when TypeWhisper quits; Sparkle offers no way to cancel it. Deploy the policy together with the app to avoid that window.

Login item

macOS lists TypeWhisper in System Settings > General > Login Items & Extensions, where users can turn it off even while LaunchAtLogin is enforced; Settings > General in TypeWhisper then shows that the item needs approval.

To approve and lock the item, deploy a Service Management payload (com.apple.servicemanagement, macOS 13 or later, delivered by MDM) with a rule for TypeWhisper's team identifier 2D8ALY3LCL or its bundle identifier. The login item example covers both editions. An app that has never been started cannot register its login item, so launch TypeWhisper once after installation.

Permissions

TypeWhisper asks for these permissions when a feature first needs them. A privacy preferences profile (PPPC, com.apple.TCC.configuration-profile-policy) delivered by MDM can pre-approve some of them. The privacy example contains entries for Accessibility, PostEvent, Input Monitoring, and Screen Recording. Pre-approve only the entries your features and edition need. Calendars and Automation are optional; add their entries yourself if you want them pre-approved.

PermissionUsed for and PPPC entry
MicrophoneDictation and recording. Cannot be pre-approved; users approve the prompt. From macOS 27, the app settings configuration can propose it (Microphone: Allow).
AccessibilityDirect download: dictation shortcuts, inserting text, and reading the active app's context. Accessibility: Allow; deprecated from macOS 27, where the app settings configuration proposes it instead.
Accessibility (post events)Pasting the transcript; in the App Store edition, the entry under Privacy & Security > Accessibility (Device Control and Data Access from macOS 27). PostEvent: Allow.
Input MonitoringApp Store edition: dictation shortcuts. Direct download: shortcuts the system cannot register, and Esc in other apps. ListenEvent: only AllowStandardUserToSetSystemService, which lets users without administrator rights approve it.
Screen & System Audio RecordingSystem audio in the Recorder. ScreenCapture: only AllowStandardUserToSetSystemService.
Automation (Apple Events)Direct download: reading the current browser address for website workflows; the App Store edition uses the browser extension instead. AppleEvents: Allow, with one entry per browser as receiver.
CalendarsMeeting reminders and starting recordings. Calendar: Allow, if your organization wants it.
Local NetworkPaired iPhones and iPads that use the Mac for transcription. Not configurable through PPPC; users approve the prompt. From macOS 27, the app settings configuration can propose it (LocalNetwork: Allow).

The code requirements in the example are TypeWhisper's designated requirements. To check them against an installed app:

shell

codesign -dr - /Applications/TypeWhisper.app

macOS applies privacy preferences only when an MDM with user-approved or automated device enrollment delivers them. A profile installed by hand is not enough.

From macOS 27: app settings

From macOS 27, the Accessibility entry in a PPPC profile is deprecated, and System Settings calls the pane Device Control and Data Access: macOS notifies the user and lets them turn the permission off there. Apple's replacement is the Privacy key of the declarative app settings configuration (com.apple.configuration.app.settings) for supervised Macs with macOS 27 or later. It sets permission defaults per app, matched by bundle identifier and code requirement, which the user confirms in one prompt when the app launches, together with your organization's justification. It can propose Accessibility, the microphone, and local network access, but never grants them silently.

  • The app settings example proposes Accessibility and the microphone for both editions. Adapt its OrganizationJustification.
  • The prompt lists only permissions the user has not been asked for yet and does not appear once they have seen all of them, so deploy the declaration before users first launch TypeWhisper.
  • Deliver it with an MDM that supports declarative device management on the user channel, because macOS applies the Privacy key only to users. Give it a new ServerToken whenever you change it, or the Mac keeps the previous version; most MDMs set the token themselves.
  • Keep the privacy profile for earlier macOS versions and for PostEvent, Input Monitoring, and Screen Recording.

Network hosts

The app itself contacts these hosts over HTTPS, using the system proxy settings:

HostUsed for
api.polar.shActivation and validation of commercial license keys, including ManagedLicenseKey.
app.typewhisper.comPremium account sign-in and status, and the Improve TypeWhisper plugin.
typewhisper.github.ioApp updates (/typewhisper-mac/appcast.xml, unless UpdateMode is 0), the plugin catalog, and term packs.
github.com, release-assets.githubusercontent.comApp update and plugin downloads.
huggingface.co, *.hf.coModel downloads of the local plugins: Parakeet, WhisperKit, Qwen3, Canary, Granite, Voxtral, Cohere Transcribe, GigaAM, Local LLM, Supertonic, speaker detection, and Hugging Face imports. The host redirects to *.hf.co content hosts on several subdomain levels; the wildcard has to cover all of them.
www.typewhisper.comDocumentation opened in the browser.

When a user turns on the connection for paired iPhones and iPads, TypeWhisper listens on the local network for them. The HTTP API listens on the loopback interface only.

Cloud plugins contact their vendor. The table lists the hosts of the plugins in the catalog as of TypeWhisper for Mac 1.8. Plugins with the configurable locality reach whatever endpoint, command, or service the user configures.

PluginHosts
AssemblyAIapi.assemblyai.com, streaming.assemblyai.com
Cartesiaapi.cartesia.ai
Cerebrasapi.cerebras.ai
Claudeapi.anthropic.com
Cohereapi.cohere.com
Deepgramapi.deepgram.com
ElevenLabsapi.elevenlabs.io
Fireworks AIapi.fireworks.ai, audio-prod.api.fireworks.ai, audio-turbo.api.fireworks.ai
Geminigenerativelanguage.googleapis.com
Gladiaapi.gladia.io
Google Cloud Speech-to-Textspeech.googleapis.com, oauth2.googleapis.com
Groqapi.groq.com
Linearapi.linear.app
Metaapi.meta.ai
Microsoft AIThe configured Azure resource: *.cognitiveservices.azure.com or <region>.api.cognitive.microsoft.com
Mistral AIapi.mistral.ai
OpenAI / ChatGPT, OpenAI Vector Memoryapi.openai.com; auth.openai.com and chatgpt.com for ChatGPT sign-in
OpenRouteropenrouter.ai
Sber SaluteSpeechsmartspeech.sber.ru, ngw.devices.sberbank.ru
Smallest Pulseapi.smallest.ai
Sonioxapi.soniox.com and its eu and jp regions, stt-rt.* and tts-rt.*
SpeechmaticsThe regional *.speechmatics.com hosts
Vercel AI Gatewayai-gateway.vercel.sh
xAI / Grokapi.x.ai
Reson8api.reson8.dev or the configured endpoint
MemPalaceapi.mempalace.cloud or the configured server
OpenAI Compatible, Cloudflare ASR, MCP Client, Obsidian, Webhook, Script Runner, File Job Script, Authenticated Provider CLIs, R2T2The endpoint, command, or vault the user configures
Web Link TranscriptionThe sites of the links users transcribe, through yt-dlp

Provide models and plugins

  • TypeWhisper reads the profile before anything else at launch, so a profile present at the first launch applies right away. Deploy restrictive profiles before or together with the app.
  • With AllowModelDownloads or AllowPluginDownloads turned off, users cannot fetch models or plugins themselves. Models and plugins live in each user's ~/Library/Application Support: stage them there before the restriction applies, or allow downloads for the first setup. Never copy another user's settings or Keychain items.
  • The keys govern TypeWhisper's behavior, not the network. Combine them with your MDM's network controls where you need stronger guarantees.

Pilot checklist

Before the rollout, check on one managed Mac with the release you deploy:

  1. Deploy the profile and launch TypeWhisper as a standard user. Settings > Advanced > Managed Settings lists the values, with no invalid keys or policy problems.
  2. Locked settings show “Managed by your organization”, and refused providers and plugins show the reason.
  3. Dictate once with the intended engine and, if used, a language model workflow.
  4. Confirm the models your setup needs, especially with downloads turned off.
  5. Change a value in the MDM and confirm the app applies it within about 30 seconds without a restart. Remove the profile and confirm the user's own settings return.
  6. With ManagedLicenseKey: Settings > License shows the managed state and the activation. Restart TypeWhisper twice and confirm that Polar shows no additional activations. Repeat with a second user and with an offline first launch followed by Retry Activation. Then replace the key, remove it, and compare the result with the lifecycle under Managed license key.
  7. Restart the Mac and confirm that the login item, the microphone, and the other permissions behave as intended.
  8. Repeat with the Mac App Store edition if you deploy it.
All managed settings

Stay close to TypeWhisper

Follow for release notes, workflow tips, and product updates while the app downloads.