A python library and CLI for Jamf patch reporting and analysis, backed by a community app catalog API.
MacAdmins Slack (
#patcher) →
|
📘 Project Docs →
An exported PDF report for "AnyOrg". See Customization in the project docs for more.
Installation
$ python3 -m pip install patcherctl
Usage
Full library and CLI references plus assembled recipes live in the Guides section of the docs. The two quick examples below cover the common case of fetching Jamf's patch-management view and exporting reports.
Library
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())
CLI
$ patcherctl \
--client-id="..." \
--client-secret="..." \
--url="https://yourorg.jamfcloud.com" \
export --path="./reports" --format=pdf
Patcher API
Patcher's API is a community catalog of macOS app patching metadata stitched from Installomator, Homebrew Cask, AutoPkg (and more) into a single queryable surface.
API is public, no authentication is required. See project docs for curl and PatcherClient examples.
[!NOTE] On a corporate network that filters new or uncategorized domains, the catalog API may be blocked by a web gateway. See Catalog API Blocked by Web Filtering to confirm and resolve it.
Contributing
Contributions to Patcher are welcome! We have set up templates for submitting issues, feature requests, and feedback. Please be sure to utilize these templates when contributing to the project.
Metadata
Release files for patcherctl 3.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| patcherctl-3.4.0.tar.gz | 1.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| patcherctl-3.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / patcherctl-3.4.0.tar.gz
| Download URL | patcherctl-3.4.0.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6179feca3110f5a35ca1190eaf2c39f5af5947faf2c4b5fb33af8f966eec82ed
|
|
BLAKE2b-256 checksum How to use checksums |
3476151d66665a1330dd7959e34dc0b41ad8344968f167d24926edad0f8a79aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 22, 2026.
Transparency logRelease files / patcherctl-3.4.0-py3-none-any.whl
| Download URL | patcherctl-3.4.0-py3-none-any.whl |
|---|---|
| Size | 129.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c61509f4f62b7b07b21b886c0950d5386d5d48138672a711ee9c98c29aa4272d
|
|
BLAKE2b-256 checksum How to use checksums |
be6d7f1d528e176bb38ce429a270895c94cac9f001d47b7f281f4b301247fde6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 22, 2026.
Transparency log