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.3-py3-none-win_arm64.whl (8.6 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3

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

Uploaded Python 3macOS 11.0+ ARM64

flavorpack-0.4.3-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.3-py3-none-win_arm64.whl.

File metadata

  • Download URL: flavorpack-0.4.3-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.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 306b683b18d453069d53d73be18f6b1e56514847cb1d2920462c0dbd8897b1fa
MD5 23b97d457db2874f5c6c47fb7c882d83
BLAKE2b-256 14a9947a8c921567e52d83e74d83d9d3d3e6bfcdf0fb8a9e97ecd4b544d3babe

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: flavorpack-0.4.3-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.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7cce4f8ae2940844115d9bd7aafe6238361974094c5c213f1f8611a4d44000f8
MD5 acc789bfcb80a5a5957b47c56b836bf1
BLAKE2b-256 04360685e3193a16af35e29d8974cfc59da6566acbb0088cab4efdd590ba2a80

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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.3-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.3-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9f6a65933bb3ba770e9771aa2b833e832fee175eb6fed7b98ecb7e0ff3f4b26
MD5 1c02a4f0431f1f797b8415d173025f4b
BLAKE2b-256 c380c44c68d6176943b772007c28697d4518bc1149ba6e4794344ad0e76d258b

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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.3-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.3-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2e0892c9966d74680f4f0d2275c46d45c4c0df867c41c7f6b33a0e0725efc015
MD5 6bb777f4b79ffa1df6a22890d126f03e
BLAKE2b-256 3151fcfbb37c1ae67073710ba7c96038671aafe2ea3ba49b78fdf154e3c167ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9586e22926208f24156e2c730380733b34d615ea7e2572ac02b41dff7fb7249
MD5 7bc5a2b0667256b972b50dab4cb965fa
BLAKE2b-256 d247c4f50f4775b5d9ab396cd6204e9608458c1650a7f6b2f8ef52da9ba3d63f

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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.3-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.4.3-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4f70352313b36ebf0dd9e1128d0a4e916acde17f3cfaee6ddd689199a20aaad7
MD5 42f8f34db9f363507afa4b4fd1a2a262
BLAKE2b-256 802c5c57780c39517afe60465b779d47306b9372c59ae75f01b56f7d158ef45f

See more details on using hashes here.

Provenance

The following attestation bundles were made for flavorpack-0.4.3-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