Flavor Pack packaging system implementing Progressive Secure Package Format (PSPF/2025)
Project description
Flavorpack: Progressive Secure Polyglot Packaging Toolchain
Beta: Flavorpack is under active development. The PSPF 2025 format is stable, and core packaging workflows are tested across 6 platforms (Linux, macOS, Windows, FreeBSD — amd64/arm64). APIs may still evolve before 1.0.
Flavorpack is a cross-language packaging system that creates self-contained, portable executables using the Progressive Secure Package Format (PSPF) 2025 Edition. It enables you to ship Python applications as single binaries that "just work" - no installation, no dependencies, no configuration required.
Note: The package name is
flavorpack, but the command-line tool isflavor.
🎯 Key Features
- Single-File Distribution: Package entire applications into one executable file
- Cross-Language Support: Python orchestrator with Go and Rust launchers
- Secure by Default: Ed25519 signature verification ensures package integrity
- Progressive Extraction: Extract only what's needed, when it's needed
- Smart Caching: Persistent work environment with intelligent validation
- Zero Dependencies: End users need nothing pre-installed
🚀 Quick Start
Prerequisites
- Python 3.11 or higher
- UV package manager (
curl -LsSf https://astral.sh/uv/install.sh | sh) - Go 1.26+ and Rust 1.86+ (for building helpers - see
src/flavor-go/go.modandsrc/flavor-rs/Cargo.toml)
Installation (Source Only)
Note: Flavorpack is not yet available on PyPI. Source installation is currently the only option.
# Clone the repository
git clone https://github.com/provide-io/flavorpack.git
cd flavorpack
# Set up environment and install dependencies
uv sync
# Build the Go and Rust helpers (required)
make build-helpers
# or directly: ./build.sh
Creating Your First Package
# Package a Python application
flavor pack --manifest pyproject.toml --output myapp.psp
# Run the packaged application
./myapp.psp
# Verify package integrity
flavor verify myapp.psp
📦 PSPF Format
The Progressive Secure Package Format is a polyglot file format that works as both an OS executable and a structured package. Each .psp file contains a native launcher, package metadata, and compressed data slots.
See the PSPF Format Specification for the complete binary layout diagram and technical details.
📚 Documentation
- Quick Start - Get started in 5 minutes
- User Guide - Comprehensive guide to using Flavorpack
- PSPF Format Specification - Binary format details
- API Reference - Python API documentation
- Development Guide - Contributing and development setup
- Troubleshooting - Common issues and solutions
- Full Documentation - Complete documentation portal
🏗️ Architecture
Flavorpack consists of three main components:
-
Python Orchestrator (
src/flavor/)- Manages the build process and dependency resolution
- Creates manifests and handles Python packaging
- Provides CLI interface for package operations
-
Native Helpers (
src/flavor-go/,src/flavor-rs/)- Launchers: Extract and execute packages at runtime, perform Ed25519 signature verification, manage workenv caching
- Builders: Assemble PSPF packages from manifests, implement the PSPF/2025 binary format, handle slot packing and metadata encoding
- Built binaries are placed in
dist/bin/for distribution
🔒 Security
Every PSPF package includes cryptographic integrity verification:
- Ed25519 signatures ensure packages haven't been tampered with
- Public keys are embedded in the package index
- Signature verification happens automatically on every launch
- Optional deterministic builds with
--key-seedfor reproducibility
🧪 Testing
# Run the test suite
make test
# Run with coverage
make test-cov
# Test cross-language compatibility
make validate-pspf
# Run specific test categories
pytest -m unit # Fast unit tests
pytest -m integration # Integration tests
pytest -m security # Security tests
# Test cross-language compatibility with Pretaster
make validate-pspf
Test Taxonomy
Flavorpack uses a shared test-intent taxonomy across Python, Go, and Rust. Use the root make targets instead of guessing which language-native runner to invoke first.
make test-unit
make test-integration
make test-cross-language
make test-security
make test-adversarial
make test-property
make test-fuzz
make test-mutation
make test-smoke
make test-fast
make test-slow
Intent categories:
unit: small isolated behaviorsintegration: multi-component behavior in one implementationcross_language: parity/interoperability across Python, Go, and Rustsecurity: trust, verification, integrity, permissions, policyadversarial: hostile inputs and boundary-violation attemptsproperty: parameterized and invariant-driven testsfuzz: native malformed-input discoverymutation: test-suite strength checkssmoke: minimal high-signal sanity checks
Cost selectors are separate from intent:
fastslowci
Use both security and adversarial when a test intentionally tries to violate a security boundary.
Quality Engineering
Use the root quality targets to run the same cross-language workflows locally that CI now runs as observational jobs:
make quality-python-fast
make quality-python-deep
make quality-go-fast
make quality-go-deep
make quality-rust-fast
make quality-rust-deep
make quality-ci
The tools run in strict mode. In this rollout phase, the dedicated quality-observability jobs are wired into CI but are not intended to be required merge checks yet. A failing observability job means that the quality workflow itself surfaced an issue; merge policy remains a separate repository setting.
🙏 Acknowledgments
Flavorpack is built on the shoulders of giants:
- UV for fast Python package management
- The Python, Go, and Rust communities for excellent tooling
Built with ❤️ by the provide.io team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flavorpack-0.4.4-py3-none-win_arm64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-win_arm64.whl
- Upload date:
- Size: 8.6 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f01d52c61361bd2e2d201d0a7e8a2bd0577860d222ae100b8611a74931b0e66
|
|
| MD5 |
2ba7609bd7752f1bf0dd1ccae82b9297
|
|
| BLAKE2b-256 |
aeecbcb50a092c40bb760e77872a28d004a2a0a04b1c8cc3ea1867175f992085
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-win_arm64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-win_arm64.whl -
Subject digest:
7f01d52c61361bd2e2d201d0a7e8a2bd0577860d222ae100b8611a74931b0e66 - Sigstore transparency entry: 1438784455
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flavorpack-0.4.4-py3-none-win_amd64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-win_amd64.whl
- Upload date:
- Size: 9.4 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51c9aeb0265c8f572482dbfad757740e62eef43e414e994fdf6c5b10d93e98ab
|
|
| MD5 |
60fe4563b743ec3a46c82f430853ef3e
|
|
| BLAKE2b-256 |
9d0ce735cef1a3822e53660dbc7f6854a27bc3d14a4a2a1658d03d78a8d18422
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-win_amd64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-win_amd64.whl -
Subject digest:
51c9aeb0265c8f572482dbfad757740e62eef43e414e994fdf6c5b10d93e98ab - Sigstore transparency entry: 1438784414
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl
- Upload date:
- Size: 8.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5272606b333e156da4abedbb9aebd4806f7e1024f447eb86d8b8d559ad94336c
|
|
| MD5 |
012b4b4c2fdc85a0b17fb4f9ccd1422e
|
|
| BLAKE2b-256 |
48d94930ed36eb09aa6042df9099b9516dc47d336cbae65fc856cde30348eefa
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl -
Subject digest:
5272606b333e156da4abedbb9aebd4806f7e1024f447eb86d8b8d559ad94336c - Sigstore transparency entry: 1438784425
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 8.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fff0f3c2f9f9e17dfafce80b042b65e87a1741b0dd6edb9b729bf13934a436c
|
|
| MD5 |
f593eebd9a32bc21e90251d403411b3c
|
|
| BLAKE2b-256 |
3595e7abfff19439bbb45d9e7e55a8b922f4db56f5187e2664ed19c83504e0dd
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl -
Subject digest:
9fff0f3c2f9f9e17dfafce80b042b65e87a1741b0dd6edb9b729bf13934a436c - Sigstore transparency entry: 1438784390
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dceef2f4ed39183e6b5658af31ab098fedfd9d757e3fe18c91cc776794962a08
|
|
| MD5 |
d880b51a73c019fd0b3f59bf0eff2624
|
|
| BLAKE2b-256 |
13ebfecfca936db957cd8fecd8cd988de4ee411f5efe5dbea8a0922b63ed39d3
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl -
Subject digest:
dceef2f4ed39183e6b5658af31ab098fedfd9d757e3fe18c91cc776794962a08 - Sigstore transparency entry: 1438784398
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl.
File metadata
- Download URL: flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl
- Upload date:
- Size: 8.9 MB
- Tags: Python 3, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5bb6cf0ecbefb12fe505bf6aa44a86b5cedf41821b48b557d433862c7870ce5
|
|
| MD5 |
311ed81d6b9bc4199dedbf5ec9cce1dd
|
|
| BLAKE2b-256 |
065373da6eed8f6174cd52d5e9a6f3f1200130209360fb9c78c5f6af00cb08b0
|
Provenance
The following attestation bundles were made for flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl:
Publisher:
release.yml on provide-io/flavorpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl -
Subject digest:
a5bb6cf0ecbefb12fe505bf6aa44a86b5cedf41821b48b557d433862c7870ce5 - Sigstore transparency entry: 1438784444
- Sigstore integration time:
-
Permalink:
provide-io/flavorpack@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/provide-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@657c03a01b8a0888f46128ee2ef005021c4530c2 -
Trigger Event:
workflow_dispatch
-
Statement type: