Skip to main content

Flavor Pack packaging system implementing Progressive Secure Package Format (PSPF/2025)

Project description

Flavorpack: Progressive Secure Polyglot Packaging Toolchain

License Python 3.11+ uv Ruff CI

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 is flavor.

🎯 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.mod and src/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

🏗️ Architecture

Flavorpack consists of three main components:

  1. Python Orchestrator (src/flavor/)

    • Manages the build process and dependency resolution
    • Creates manifests and handles Python packaging
    • Provides CLI interface for package operations
  2. 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-seed for 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 behaviors
  • integration: multi-component behavior in one implementation
  • cross_language: parity/interoperability across Python, Go, and Rust
  • security: trust, verification, integrity, permissions, policy
  • adversarial: hostile inputs and boundary-violation attempts
  • property: parameterized and invariant-driven tests
  • fuzz: native malformed-input discovery
  • mutation: test-suite strength checks
  • smoke: minimal high-signal sanity checks

Cost selectors are separate from intent:

  • fast
  • slow
  • ci

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

flavorpack-0.4.4-py3-none-win_arm64.whl (8.6 MB view details)

Uploaded Python 3Windows ARM64

flavorpack-0.4.4-py3-none-win_amd64.whl (9.4 MB view details)

Uploaded Python 3Windows x86-64

flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded Python 3

flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl (8.1 MB view details)

Uploaded Python 3

flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl (8.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl (8.9 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

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

Hashes for flavorpack-0.4.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7f01d52c61361bd2e2d201d0a7e8a2bd0577860d222ae100b8611a74931b0e66
MD5 2ba7609bd7752f1bf0dd1ccae82b9297
BLAKE2b-256 aeecbcb50a092c40bb760e77872a28d004a2a0a04b1c8cc3ea1867175f992085

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.4-py3-none-win_arm64.whl:

Publisher: release.yml on provide-io/flavorpack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for flavorpack-0.4.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 51c9aeb0265c8f572482dbfad757740e62eef43e414e994fdf6c5b10d93e98ab
MD5 60fe4563b743ec3a46c82f430853ef3e
BLAKE2b-256 9d0ce735cef1a3822e53660dbc7f6854a27bc3d14a4a2a1658d03d78a8d18422

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.4-py3-none-win_amd64.whl:

Publisher: release.yml on provide-io/flavorpack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.4-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5272606b333e156da4abedbb9aebd4806f7e1024f447eb86d8b8d559ad94336c
MD5 012b4b4c2fdc85a0b17fb4f9ccd1422e
BLAKE2b-256 48d94930ed36eb09aa6042df9099b9516dc47d336cbae65fc856cde30348eefa

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9fff0f3c2f9f9e17dfafce80b042b65e87a1741b0dd6edb9b729bf13934a436c
MD5 f593eebd9a32bc21e90251d403411b3c
BLAKE2b-256 3595e7abfff19439bbb45d9e7e55a8b922f4db56f5187e2664ed19c83504e0dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.4-py3-none-manylinux2014_aarch64.whl:

Publisher: release.yml on provide-io/flavorpack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dceef2f4ed39183e6b5658af31ab098fedfd9d757e3fe18c91cc776794962a08
MD5 d880b51a73c019fd0b3f59bf0eff2624
BLAKE2b-256 13ebfecfca936db957cd8fecd8cd988de4ee411f5efe5dbea8a0922b63ed39d3

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.4-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a5bb6cf0ecbefb12fe505bf6aa44a86b5cedf41821b48b557d433862c7870ce5
MD5 311ed81d6b9bc4199dedbf5ec9cce1dd
BLAKE2b-256 065373da6eed8f6174cd52d5e9a6f3f1200130209360fb9c78c5f6af00cb08b0

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page