Skip to main content
Eptura Knowledge Center

Install SVLive Agent macOS

Overview


This article covers the installation of the SVLive Agent macOS:

  • Prerequisites
    • Single Machine Installation
    • Bulk Installation for IT Teams
  • Deployment Options 
    • Option 1 - Remote Deployment via SSH
    • Option 2 - MDM Deployment (Jamf Pro)
    • Option 3 - Ansible Deployment 
    • Option 4 - Simple Network Deployment Script 
  • Privacy Permissions (Important for IT Teams)
    • Required Permissions
    • Permission Behavior
    • Pre-Grant Permissions (Enterprise Deployment) 
      • Method 1: PPPC Profile via MDM
      • Method 2: Command-Line Script (macOS 13+ Only) 
      • Method 3: Combined Installation Script 
  • Uninstall the SVLive Agent

Prerequisites


  • macOS 14 (Sonoma) or later 
  • Administrator privileges (sudo access) 
  • Configuration API endpoint URL from your organization 
  • For Enterprise: MDM solution for PPPC profile deployment (recommended) 

Grant location permission to the app. Without this permission, the application will not function correctly, and user location data will not be captured. (GPS coordinates are not fetched; location permission is required for Wi-Fi scanning purposes.) 

Single Machine Installation


Step 1. Download the Package 

Download the application package file sps-macos-3.5.4.zip and unzip the installer script to a local directory. 

Step 2. Run the Installation Command 

Open Terminal and navigate to the directory containing the package and installer script: 

cd /path/to/download/directory 

Run the installation command with your configuration endpoint: 

sudo bash ./svliveagent-installer.sh PKGFILE=<package-filename>.pkg CONFIGAPIADDRESS="<your-config-endpoint-url>" 

Parameters: 

  • PKGFILE - The name of the downloaded package file (e.g., SVLiveAgent-macOS-1.0.0.pkg) 
  • CONFIGAPIADDRESS - Your organization's configuration API endpoint URL (provided by your IT team) 

Step 3. Enter Administrator Password 

You will be prompted to enter your administrator password to proceed with installation. 

Step 4. Verify Installation 

The installer will: 

  • Stop any existing instances 
  • Clean up previous installations 
  • Install the application to /Applications/SVLiveAgent.app 
  • Configure the LaunchAgent for auto-start 
  • Start the application 

You will see that the installation is complete and the app running. The SVLiveAgent icon will display in your menu bar. 

If the app does not appear in the menu bar after installation, restart your Mac: 

sudo shutdown -r now 

After restart, the app will launch automatically via LaunchAgent.

Bulk Installation for IT Teams


Deployment Options 

IT teams can deploy SVLiveAgent across multiple machines using: 

  • Option 1 - Remote Shell Scripts (SSH) 
  • Option 2 - MDM Solutions (Jamf, Kandji, Mosyle, etc.) 
  • Option 3 - Configuration Management Tools (Ansible, Chef, Puppet) 

Option 1 - Remote Deployment via SSH

Create a deployment script that can be executed remotely.

deploy-svliveagent.sh: 

#!/bin/bash 
 
# Configuration 
CONFIG_ENDPOINT="<your-config-endpoint-url>" 
PKG_URL="<url-to-package-file>" 
INSTALLER_URL="<url-to-installer-script>" 
TEMP_DIR="/tmp/svliveagent-install" 
PKG_FILENAME="<package-filename>.pkg" 
 
# Create temporary directory 
mkdir -p "$TEMP_DIR" 
cd "$TEMP_DIR" 
 
# Download package and installer 
curl -L -o "$PKG_FILENAME" "$PKG_URL" 
curl -L -o svliveagent-installer.sh "$INSTALLER_URL" 
 
# Make installer executable 
chmod +x svliveagent-installer.sh 
 
