Skip to main content
Eptura Knowledge Center

Install SVLive Agent macOS

Overview


This article covers the installation of the SVLive Agent macOS:

Prerequisites


  • macOS 14 (Sonoma) or later 
  • Administrator privileges (sudo access) 
  • Configuration API endpoint URL from your organization 

Important Notes


  • No configuration profile is required. Users must accept the Location Services prompt on first launch. Make sure you communicate this to end users as part of the rollout. 
  • Restart of the machine is required after installation.

Permissions


  • SVLiveAgent requires Location Services only for Wi-Fi network scanning. GPS coordinates are not collected; location permission is a macOS requirement for CoreWLAN Wi-Fi scanning. 
  • Location Services is the only permission required. The app uses IOKit for idle detection and standard macOS APIs for system events; no Accessibility, Apple Events, Input Monitoring, or other TCC permissions are needed. 

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-3.5.4.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 is running.

Restart the machine and the SVLiveAgent icon will display in your menu bar. 

Location Permission

On first launch, macOS displays a Location Services permission dialog. Click the Open Settings button and follow the instructions so the app can scan Wi-Fi networks. 

clipboard_052bba41-8470-477a-aadd-a633e04186b6.png

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) 

Remember, a restart of the machine is required after the installation.

Deployment Package Contents 

File  Purpose 
SVLiveAgent.pkg (or versioned filename)  Signed installer package 
svliveagent-installer.sh Installation wrapper script 

Do not deploy a PPPC configuration profile. No PPPC profile is required or supported for SVLiveAgent permissions. 

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     
          
    # 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)

Use a script-only policy that downloads the PKG and svliveagent-installer.sh, then runs the installer script. This matches the SSH deployment flow and ensures the configuration endpoint is written correctly. 

Do not combine a Jamf Package deployment with svliveagent-installer.sh in the same policy, the installer script performs its own uninstall/reinstall cycle and expects the PKG file on disk at the path you pass to PKGFILE

Step 1. Host the Files 

