NAPT - Not a Pkg Tool
Automated Windows application packaging and deployment to Microsoft Intune using PSAppDeployToolkit
Overview
NAPT is a Python CLI that automates packaging Windows apps for Microsoft Intune. It runs on Windows, Linux, and macOS; creating .intunewin packages requires Windows.
Full documentation | Quick start | User guide | Developer reference
What NAPT automates
Without NAPT, each new app version means checking the vendor for a release, editing a PSAppDeployToolkit (PSADT) template, writing detection and requirements scripts, running IntuneWinAppUtil.exe, uploading in the Intune portal, and assigning the app to groups. NAPT does each step from one YAML recipe per app.
Key features
- Version discovery - Finds new versions from vendor APIs, GitHub releases, download pages, or fixed URLs, and does not download an unchanged installer again
- YAML recipes - One recipe per app, with layered configuration (organization, vendor, parent recipe, recipe)
- PSADT packaging - Builds the PSADT deployment with detection and requirements scripts, then the .intunewin package
- Intune upload - Uploads to Microsoft Intune through the Graph API
- Ring promotion -
napt promotemoves each release through deployment rings and reports assignment drift;napt statusshows every app's published version, pending release, and ring positions - Tenant setup and sign-in -
napt auth setupcreates the Entra app registration with the permissions NAPT needs;napt auth loginsigns in
Getting started
See the Quick start guide for installation and setup.
Creating recipes
Recipes are YAML files that define how to discover, download, and package an application.
Example recipes:
- chrome.yaml - url_download strategy with MSI version extraction
- git.yaml - api_github strategy for GitHub Releases
- 7zip-x64-msi.yaml - web_scrape strategy for vendor download pages
Note: The recipes/ and defaults/ directories in this repository are
working examples used for development and testing.
They are not included in the pip package.
Run napt init to create your own workspace with a starter org.yaml.
A recipe uses one of four discovery strategies: url_download, web_scrape,
api_github, or api_json.
The Recipe reference defines
their fields;
Common tasks
walks through a recipe for each.
Contributing
See Contributing to suggest features or report problems.
License
Apache License 2.0; see LICENSE.
Author
Roger Cibrian
Acknowledgments
- Draws inspiration from AutoPkg for macOS application packaging automation
- Uses PSAppDeployToolkit (PSADT) for Windows application packaging
- Uses IntuneWinAppUtil for creating .intunewin packages
Release files for napt 0.11.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 | |
|---|---|---|---|
| napt-0.11.0.tar.gz | 173.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| napt-0.11.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 410.9 kB
Release files / napt-0.11.0.tar.gz
| Download URL | napt-0.11.0.tar.gz |
|---|---|
| Size | 173.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14e49c75d3c215c62338d79e303816fb6a0173231c3ddfeb0855175b2e719022
|
|
BLAKE2b-256 checksum How to use checksums |
9c74e5dffcf77cd54c232f09b0537a7786c969613b626fc9981cd8f42d6b8e76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 26, 2026.
Transparency logRelease files / napt-0.11.0-py3-none-any.whl
| Download URL | napt-0.11.0-py3-none-any.whl |
|---|---|
| Size | 237.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5175b141c08aaf4bae142830c9d2f498f906a9aee9d21ffdc626137af2f4e9a5
|
|
BLAKE2b-256 checksum How to use checksums |
6be4b7584c7be1cb21018585a67c59e41f8b618b78ecdfb91678851c343d60cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 26, 2026.
Transparency log