# Create PPPC profile inline 
cat > SVLiveAgent-PPPC-Profile.mobileconfig << 'PPPC_EOF' 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PayloadContent</key> 
    <array> 
        <dict> 
            <key>PayloadType</key> 
            <string>com.apple.TCC.configuration-profile-policy</string> 
            <key>PayloadIdentifier</key> 
            <string>com.serraview.sps.privacy</string> 
            <key>PayloadUUID</key> 
            <string>D7F3E8A9-B6C5-4D2A-9E7F-3C8B5A1D4E6F</string> 
            <key>PayloadVersion</key> 
            <integer>1</integer> 
            <key>Services</key> 
            <dict> 
                <key>Location</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                </array> 
                <key>Accessibility</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                </array> 
            </dict> 
        </dict> 
    </array> 
    <key>PayloadDisplayName</key> 
    <string>SVLiveAgent Permissions</string> 
    <key>PayloadIdentifier</key> 
    <string>com.serraview.sps.pppc</string> 
    <key>PayloadUUID</key> 
    <string>A1B2C3D4-E5F6-4A8B-9C2D-1E3F5A7B9C8D</string> 
    <key>PayloadType</key> 
    <string>Configuration</string> 
    <key>PayloadVersion</key> 
    <integer>1</integer> 
    <key>PayloadScope</key> 
    <string>System</string> 
</dict> 
</plist> 
PPPC_EOF 
 
# Install PPPC profile first 
echo "Installing privacy permissions profile..." 
sudo profiles install -path ./SVLiveAgent-PPPC-Profile.mobileconfig 2>/dev/null || echo "PPPC profile already installed" 
 
# Run installation 
sudo bash ./svliveagent-installer.sh PKGFILE="$PKG_FILENAME" CONFIGAPIADDRESS="$CONFIG_ENDPOINT" 
 
# Cleanup 
cd / 
rm -rf "$TEMP_DIR" 
 
echo "" 
echo "  If app doesn't appear in menu bar, restart the system:" 
echo "   sudo shutdown -r now" 

Deploy to multiple machines 

# Deploy to specific hosts 
for host in <hostname1> <hostname2> <hostname3>; do 
    echo "Installing on $host..." 
    scp deploy-svliveagent.sh <username>@$host:/tmp/ 
    ssh <username>@$host "sudo bash /tmp/deploy-svliveagent.sh" 
done 
# Or deploy using host list file 
while read host; do 
    echo "Installing on $host..." 
    scp deploy-svliveagent.sh <username>@$host:/tmp/ 
    ssh <username>@$host "sudo bash /tmp/deploy-svliveagent.sh" 
done < hosts.txt 

Option 2 - MDM Deployment (Jamf Pro)

Step 1. Upload Package 
  1. In Jamf Pro, navigate to Settings > Computer Management > Packages
  2. Click New.
  3. Upload the application package file (.pkg) 
  4. Upload svliveagent-installer.sh as a separate package. 
Step 2. Create Policy 
  1. Navigate to Computers > Policies > New
  2. Configure the policy: 
    • Display Name: Install SVLiveAgent 
    • Trigger: Recurring Check-In or Custom Event 
    • Execution Frequency: Once per computer 
Step 3. Create and Upload PPPC Profile 
  1. Create the PPPC profile file (see PPPC Profile section above). 
  2. Navigate to Configuration Profiles > New
  3. Upload SVLiveAgent-PPPC-Profile.mobileconfig 
  4. Set to Computer Level
  5. Scope to same target computers as the policy. 
Step 4. Add Script 
  1. In the policy, go to Scripts tab. 
  2. Click Configure.
  3. Add this script: 
#!/bin/bash 
 
# Variables (set in Jamf policy parameters) 
CONFIG_ENDPOINT="$4"  # Parameter 4 in Jamf 
PKG_FILENAME="$5"     # Parameter 5 in Jamf (e.g., SVLiveAgent-macOS-1.0.0.pkg) 
 
# Download installer script 
curl -L -o /tmp/svliveagent-installer.sh "<url-to-installer-script>" 
chmod +x /tmp/svliveagent-installer.sh 
 
# Run installation 
cd /tmp 
sudo bash ./svliveagent-installer.sh PKGFILE="$PKG_FILENAME" CONFIGAPIADDRESS="$CONFIG_ENDPOINT" 
 
# Cleanup 
rm -f /tmp/svliveagent-installer.sh 
 
exit 0 
  1. Set Parameter 4 to your configuration endpoint URL
  2. Set Parameter 5 to the package filename
