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

⚠️ Alpha Software: FlavorPack is in early development. APIs, file formats, and commands may change without notice. Not recommended for production use. Check current version with flavor --version. Install from source only.

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

Uploaded Python 3Windows ARM64

flavorpack-0.3.23-py3-none-win_amd64.whl (9.3 MB view details)

Uploaded Python 3Windows x86-64

flavorpack-0.3.23-py3-none-manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded Python 3

flavorpack-0.3.23-py3-none-macosx_11_0_arm64.whl (8.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

flavorpack-0.3.23-py3-none-macosx_10_9_x86_64.whl (8.7 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file flavorpack-0.3.23-py3-none-win_arm64.whl.

File metadata

  • Download URL: flavorpack-0.3.23-py3-none-win_arm64.whl
  • Upload date:
  • Size: 8.5 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.3.23-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 03811102de6f5d2100ec53265e5079fa10c6163ce062a71dea92d4c86451248e
MD5 d150be3d8fa465c2229f69e0f821e5c8
BLAKE2b-256 b796a018fb65f3241bb1cb2792f6527a3f6474d05151f77cc2bcac2ad7d4e89a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: flavorpack-0.3.23-py3-none-win_amd64.whl
  • Upload date:
  • Size: 9.3 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.3.23-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 40473cbf0fdab652e387256707614b47dbce58f047f895f1f40ced3afa14d6f6
MD5 865e9461492fd9f1ae475dbb14a06f8c
BLAKE2b-256 806ef8770f4533ae718384aa221ec737dcfdcbc8bd77aec1631b76031a196016

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flavorpack-0.3.23-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c4f5ebf2417738d20da0941900b40005cf4b7f39e0484bf727077a1ca0d3b65
MD5 fc5a18ba076feb31da8f71d9ee0c4abd
BLAKE2b-256 361d9bb83475ad48a1745ada9c5be7c60630e73924f1fe53a4d3c6490d42ca38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flavorpack-0.3.23-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0a6b5b092612c1a3ab03b814869fd6d4170a23a7dec7b9daa204491def4ff921
MD5 153dc72633ce6c8a894d49774d2b5087
BLAKE2b-256 2a8235f7c5451db10e8f32f11778df85630c49529b67be8dcf4d1ad5d127f77b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flavorpack-0.3.23-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 66e146e3a0d0aaa6a7ec7a6b2e0de248e485617b349f2ee14edb85c2e1829059
MD5 468bdfff8cf376c9832046abda84529e
BLAKE2b-256 3ff5a0e4034580abbd3d03f1071e1a9f3cb57be714a85b1ba6bf2a8ef5d9cc13

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for flavorpack-0.3.23-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 494bb75ec96ff90bb7275fcc8cd302b4db3486c47a13d31b8af2d5f538462ef3
MD5 42150aea55522241e2aea731ca1bb12a
BLAKE2b-256 8cead82228773c8d64ce4e3131ff29ed1ec97b0ce5b2b77b550c76f0feb3b683

See more details on using hashes here.

Provenance

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