Patcher¶
A Python package and CLI for patch analysis and reporting on macOS fleets managed by Jamf Pro.
Key Features¶
Cross-reference Jamf Pro’s patch-management view of your fleet against Installomator, Homebrew, AutoPkg, and Jamf App Installers.
Export customizable reports into PDF, Excel, HTML and JSON formats tailored to a tracked Jamf Pro instance.
A community-facing API stitching upstream application sources into a single queryable surface.
Use as patcherctl or import as a Python library; same operations either way.
Set it and forget it; recipes for automating Patcher with launchd and GitHub Actions support.
PDF and HTML reports take your header text, footer, fonts, logo and accent color to bring reports to life.
Quick Start¶
$ patcherctl export --path ./reports
First run launches the interactive setup wizard for your Jamf URL, API client ID, and secret. SSO instance? See Setup for the manual API-client path.
import asyncio
from patcher import PatcherClient
async def main():
async with PatcherClient(
client_id="...",
client_secret="...",
server="https://yourorg.jamfcloud.com",
) as patcher:
titles = await patcher.fetch_patches()
await patcher.export(titles, output_dir="./reports", formats={"pdf"})
asyncio.run(main())
If you’ve already run setup on this Mac, swap to PatcherClient.from_state() to pick up existing configurations.
Getting Help¶
Join the #patcher channel and say hi.
Report bugs or submit feedback and feature requests.
License¶
Patcher is licensed under the Apache License 2.0. See the LICENSE file for details.
Built with 💙 for the MacAdmins community