Host the .pkg and svliveagent-installer.sh at URLs reachable from managed Macs (Jamf distribution point, CDN, or internal file server). 

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. Add Script 
    1. In the policy, go to Scripts tab. 
    2. Click Configure.
    3. Add this script: 
        #!/bin/bash     
              
        # Jamf policy parameters     
        CONFIG_ENDPOINT="$4"   # e.g. https://your-config-endpoint/v1     
        PKG_URL="$5"           # URL to download the .pkg     
        INSTALLER_URL="$6"     # URL to download svliveagent-installer.sh     
        PKG_FILENAME="$7"      # Local filename, e.g. SVLiveAgent-macOS-3.5.4.pkg     
              
        TEMP_DIR="/tmp/svliveagent-install"     
        mkdir -p "$TEMP_DIR"     
        cd "$TEMP_DIR"     
              
        curl -L -f -o "$PKG_FILENAME" "$PKG_URL"     
        curl -L -f -o svliveagent-installer.sh "$INSTALLER_URL"     
        chmod +x svliveagent-installer.sh     
              
        bash ./svliveagent-installer.sh PKGFILE="$PKG_FILENAME" CONFIGAPIADDRESS="$CONFIG_ENDPOINT"     
              
        cd /     
        rm -rf "$TEMP_DIR"     
        exit 0   
    1. Set Jamf script parameters: 
    • Parameter 4: Configuration endpoint URL 
    • Parameter 5: URL to the PKG file 
    • Parameter 6: URL to svliveagent-installer.sh 
    • Parameter 7: PKG filename (must match the downloaded file name) 
      Step 4. Scope the Policy 
      1. Go to the Scope tab. 
      2. Add target computers or computer groups
      3. Save the policy

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

      Microsoft Intune, Kandji, Mosyle, and Other MDM 

      Deploy the PKG and svliveagent-installer.sh using your MDM's standard macOS app deployment workflow. Use a post-install script to write the configuration endpoint to /Library/Application Support/SVLiveAgent/sps.inior pass CONFIGAPIADDRESS via the installer script.

      Do not upload a PPPC configuration profile. 

      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: 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/     
                
          # Install application     
          cd /tmp     
          chmod +x svliveagent-installer.sh     
          sudo bash ./svliveagent-installer.sh PKGFILE="$PKG_FILENAME" CONFIGAPIADDRESS="$CONFIG_ENDPOINT"     
                
          # Cleanup     
          rm -f /tmp/"$PKG_FILENAME" /tmp/svliveagent-installer.sh  

      Privacy Permissions (Important for IT Teams)


      SVLiveAgent requires one macOS privacy permission: 

      Permission Purpose  Required? 
      Location Services Wi-Fi network scanning (CoreLocation / CoreWLAN)  Yes

      Permission Behavior

      On first launch, macOS displays a Location Services permission dialog. Click the Open Settings button and follow the instructions so the app can scan Wi-Fi networks. 

      If the user denies, the app shows instructions to enable Location Services in System Settings.

      clipboard_052bba41-8470-477a-aadd-a633e04186b6.png

      Without Location permission:   

      • Wi-Fi scanning is limited or unavailable. 
      • The app continues to run, but presence detection may be degraded. 

      IT / MDM Considerations


      Apple restriction:

      Location Services permission cannot be pre-approved or silently enabled via MDM or PPPC configuration profiles. 

       What IT can do: 

      • Communicate to users that they must click Allow on the Location permission prompt. 
      • Provide instructions for manually enabling permission if the prompt was dismissed. 

      What IT cannot do: 

      • Silently grant Location permission via configuration profiles. 
      • Bypass the user consent requirement using PPPC.

      Granting Location Permission (End User)

      If the permission prompt was dismissed or denied: 

      1. Open System Settings. 
      2. Go to Privacy & Security > Location Services. 
      3. Scroll to find SVLiveAgent. 
      4. Enable the checkbox. 
      5. The app will automatically detect the change (no restart needed). 

      No PPPC Profile Required


      Do not deploy a Privacy Preferences Policy Control (PPPC) configuration profile for SVLiveAgent. 

       A previous version of this article included a PPPC profile with Location, Accessibility, and AppleEvents keys. That profile was invalid: 

      Key in old profile  Problem 
      Location  Not a valid PPPC service key on macOS. Location is not managed through TCC/PPPC. Including this key causes MDM profile validation or installation failures.
      Accessibility  Not required by SVLiveAgent. Apple has deprecated granting Accessibility via PPPC (removal planned in macOS 27).
      AppleEvents Not required by SVLiveAgent.

       Migrate from the Old PPPC Profile

      If you previously deployed the old SVLiveAgent-PPPC-Profile.mobileconfig, remove it before redeploying: 

         # List installed profiles     
          sudo profiles list | grep serraview     
                
          # Remove the old profile (use the identifier shown in profiles list)     
          sudo profiles remove -identifier com.serraview.sps.pppc-profile     
          sudo profiles remove -identifier com.serraview.sps.pppc   

      Then deploy using the PKG and svliveagent-installer.sh workflow only. Users accept the Location Services prompt on first launch. 

      Configuration File


      Location 

      /Library/Application Support/SVLiveAgent/sps.ini     

      Format 

          [SPS]     
          config-endpoint=https://<your-config-endpoint>/v1     

      The [SPS] section header is optional and the app reads config-endpoint regardless but the installer script writes this format automatically when you provide theCONFIGAPIADDRESS

      Permissions 

          sudo chmod 644 "/Library/Application Support/SVLiveAgent/sps.ini"     
          sudo chown root:admin "/Library/Application Support/SVLiveAgent/sps.ini" 

      Verification


      Check if App is Running

      pgrep -x SVLiveAgent     

      If running, this returns the process ID. 

      Check LaunchAgent Status 

      launchctl list | grep com.serraview.sps

      Verify Configuration 

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

      Check Application Location 

      ls -la /Applications/SVLiveAgent.app     

      Verify Location Permission 

      Recommended: Use System Settings (Location Services is managed by locationd, not the standard TCC database): 

      1. Open System Settings > Privacy & Security > Location Services
      2. Confirm SVLiveAgent is listed and enabled. 

      To reset Location permissions for testing (requires admin): 

      tccutil reset Location com.serraview.sps     

      Then restart the app and it will prompt for permission again. 

      Check Logs 

        # LaunchAgent stdout/stderr     
          tail -f /tmp/svliveagent.log     
          tail -f /tmp/svliveagent.error.log     
                
          # Structured app log     
          tail -f ~/Library/Application\ Support/SVLiveAgent/SVLiveAgent.log  

      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"     
                
          # Remove old PPPC profile if previously installed     
          sudo profiles remove -identifier com.serraview.sps.pppc-profile 2>/dev/null     
          sudo profiles remove -identifier com.serraview.sps.pppc 2>/dev/null     
                
          # Forget package receipt     
          sudo pkgutil --forget com.serraview.sps  

      Enable Location Permission for SVLiveAgent


      If user denies the permission, follow below instructions to enable location permission for SVLiveAgent.

      1. Open Settings.
      2. Go to Privacy & Security > Location Services.
      3. Find "SVLiveAgent" in the list.
      4. Enable Location Services.