Auto-activate for pyapp build config. Build air-gapped, multi-architecture standalone Python executables using PyApp and uv. Use when: bundling Python runtimes for network-isolated environments, patching PyApp defaults, or compiling single-binary assets. Not for PyInstaller, cx_Freeze, or other Python packaging tools.
From flownpx claudepluginhub cofin/flow --plugin flowThis skill uses the workspace's default tool permissions.
examples/release-action.ymlscripts/bundler.pySearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enable building self-contained, air-gapped, multi-architecture standalone executables for any Python application using PyApp and uv.
Standard pyapp installation bootstraps the environment on first run, which usually requires internet access. For air-gapped or network-isolated environments, you must embed the entire Python distribution and its dependencies ahead of time.
This skill documents the Bundle-Patch-Compile workflow:
site-packages, and repackage.Instead of installing at runtime, we build a hybrid distribution:
python-build-standalone).site-packages via uv pip install --target.In your pyproject.toml, configure the Hatch target or custom builder to use specific variables.
[tool.hatch.build.targets.binary]
scripts = ["myapp"]
pyapp-version = "v0.29.0"
[tool.hatch.build.targets.binary.env]
PYAPP_DISTRIBUTION_EMBED = "1"
PYAPP_FULL_ISOLATION = "1"
PYAPP_ALLOW_UPDATES = "1"
</example>
To enable fully offline operations, follow these steps using an automation script (see scripts/bundler.py):
install_only_stripped version for the Target Rust arch (e.g., x86_64-unknown-linux-gnu).uv pip install with specific cross-compilation flags:
--target <extracted_python_site_packages>--python-platform <uv_supported_platform>--upgrade.tar.gz.By default, PyApp stores user data in standard local data folders. If you require strict isolation (e.g., ~/.myapp), you can patch the PyApp source code just before cargo build:
# Conceptual example of patching src/app.rs
import re
content = app_rs.read_text()
pattern = re.compile(r"platform_dirs\(\)\s*\.data_local_dir\(\)...")
replacement = "std::path::PathBuf::from(\"~/.myapp\")"
app_rs.write_text(pattern.sub(replacement, content))
</example>
To maintain maximum glibc backward-compatibility (e.g., supporting RHEL 7+ / manylinux2014 baseline):
cargo zigbuild --release --target <target>.2.17Ensure your GitHub Action includes:
.whl files.x86_64-linux-gnu, aarch64-linux-gnu, aarch64-apple-darwin, etc.).[!TIP] Always test inside a non-networked container:
docker run --network none -v $(pwd):/app ubuntu:20.04 /app/myapp-binary --help
scripts/bundler.py (in this skill directory)examples/release-action.yml (in this skill directory)