VMware Workspace ONE / Omnissa rollout
Roll out pavri-endpointd to a macOS and/or Windows fleet via VMware Workspace ONE
(Omnissa UEM) using an Environment Variables profile + a wrapped signed package.
1. Prerequisites
- Pavri tenant + admin role.
- Workspace ONE UEM admin console access; permission to create Profiles and Applications.
- Signed package:
- macOS:
pavri-endpointd.pkg(Developer ID + Notarization) — gated on CAP-3.8. - Windows: Intune/Win32 staged
pavri-endpointd.exepackage or equivalent Workspace ONE-wrapped artifact (Authenticode) — gated on CAP-3.7 item 1 (Windows-Intel).
- macOS:
- See the CAP-3.7 and CAP-3.8 rows in
docs/05-PHASED-ROADMAP.md(internal).
2. Token mint
In the Pavri dashboard, navigate to Settings → Endpoints → Add Endpoint → Mint enrollment token. Tokens are single-use per endpoint, 24-hour TTL. Mint one token per Workspace ONE smart group scope — re-use across endpoints within the group is supported because the gateway tracks per-endpoint enrollment state.
3. Substitution markers
Edit infra/mdm/workspace-one/pavri-endpointd-profile.xml before upload to Workspace ONE:
| Marker | Replace with |
|---|---|
${GATEWAY_URL} | Your tenant's gateway URL (e.g. https://gateway.your-org.pavri.ai) |
${ENROLLMENT_TOKEN} | The token you minted in step 2 |
${ORG_ID} | Your pavri org_id (visible at /admin/tenant in the dashboard) |
Upload the substituted profile as a Custom Profile in the Workspace ONE UEM console (Devices → Profiles → Add → Custom). The profile delivers the three environment variables to the sensor process on both macOS and Windows.
For the full list of supported environment variables and command-line flags, see Sensor deployment reference.
4. Package signing
Wrap the signed package for UEM ingestion:
infra/mdm/workspace-one/wrap.sh /path/to/pavri-endpointd.pkg
# or
infra/mdm/workspace-one/wrap.sh /path/to/pavri-endpoint-windows-amd64-<version>.zip
The wrapper copies the signed artifact with a .wsone suffix for upload to the UEM
application catalog. The underlying binary signing requirements are identical to those
described in the Jamf (Developer ID, macOS) and Intune (Authenticode, Windows) runbooks.
5. Staged rollout
- Create a Workspace ONE smart group
pavri-pilot(5% of enrolled devices; use a device ownership filter or a custom device attribute). - Deploy the Environment Variables profile to
pavri-pilotwith Required intent. Confirm profile installation completes before proceeding. - Upload the wrapped
.wsonepackage to the Internal Application catalog and assign it topavri-pilotwith Auto deployment intent. - Set the tenant default protection-profile to
observemode at/admin/protection-profiles. - After 1 week of clean telemetry: expand the smart group to 25% of fleet, switch
tenant default to
soft_enforce. - After 1 further week: expand to 100% and switch to
enforce.
For mixed macOS + Windows fleets, create separate smart groups per platform and deploy the platform-appropriate package to each. The Environment Variables profile XML is identical for both platforms.
6. Rollback
- Per-endpoint emergency: at
/admin/endpoints/{endpoint_id} → Set protection mode → observe— takes effect immediately, no UEM touch required. - Fleet-wide emergency: at
/admin/protection-profiles → set tenant default to observe. - Full uninstall via Workspace ONE: change the application assignment to
Uninstall intent in the UEM console. The uninstall action runs the platform-native
package removal:
- macOS:
pkgutil --forget com.pavri.endpointd && rm /usr/local/bin/pavri-endpointd - Windows: Intune/Win32 app uninstall via the UEM application removal action,
which invokes the bundled
uninstall.ps1
- macOS:
7. Post-install verification
macOS — on any enrolled endpoint:
# Verify the binary is present.
ls -l /usr/local/bin/pavri-endpointd
# Verify the LaunchDaemon is loaded and running.
sudo launchctl print system/com.pavri.endpointd | grep -E 'state|pid'
# Verify native-messaging manifests are healthy for any browsers in scope.
/usr/local/bin/endpointctl status-nm-manifests --browser=all
Windows — on any enrolled endpoint (PowerShell as Administrator):
# Verify the service is registered and running.
sc.exe query PavriEndpointd
# Verify native-messaging manifests.
& "C:\Program Files\Pavri\pavri-endpointd\endpointctl.exe" status-nm-manifests --browser=all
Confirm the endpoint shows up at /admin/endpoints in the dashboard within 60 seconds
of the heartbeat interval.
Files in this rollout
infra/mdm/workspace-one/pavri-endpointd-profile.xml— UEM Environment Variables profile.infra/mdm/workspace-one/wrap.sh— package wrapper for UEM ingestion.infra/mdm/workspace-one/README.md— short on-disk reference for Workspace ONE operators.