Install SVLive Agent macOS
Overview
This article covers the installation of the SVLive Agent macOS:
- Prerequisites
- Permissions
- Single Machine Installation
- Step 1. Download the Package
- Step 2. Run the Installation Command
- Step 3. Enter Administrator Password
- Step 4. Verify 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)
- IT/MDM Considerations
- No PPPC Profile Required
- Configuration File
- Verification
- Uninstall the SVLive Agent
- Enable Location Permission for SVLiveAgent
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.

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
- Navigate to Computers > Policies > New.
- Configure the policy:
- Display Name: Install SVLiveAgent
- Trigger: Recurring Check-In or Custom Event
- Execution Frequency: Once per computer
Step 3. Add Script
- In the policy, go to Scripts tab.
- Click Configure.
- 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
- 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
- Go to the Scope tab.
- Add target computers or computer groups.
- 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.

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:
- Open System Settings.
- Go to Privacy & Security > Location Services.
- Scroll to find SVLiveAgent.
- Enable the checkbox.
- 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):
- Open System Settings > Privacy & Security > Location Services.
- 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.
- Open Settings.
- Go to Privacy & Security > Location Services.
- Find "SVLiveAgent" in the list.
- Enable Location Services.
