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.
- • Copying the app into
/Applications— handled by MDM app deployment. - • Approving the camera system extension — handled by a
com.apple.system-extension-policypayload.
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
GET /api/v1/agent/config for widget configuration. Also sign-in and the web dashboard.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
_cmiodalassistantssystem 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/LaunchDaemonsentry and nosudoanywhere 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.