Step 5. Add Package 
  1. In the policy, go to the Packages tab. 
  2. Add the uploaded package file
  3. Set action to Install
Step 6. Scope the Policy 
  1. Go to the Scope tab. 
  2. Add target computers or computer groups
  3. Save the policy

The PPPC profile must deploy before or with the application installation to prevent permission prompts. 

If the app doesn't start automatically after installation, the systems may need to be restarted. 

Option 3 - Ansible Deployment 

Step 1. Create an Ansible playbook for deployment
install-svliveagent.yml: 

--- 

name: Deploy SVLiveAgent to macOS machines 

  hosts: macos_clients 
  become: yes 
  vars: 
    config_endpoint: "<your-config-endpoint-url>" 
    pkg_url: "<url-to-package-file>" 
    pkg_filename: "<package-filename>.pkg" 
    installer_url: "<url-to-installer-script>" 
    temp_dir: "/tmp/svliveagent-install" 
   
  tasks: 

name: Create temporary directory 

      file: 
        path: "{{ temp_dir }}" 
        state: directory 
        mode: '0755' 

name: Create PPPC profile 

      copy: 
        content: | 
          <?xml version="1.0" encoding="UTF-8"?> 
          <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
          <plist version="1.0"> 
          <dict> 
            <key>PayloadContent</key> 
            <array> 
              <dict> 
                <key>PayloadType</key> 
                <string>com.apple.TCC.configuration-profile-policy</string> 
                <key>PayloadIdentifier</key> 
                <string>com.serraview.sps.privacy</string> 
                <key>PayloadUUID</key> 
                <string>D7F3E8A9-B6C5-4D2A-9E7F-3C8B5A1D4E6F</string> 
                <key>PayloadVersion</key> 
                <integer>1</integer> 
                <key>Services</key> 
                <dict> 
                  <key>Location</key> 
                  <array> 
                    <dict> 
                      <key>Allowed</key> 
                      <integer>1</integer> 
                      <key>BundleIdentifier</key> 
                      <string>com.serraview.sps</string> 
                      <key>CodeRequirement</key> 
                      <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                  </array> 
                  <key>Accessibility</key> 
                  <array> 
                    <dict> 
                      <key>Allowed</key> 
                      <integer>1</integer> 
                      <key>BundleIdentifier</key> 
                      <string>com.serraview.sps</string> 
                      <key>CodeRequirement</key> 
                      <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                  </array> 
                </dict> 
              </dict> 
            </array> 
            <key>PayloadDisplayName</key> 
            <string>SVLiveAgent Permissions</string> 
            <key>PayloadIdentifier</key> 
            <string>com.serraview.sps.pppc</string> 
            <key>PayloadType</key> 
            <string>Configuration</string> 
            <key>PayloadVersion</key> 
            <integer>1</integer> 
            <key>PayloadScope</key> 
            <string>System</string> 
          </dict> 
          </plist> 
        dest: "{{ temp_dir }}/SVLiveAgent-PPPC.mobileconfig" 
        mode: '0644' 
     
name: Download package 

      get_url: 
        url: "{{ pkg_url }}" 
        dest: "{{ temp_dir }}/{{ pkg_filename }}" 
        mode: '0644' 
   
name: Download installer script 

      get_url: 
        url: "{{ installer_url }}" 
        dest: "{{ temp_dir }}/svliveagent-installer.sh" 
        mode: '0755' 
     
name: Install PPPC profile 

      command: profiles install -path {{ temp_dir }}/SVLiveAgent-PPPC.mobileconfig 
      become: yes 
      ignore_errors: yes 
    
name: Run installer 

      command: > 
        bash {{ temp_dir }}/svliveagent-installer.sh 
        PKGFILE={{ pkg_filename }} 
        CONFIGAPIADDRESS="{{ config_endpoint }}" 
      args: 
        chdir: "{{ temp_dir }}" 
      become: yes 
     
name: Verify installation 

      command: pgrep -x SVLiveAgent 
      register: app_running 
      failed_when: app_running.rc > 1 
      changed_when: false 
     
name: Cleanup temporary directory 

      file: 
        path: "{{ temp_dir }}" 
        state: absent 
     
