Skip to main content

NAPT - Not a Pkg Tool

Automated Windows application packaging and deployment to Microsoft Intune using PSAppDeployToolkit

License Python 3.11+ Code style: black

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 promote moves each release through deployment rings and reports assignment drift; napt status shows every app's published version, pending release, and ring positions
  • Tenant setup and sign-in - napt auth setup creates the Entra app registration with the permissions NAPT needs; napt auth login signs 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

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)

Source distribution for napt 0.11.0
File Size Uploaded
napt-0.11.0.tar.gz 173.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for napt 0.11.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.11.0 This release

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page