Introduction AutoPkg recipe syntax is not a programming language, but rather a markup for underlying python processors which adhere to a framework to ensure they are all compatible. Recipes essentially contain a list of actions, with all variables being added to the environment so that any processor can access the...
Introduction Apple introduced new versions of the former iWork apps Keynote, Numbers, and Pages, in January 2026. These are really the iPad versions of the apps, now made available for installation on macOS too. The apps have a different Bundle ID to the legacy versions, too. This means they will...
Introduction I first came across AutoPkg after attending Mac Admins @ Penn State conference in 2014 and seeing Greg Neagle’s seminal presentation “You Oughta Check Out AutoPkg” (Slides 1, Video 2), and especially Steve Yuroff’s presentation “Going MAD: From closed-in-box to ready to rock, using Munki, AutoPkg and DeployStudio” (Slides...
Introduction Back in 2018 (1), I created the first version of plist-yaml-plist, a python-based tool for converting YAML files to PLIST, or converting PLIST files to YAML. I made this primarily so that I could write and maintain AutoPkg recipes in YAML format, as it was much easier for me...
Introduction As of Monday, 13 April 2026, Jamf have now opened the Public Beta of the Plaform API Gateway (1). This provides a new method of interacting with Jamf Pro Cloud instances, Jamf Protect, Jamf School, and Platform Services such as blueprints, compliance benchmarks, declaration services and more. Credentials for...
Introduction jamf-cli is a new, standalone, golang-based command-line tool developed by my colleagues Keaton Svoma and Neil Martin at Jamf. It provides convenient, abstracted access to the various Jamf APIs, including Jamf Pro, Jamf Protect, and the new Platform APIs that will be available as a public beta in the...
Introduction JamfUploader contains AutoPkg processors for performing actions that affect a Jamf Pro server, such as uploading a package, creating a policy, updating a configuration profile, and much more. This post concerns creating custom macOS configuration profiles. Traditionally, if you’re using the JamfUploader processor JamfComputerProfileUploader to create a custom profile,...
Introduction I’ve long had a python script, sign_profile.py, to hand for signing a configuration profile (.mobileconfig file) for uploading to a Jamf Pro server, which I also used for removing the signature on a profile downloaded from Jamf Pro. However, for the simple task of “unsigning” a downloaded profile, this...
Introduction Famously (or, infamously), when creating a configuration profile using the Jamf Pro admin console, some of the payloads are constructed such that to enforce any single setting, you have to enforce all settings. Over the years, Jamf have updated some of those payloads so that specific settings can now...
Introduction Up until Jamf Pro version 11.22, there was a single built-in way of comparing application versions in Smart Computer Group criteria. This has been done using a combination of the Application Title or Application Bundle Identifier criteria followed by the Application Version criterion. The application version that is imported...