name: Report installation status 

      debug: 
        msg: "SVLiveAgent installed and running on {{ inventory_hostname }}" 
      when: app_running.rc == 0 
     
name: Notify if restart needed 

      debug: 
        msg: "App not running. System restart may be required on {{ inventory_hostname }}" 
      when: app_running.rc != 0 
Step 2. Run the playbook

ansible-playbook -i inventory.ini install-svliveagent.yml 

If the app doesn't start automatically, systems may need to be restarted. 

Option 4 - Simple Network Deployment Script 

For smaller environments, use a simple script to deploy from a network share.

 network-install.sh: 

#!/bin/bash 
 
# Configuration 
NETWORK_PATH="<path-to-network-share>" 
CONFIG_ENDPOINT="<your-config-endpoint-url>" 
PKG_FILENAME="<package-filename>.pkg" 
 
# Copy files locally 
cp "$NETWORK_PATH/$PKG_FILENAME" /tmp/ 
cp "$NETWORK_PATH/svliveagent-installer.sh" /tmp/ 
 
# Create PPPC profile 
cat > /tmp/SVLiveAgent-PPPC.mobileconfig << 'PPPC_EOF' 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PayloadContent</key> 
    <array> 
        <dict> 
            <key>PayloadType</key> 
            <string>com.apple.TCC.configuration-profile-policy</string> 
            <key>PayloadIdentifier</key> 
            <string>com.serraview.sps.privacy</string> 
            <key>PayloadUUID</key> 
            <string>D7F3E8A9-B6C5-4D2A-9E7F-3C8B5A1D4E6F</string> 
            <key>PayloadVersion</key> 
            <integer>1</integer> 
            <key>Services</key> 
            <dict> 
                <key>Location</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                </array> 
                <key>Accessibility</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                    </dict> 
                </array> 
            </dict> 
        </dict> 
    </array> 
    <key>PayloadDisplayName</key> 
    <string>SVLiveAgent Permissions</string> 
    <key>PayloadIdentifier</key> 
    <string>com.serraview.sps.pppc</string> 
    <key>PayloadType</key> 
    <string>Configuration</string> 
    <key>PayloadVersion</key> 
    <integer>1</integer> 
    <key>PayloadScope</key> 
    <string>System</string> 
</dict> 
</plist> 
PPPC_EOF 
 
# Install PPPC profile 
echo "Installing privacy permissions profile..." 
sudo profiles install -path /tmp/SVLiveAgent-PPPC.mobileconfig 2>/dev/null || echo "PPPC profile already installed" 
 
# Install application 
cd /tmp 
sudo bash ./svliveagent-installer.sh PKGFILE="$PKG_FILENAME" CONFIGAPIADDRESS="$CONFIG_ENDPOINT" 
 
# Cleanup 
rm -f /tmp/SVLiveAgent-PPPC.mobileconfig /tmp/"$PKG_FILENAME" /tmp/svliveagent-installer.sh 

Privacy Permissions (Important for IT Teams)


Due to Apple's TCC (Transparency, Consent, and Control) system, the application requires certain privacy permissions to function properly. 

Required Permissions 

SVLiveAgent requires the following macOS privacy permissions to function: 

  • Location Services - Required for WiFi network scanning (CoreLocation API). 
  • Accessibility - Required for user idle time detection. 
  • Apple Events - Required for system event monitoring. 

Permission Behavior

Without pre-configuration: 

  • Users will see 3 permission prompts on first launch. 
  • They must manually click "Allow" for each. 
  • App will not function properly until all permissions are granted. 

With PPPC profile (recommended for enterprise): 

  • Permissions are pre-granted. 
  • No user prompts. 
  • App works immediately after installation. 

Pre-Grant Permissions (Enterprise Deployment) 

Method 1: PPPC Profile via MDM

RECOMMENDED 

Step 1. Create PPPC Profile 

