Deploying promptpov on managed Macs

promptpov ships a CoreMediaIO camera system extension. On an unmanaged Mac that means two administrator-password prompts during setup, which is why a Standard user on a managed fleet cannot complete the install on their own.

Deployed through MDM, both admin prompts disappear. This page has every value your security review needs, and tells you exactly what MDM does not remove.

What MDM removes — and what it can't

Stated precisely, because this is the part most worth getting right.

✓ Removed by MDM — both admin-password gates
  • • Copying the app into /Applications — handled by MDM app deployment.
  • • Approving the camera system extension — handled by a com.apple.system-extension-policy payload.
✗ Not removable — two one-time user consents

Apple's Privacy Preferences Policy Control payload can only deny these services, never grant them. Your user still clicks Allow:

  • • Camera — on first launch. Required; promptpov is a virtual camera.
  • • Screen Recording — on first use of Desk Mode or picture-in-picture only.

These are consent clicks, not credentials — nobody needs a password they don't have. But the install is not silent, and we would rather you hear that from us than discover it during a pilot.

Calendar access can be pre-granted via PPPC if you want briefings working without a prompt. See the payload section below.

Identifiers

Vendor                     Requisite Logic LLC, d/b/a promptpov
Team identifier            9CYH9PUKK7
Host app bundle ID         com.promptpov.app
Camera extension           com.promptpov.app.cameraextension
App group                  9CYH9PUKK7.com.promptpov.app
URL scheme                 promptpov://auth
Virtual camera device      promptpov Virtual Camera
Minimum macOS              26.0
Architecture               arm64 (Apple Silicon only)
Current stable             0.2.4

Signing and notarization

Verify it yourself rather than taking our word for it:

codesign -dv --verbose=4 /Applications/promptPOV.app
spctl -a -vvv -t exec /Applications/promptPOV.app

What the shipping build returns:

Identifier=com.promptpov.app
Authority=Developer ID Application: Requisite Logic LLC (9CYH9PUKK7)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
TeamIdentifier=9CYH9PUKK7
Format=app bundle with Mach-O thin (arm64)

/Applications/promptPOV.app: accepted
source=Notarized Developer ID

Both the host app and the camera extension are signed with the same Developer ID authority, built with the hardened runtime, and notarized by Apple.

MDM payloads

1. Pre-approve the system extension

<key>PayloadType</key>
<string>com.apple.system-extension-policy</string>
<key>AllowedSystemExtensions</key>
<dict>
    <key>9CYH9PUKK7</key>
    <array>
        <string>com.promptpov.app.cameraextension</string>
    </array>
</dict>

Listing the bundle identifier explicitly is sufficient — you do not also need AllowedSystemExtensionTypes. Requires the Mac to be UAMDM-enrolled.

2. Deploy to /Applications

Standard MDM app deployment of the signed, notarized DMG, or a .pkg wrapping it — ask us and we'll build one. The destination must be /Applications; this is enforced by macOS itself, not a preference of ours. sysextd refuses to activate a system extension from anywhere else:

App containing System Extension to be activated must be
in /Applications folder. Current location:
no policy, cannot allow apps outside /Applications

3. Optionally pre-grant Calendar (PPPC)

com.apple.TCC.configuration-profile-policy, service Calendar, identifier com.promptpov.app, type bundleID, with the standard Developer ID code requirement:

identifier "com.promptpov.app" and anchor apple generic and
certificate 1[field.1.2.840.113635.100.6.2.6] and
certificate leaf[field.1.2.840.113635.100.6.1.13] and
certificate leaf[subject.OU] = "9CYH9PUKK7"

Camera, Microphone and Screen Recording cannot be added here as allows. They can be denied if you want to scope the app down: denying Camera disables the product entirely; denying Screen Recording disables Desk Mode and picture-in-picture but leaves the widget overlay working normally.

What never leaves the Mac

  • • Camera frames. Composited locally by the camera extension and handed to whichever app selected the virtual camera. Never uploaded.
  • • Meeting audio. Transcription runs on-device via whisper.cpp. There is no cloud transcription path and no audio upload endpoint.
  • • Transcripts, notes and action items. Stored in the app group container on the user's Mac.
  • • Screen contents captured by Desk Mode or picture-in-picture. They enter the outgoing video feed directly and never reach a server.
  • • Call detection. To notice a call with the camera off, promptpov checks whether a known meeting app — Zoom, Teams, Slack, Discord or a Chromium browser — has opened a live audio connection. It reads only the kind of connection from the Mac's own socket table: never what is sent over it, never URLs, domain names or DNS, and no other app's connections. The result stays on the Mac; telemetry carries only a count of calls detected per app.
  • • AI inference, when local models are used. The on-device model runs entirely on the Mac with no API key and no network. The Local AI setting is fail-closed: with it on, no cloud AI call is made under any condition.

Outbound connections

app.promptpov.com
Continuous. The agent polls GET /api/v1/agent/config for widget configuration. Also sign-in and the web dashboard.
updates.promptpov.com
Sparkle update checks, DMG downloads, and some on-device model weights.
huggingface.co
Only when a user downloads a larger transcription or AI model. Safe to block — costs only the optional larger models.
sentry.io
Crash and error reports: stack traces, build, OS version, user ID and email. Safe to block — costs us diagnostics, costs the user nothing.
wttr.in
Only if the weather widget is enabled. Carries the user's chosen location string.
graph.microsoft.com · login.microsoftonline.com
Only if the user connects an Outlook calendar. OAuth tokens and calendar events.

Telemetry, in full

promptpov posts a health snapshot roughly every 5 minutes. This is the complete set of fields:

build              728
os_version         26.6.2
extension_state    activated_enabled
extension_version  728
device_visible     true
frames_flowing     true
agent_running      true
feature_counters   {"room_vibe_clicks": 3}

feature_counters is integer-valued by feature name. No meeting titles, no transcript text, no attendee names, and no user-generated content of any kind is carried in the heartbeat.

Questions we get

Is this a kernel extension?
No. It is a CoreMediaIO system extension — user space, sandboxed, running as the dedicated _cmiodalassistants system user. This is Apple's replacement for the old DAL plug-in architecture. No kext, no SIP changes, no root daemon.
Can it see other applications' windows?
Only what the user explicitly picks in Desk Mode or picture-in-picture, and only after they have granted Screen Recording. There is no background screen capture.
Does it record meetings?
It transcribes on-device when the user turns transcription on. Audio is not written to a file and is never uploaded.
What runs with elevated privileges?
Nothing. After setup everything runs at user level. There is no /Library/LaunchDaemons entry and no sudo anywhere in the product.
What happens if your servers go away?
The virtual camera and the widget overlay keep working from the last synced configuration. The agent's config poll fails and retries; nothing blocks the camera path.
Can we run it with no AI at all?
Yes. The Free and Pro tiers include no AI features whatsoever. On Pro+AI, the Local AI toggle keeps all inference on-device and is fail-closed.
Can we point the AI at our own endpoint?
Yes — Azure OpenAI, a Bedrock proxy, or any OpenAI-compatible endpoint. Keys are stored in the user's macOS Keychain and are never sent to promptpov's servers.
Where does payment data go?
To LemonSqueezy, our Merchant of Record. No card data reaches our servers or our database. Authentication is passwordless, so we never hold a password either.

Talk to the person who wrote this

Need a signed test build, a .pkg instead of a DMG, or a security questionnaire filled in? We'd rather help you approve promptpov properly than have one of your users fight an install they can't finish.

contact@promptpov.com