Pult Presence Docs
Pult AgentMDM Deployment

Jamf Pro Deployment (macOS)

Deploy the Pult Agent on macOS via Jamf Pro using a wrapper .pkg, an Extension Attribute for version detection, and a Smart Group-scoped Policy for continuous compliance.

This guide deploys the Pult Agent on macOS through Jamf Pro. It uses the wrapper .pkg you build in Build the macOS MDM Package plus a version-detecting Extension Attribute, a Smart Computer Group, and a Policy that re-installs the agent whenever a Mac is missing it or running the wrong version.

Jamf Pro doesn't have a single "Custom App with audit script" object like Kandji or Mosyle. The same outcome -- detect missing or out-of-date installs and remediate automatically -- requires three Jamf objects: an Extension Attribute, a Smart Computer Group, and a Policy. This guide walks through all three.

Prerequisites

  • A Jamf Pro instance with admin access.
  • The Pult Agent wrapper .pkg, built per Build the macOS MDM Package.
  • Macs already enrolled in Jamf Pro and reporting inventory.

Step 1: Upload the Package

  1. In Jamf Pro, go to Settings → Computer management → Packages.
  2. Click + New.
  3. Upload your pult-agent-mdm.pkg. Jamf Pro reads the metadata and pre-fills the display name and category.
  4. Set the Display Name to something like Pult Agent 0.2.9-beta1 (MDM) so version updates are easy to identify.
  5. Click Save.

New package upload form in Jamf Pro with display name, filename, and Save button highlighted

Step 2: Create the Version Detection Extension Attribute

The Extension Attribute (EA) is a script that runs on each Mac during inventory collection and reports the installed Pult Agent version (or not_installed).

  1. Go to Settings → Computer management → Extension Attributes.

  2. Click + New.

  3. Configure:

    • Display Name: Pult Agent Version
    • Description: Reports the installed Pult Agent version, or "not_installed".
    • Data Type: String
    • Inventory Display: Extension attributes
    • Input Type: Script
  4. Paste this script:

    #!/bin/bash
    APP_PATH="/Applications/Pult Agent.app"
    if [[ ! -d "${APP_PATH}" ]]; then
        echo "<result>not_installed</result>"
        exit 0
    fi
    VERSION=$(/usr/bin/defaults read "${APP_PATH}/Contents/Info.plist" \
        CFBundleShortVersionString 2>/dev/null)
    echo "<result>${VERSION:-unknown}</result>"
  5. Click Save.

The EA populates on each Mac at the next inventory check-in (or you can force a check-in with sudo jamf recon on a test Mac).

New Computer Extension Attribute form in Jamf Pro showing the Pult Agent Version configuration with the version-detection script

Step 3: Create the Smart Computer Group

The Smart Group selects every Mac that needs the package installed -- either because the agent is missing, or because the version doesn't match the one you're rolling out.

  1. Go to Computers → Smart Computer Groups.
  2. Click + New.
  3. Display Name: Pult Agent: Needs Install.
  4. On the Criteria tab, click + Add. The default list only shows commonly-used and recently-used criteria; since the Pult Agent Version EA is brand new, click Show Advanced Criteria to reveal the full list, then select it.
  5. Configure the criterion:
    • Operator: is not
    • Value: the agent version you're rolling out, e.g. 0.2.9-beta1
  6. Click Save.

A Mac is in this group whenever its Pult Agent Version EA returns anything other than 0.2.9-beta1. That covers both not_installed (missing) and older versions (out of date). Once the package installs successfully, the EA flips to 0.2.9-beta1 and the Mac falls out of the group automatically.

Computer Group tab of the New Smart Computer Group form, showing the Display Name set to "Pult Agent: Needs Install"

Criteria tab of the New Smart Computer Group form, showing the criterion "Pult Agent Version is not 0.2.9-beta1"

Tip: you have two rollout-scope levers. As written, the Smart Group selects every Mac whose Pult Agent version doesn't match. In a phased rollout you'll want to narrow the audience -- Jamf gives you two places to do that, and they compose with and:

  • Smart Group criterion: add a second criterion here (e.g. Computer Group member of "Pult Agent Pilot", joined with and) so the group only contains drifted Macs within a specific cohort.
  • Policy Scope (configured in Step 4): restrict the policy itself to specific Macs, Computer Groups, users, or buildings without touching the drift-detection logic. Often the simplest choice for cohort-based rollouts.

Either way, expand the rollout by editing the cohort group's membership or the Policy's Scope tab; new Macs are picked up at their next check-in.

When you roll out a new agent version, update the version value in this Smart Group's criterion. Macs running the previous version then fall back into scope and pick up the new package automatically.

Step 4: Create the Policy

The Policy installs the wrapper package on every Mac in the Smart Group.

  1. Go to Computers → Policies.
  2. Click + New.
  3. General tab:
    • Display Name: Install Pult Agent
    • Trigger: check Recurring Check-in
    • Execution Frequency: Ongoing
  4. Packages tab: click Configure, add your wrapper package, set Action to Install.
  5. Scope tab: scope the policy to the Pult Agent: Needs Install Smart Group from Step 3.
  6. Maintenance tab (recommended): check Update Inventory so the EA refreshes immediately after install and the Mac falls out of scope on the next check-in.
  7. Click Save.

Policy General tab with Display Name "Install Pult Agent", Enabled checked, Recurring Check-in trigger, and Ongoing execution frequency

Policy Packages tab showing the Pult Agent wrapper package added with Action set to Install

Policy Scope tab with the "Pult Agent: Needs Install" Smart Computer Group added as a deployment target

Policy Maintenance tab with the Update Inventory option enabled

Why "Ongoing" frequency

Ongoing lets the policy run every time the Mac checks in and is in the Smart Group's scope. Because the Smart Group only contains Macs missing the right version, the policy only actually fires when remediation is needed. After install, the EA reports the new version, the Mac leaves the Smart Group, and no further installs happen until the next version drift.

Step 5: Configure Managed Login Items

The wrapper .pkg installs the agent and writes the bootstrap token, but it does not register the agent for auto-start at login. Push a separate Configuration Profile that adds Pult Agent as a managed login item -- this also prevents users from disabling it.

See Managed Login Items for the Jamf Pro steps.

Step 6: Verify

  1. On a test Mac, force a check-in:
    sudo jamf policy
  2. Confirm the package installs:
    • /Applications/Pult Agent.app exists.
    • The Pult Agent tray icon appears in the menu bar.
  3. Check the Mac's record in Jamf Pro -- the Pult Agent Version EA should show 0.2.9-beta1 after the next inventory update.
  4. In the Pult Dashboard, go to Settings → Presence → Device Authentication. A Pending Device Request should appear for the Mac.
  5. Approve the request to complete enrollment.

Troubleshooting

IssueSolution
Smart Group never populatesThe EA only updates after an inventory check-in. Run sudo jamf recon on a test Mac to force-collect inventory, then re-check the group's membership.
Policy runs but agent doesn't enrollThe bootstrap token is written when the postinstall runs as part of the package install. Confirm a user was logged in at install time -- otherwise the token is skipped.
Policy keeps re-running on the same MacConfirm the EA reports the deployed version after install. If it still reports the old version, check that Update Inventory is enabled in the Policy's Maintenance tab.
New version rollout doesn't reach existing MacsUpdate the version value in the Smart Group's criterion. Macs running the previous version will re-enter the group at their next check-in.
Token expired error in agent logsBootstrap tokens have an expiration. If your wrapper .pkg references an expired token, rebuild the wrapper with a fresh token and re-upload the new package version.

Last updated on May 3, 2026, 4:37 PM

On this page