Create a file named SVLiveAgent-PPPC-Profile.mobileconfig with this content:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PayloadContent</key> 
    <array> 
        <dict> 
            <key>PayloadDescription</key> 
            <string>Privacy Preferences Policy Control for SVLiveAgent</string> 
            <key>PayloadDisplayName</key> 
            <string>SVLiveAgent Privacy Preferences</string> 
            <key>PayloadIdentifier</key> 
            <string>com.serraview.sps.privacy-preferences</string> 
            <key>PayloadOrganization</key> 
            <string>Eptura, Inc.</string> 
            <key>PayloadType</key> 
            <string>com.apple.TCC.configuration-profile-policy</string> 
            <key>PayloadUUID</key> 
            <string>D7F3E8A9-B6C5-4D2A-9E7F-3C8B5A1D4E6F</string> 
            <key>PayloadVersion</key> 
            <integer>1</integer> 
            <key>Services</key> 
            <dict> 
                <key>Location</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                        <key>Comment</key> 
                        <string>Allow SVLiveAgent to access location for WiFi scanning</string> 
                    </dict> 
                </array> 
                <key>Accessibility</key> 
                <array> 
                    <dict> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                        <key>Comment</key> 
                        <string>Allow SVLiveAgent to detect user idle time</string> 
                    </dict> 
                </array> 
                <key>AppleEvents</key> 
                <array> 
                    <dict> 
                        <key>AEReceiverCodeRequirement</key> 
                        <string>identifier "com.apple.systemevents" and anchor apple</string> 
                        <key>AEReceiverIdentifier</key> 
                        <string>com.apple.systemevents</string> 
                        <key>AEReceiverIdentifierType</key> 
                        <string>bundleID</string> 
                        <key>Allowed</key> 
                        <integer>1</integer> 
                        <key>BundleIdentifier</key> 
                        <string>com.serraview.sps</string> 
                        <key>CodeRequirement</key> 
                        <string>identifier "com.serraview.sps" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = HXP7WFL58F</string> 
                        <key>Comment</key> 
                        <string>Allow SVLiveAgent to monitor system events</string> 
                    </dict> 
                </array> 
            </dict> 
        </dict> 
    </array> 
    <key>PayloadDescription</key> 
    <string>Privacy Preferences Policy Control Profile for SVLiveAgent. Grants Location, Accessibility, and Apple Events permissions.</string> 
    <key>PayloadDisplayName</key> 
    <string>SVLiveAgent Privacy Permissions</string> 
    <key>PayloadIdentifier</key> 
    <string>com.serraview.sps.pppc-profile</string> 
    <key>PayloadOrganization</key> 
    <string>Eptura, Inc.</string> 
    <key>PayloadRemovalDisallowed</key> 
    <false/> 
    <key>PayloadScope</key> 
    <string>System</string> 
    <key>PayloadType</key> 
    <string>Configuration</string> 
    <key>PayloadUUID</key> 
    <string>A1B2C3D4-E5F6-4A8B-9C2D-1E3F5A7B9C8D</string> 
    <key>PayloadVersion</key> 
    <integer>1</integer> 
</dict> 
</plist> 
Step 2. Deploy PPPC Profile 
Jamf Pro
  1. From Jamf Pro, navigate to Configuration Profiles > New
  2. Upload the SVLiveAgent-PPPC-Profile.mobileconfig file. 
  3. Set Level to Computer Level
  4. Set Distribution to Install Automatically
  5. Go to the Scope tab.
  6. Add target computers or groups
  7. Save and deploy. 
Microsoft Intune 
  1. From Microsoft Intune, navigate to Devices > macOS > Configuration profiles
  2. Click Create profile > Templates > Custom
  3. Upload SVLiveAgent-PPPC-Profile.mobileconfig file.
  4. Assign to device groups
  5. Deploy. 
Kandji, Mosyle, or Other MDM 

Upload as custom configuration profile 

Deploy to target device groups 

Manual Installation (Testing) 

sudo profiles install -path ./SVLiveAgent-PPPC-Profile.mobileconfig 

Method 2: Command-Line Script (macOS 13+ Only) 

Create a script named grant-permissions.sh. 

#!/bin/bash 
# SVLiveAgent - Grant Privacy Permissions Script 
# Requires: macOS 13.0 (Ventura) or later 
 
set -e 
 
APP_BUNDLE_ID="com.serraview.sps" 
APP_PATH="/Applications/SVLiveAgent.app" 
 
echo "==========================================" 
echo "SVLiveAgent Permission Granting Script" 
echo "==========================================" 
 
