Overview
PIW (Python Intelligent Wrapper) creates native macOS .app bundles from any Python application in one step. Point it at your project directory, click Build β you get a working .app bundle with proper Info.plist, icon, launcher, and all dependencies resolved.
The problem: Packaging Python desktop apps for macOS is painful. Existing tools (PyInstaller, py2app, Briefcase) produce bloated bundles, break on PyQt6, require complex spec files, and frequently fail on Apple Silicon. Developers spend more time fighting the packager than building their app.
The solution: PIW creates native macOS .app bundles from any Python application in one step. Point it at your project directory, click Build β you get a working .app bundle with proper Info.plist, icon, launcher, and all dependencies resolved. No spec files, no hidden import debugging, no bloat.

Key Features
- One-click bundling - GUI or CLI, point at any Python project and get a
.appbundle - Automatic venv detection - Finds
.venv/venv, detects Python version, copies site-packages - Standalone mode - Optionally embeds the entire Python framework for zero-dependency distribution
- Source protection - Bytecode-only builds strip all
.pysource; optional obfuscation removes docstrings, asserts, and randomizes timestamps - Smart entry point detection - Finds
main.py,app.py,run.py,start.py, or__main__.pyautomatically - Proper macOS integration - Generates Info.plist, PkgInfo, icon handling, stderr logging to
~/.appname/logs/ - pyproject.toml plist extras - Declare
[tool.piw.plist]keys (e.g.,NSMicrophoneUsageDescription) and they merge into Info.plist automatically - Installer creation - Generates distributable
Install-AppName.apppackages for end users (no Terminal required) - Build tracking - SQLite database records every build (version, size, settings, timestamps) for audit and history
- Version management - Integrated version_info system with semantic versioning and auto-incrementing build numbers
- lib_deps auto-bundling - Automatically packages external library dependencies when present
- Apple Silicon native - Built for and tested on ARM64 macOS (Homebrew Python paths)
What Makes It Different
| Feature | PIW | PyInstaller | py2app | Briefcase |
|---|---|---|---|---|
| PyQt6 support | Native, tested | Fragile hooks | Broken on Qt6 | Indirect |
| Apple Silicon | First-class | Patchy | Untested | Partial |
| Config needed | Zero (or pyproject.toml) | .spec file | setup.py | pyproject.toml + template |
| Bundle size | Minimal (copies only whatβs needed) | Bloated (kitchen-sink) | Medium | Large (full stdlib) |
| Source protection | Bytecode + obfuscation built-in | Limited | None | None |
| Installer generation | Built-in | Requires separate tool | None | Platform-specific |
| Build history | SQLite tracker | None | None | None |
| GUI | Full PyQt6 interface | CLI only | CLI only | CLI only |
Key differentiator: PIW doesnβt try to reverse-engineer imports or trace dependencies. It copies your venvβs site-packages directly β if your app runs in the venv, the bundle works. This eliminates the entire class of βmissing hidden importβ bugs that plague PyInstaller.
Use Cases
Independent Developers
Ship Python desktop apps on macOS without requiring users to install Python, pip, or manage dependencies. One .app file, drag to Applications, done.
PyQt6/PySide6 Projects
Reliable packaging where alternatives consistently fail. PyInstallerβs Qt6 hooks break regularly, py2app doesnβt support Qt6 properly. PIW works because it doesnβt rely on hooks β it copies your working venv.
Internal Tool Distribution
Deliver tools to teams without Python knowledge. No βinstall Python 3.13.1 then pip install -r requirements.txtβ β just double-click the app.
Source Code Protection
Distribute apps without exposing source code. Bytecode-only builds + optional obfuscation (docstring/assert removal, timestamp randomization) make reverse engineering harder.
Consulting Deliverables
Ship client applications as professional .app bundles with custom icons, proper metadata, and installer packages. No Terminal required for end users.
Architecture
ββββββββββββββββββββββββββββββββββββββββ
β PIW GUI/CLI β
β (PyQt6) β
ββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββΌββββββββββββββββββββββ
β Bundle Builder β
β β’ Detect venv/Python β
β β’ Copy site-packages β
β β’ Generate Info.plist β
β β’ Create launcher script β
β β’ Package .app structure β
ββββββββ¬ββββββββββββββββββββββ
β
ββββββββΌββββββββββββββββββββββ
β Build Database (SQLite) β
β β’ Version history β
β β’ Build settings β
β β’ Project config β
ββββββββββββββββββββββββββββββ
PIW analyzes your project, copies your working venv, generates native macOS metadata, and creates a properly structured .app bundle. Optional standalone mode embeds Python framework for zero-dependency distribution.
Production Status
PIW v1.0.0, Build 2 β Production-ready, self-hosted (PIW bundles itself).
Currently packages 6+ Silver Wizard production applications:
- IATV (Independent Agent Terminal Viewer)
- CONF (Multi-agent conferencing framework)
- Mac Retriever (Gmail client + file manager)
- CMC (Claude Code MCP Manager)
- BE_JOBS (Background job manager)
- PIW itself (dogfooded)
Tech Stack
- Python 3.13 - Core application
- PyQt6 - GUI framework
- SQLite - Build history and project configuration
- macOS 11.0+ - Apple Silicon native (ARM64)
- sw2-lib - Internal utilities
- Zero external runtime deps - Bundled apps have no dependencies
Best Practices
- Test in venv first - If your app runs in the venv, PIWβs bundle will work
- Use pyproject.toml for metadata - Declare Info.plist keys in
[tool.piw.plist] - Enable standalone mode for distribution - Embed Python framework so users donβt need Python installed
- Version management - Let PIW auto-increment build numbers, use semantic versioning
- Build history - Use SQLite tracker to audit builds and settings over time
Licensing
PIW is production infrastructure available for licensing to organizations and independent developers packaging Python apps for macOS.
Contact: silver.wizard001@proton.me for licensing inquiries.
Documentation
Support
- Email: support@silverwizard.dev
- Licensing: silver.wizard001@proton.me