# Check if app is installed 
if [ ! -d "$APP_PATH" ]; then 
    echo " ERROR: SVLiveAgent not found at $APP_PATH" 
    exit 1 
fi 
 
# Check macOS version 
MACOS_VERSION=$(sw_vers -productVersion | cut -d. -f1) 
if [ "$MACOS_VERSION" -lt 13 ]; then 
    echo "  ERROR: Requires macOS 13.0 or later" 
    echo "   Your version: $(sw_vers -productVersion)" 
    echo "   Please use PPPC profile instead" 
    exit 1 
fi 
 
# Check if running as root 
if [ "$EUID" -ne 0 ]; then 
    echo " ERROR: Must run with sudo" 
    exit 1 
fi 
 
echo "Granting permissions to $APP_BUNDLE_ID..." 
 
# Grant Location Services 
echo "→ Granting Location Services..." 
tccutil reset Location "$APP_BUNDLE_ID" 2>/dev/null 
tccutil enable Location "$APP_BUNDLE_ID" && echo "  ✓ Location Services granted" 
 
# Grant Accessibility 
echo "→ Granting Accessibility..." 
tccutil reset Accessibility "$APP_BUNDLE_ID" 2>/dev/null 
tccutil enable Accessibility "$APP_BUNDLE_ID" && echo "  ✓ Accessibility granted" 
 
echo "" 
echo " Permissions granted successfully" 
echo "" 
echo "Restart the app:" 
echo "  killall SVLiveAgent 2>/dev/null || true" 
echo "  open /Applications/SVLiveAgent.app" 

Usage: 

chmod +x grant-permissions.sh 
sudo bash ./grant-permissions.sh  

Limitation: 

Only works on macOS 13.0 (Ventura) and later. 

Method 3: Combined Installation Script 

For automated deployments, combine PPPC installation with app installation:.

#!/bin/bash 
# complete-install.sh - Install app with permissions 
 
CONFIG_ENDPOINT="<your-config-endpoint-url>" 
PKG_FILENAME="<package-filename>.pkg" 
PPPC_PROFILE="SVLiveAgent-PPPC-Profile.mobileconfig" 
 
# Step 1: Install PPPC profile (if available) 
if [ -f "$PPPC_PROFILE" ]; then 
    echo "Installing privacy permissions profile..." 
    sudo profiles install -path ./"$PPPC_PROFILE" 2>/dev/null 
    echo "✓ PPPC profile installed" 
fi 
 
# Step 2: Install application 
echo "Installing application..." 
sudo bash ./svliveagent-installer.sh \ 
    PKGFILE="$PKG_FILENAME" \ 
    CONFIGAPIADDRESS="$CONFIG_ENDPOINT" 
 
echo "" 
echo " Installation complete with permissions pre-granted!" 
echo "" 
echo "  If app doesn't appear in menu bar, restart the system:" 
echo "   sudo shutdown -r now" 
Verification 

Check if App is Running 

pgrep -x SVLiveAgent 

If running, this will return the process ID. 

Check LaunchAgent Status 

launchctl list | grep com.serraview.sps 

Verify Configuration 

cat "/Library/Application Support/SVLiveAgent/sps.ini" 

This will display your configuration endpoint. 

Check Application Location 

ls -la /Applications/SVLiveAgent.app   

Verify Privacy Permissions 

# Check installed PPPC profile 
sudo profiles list | grep com.serraview.sps 
 
# Check TCC database for permissions 
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db \ 
  "SELECT service, client, allowed FROM access WHERE client='com.serraview.sps';"  

Uninstall the SVLive Agent


To remove SVLiveAgent complete the following:

# Stop the app 
killall SVLiveAgent 
 
# Unload LaunchAgent 
launchctl bootout gui/$(id -u) /Library/LaunchAgents/com.serraview.sps.plist 
 
# Remove files 
sudo rm -rf /Applications/SVLiveAgent.app 
sudo rm -f /Library/LaunchAgents/com.serraview.sps.plist 
sudo rm -rf "/Library/Application Support/SVLiveAgent" 
 
# Forget package receipt 
sudo pkgutil --forget com.serraview.sps