Skip to main content

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

Project description

🌶️📦 Flavor Pack: Your Yummy Progressive Secure Polyglot Packaging Toolchain

Python 3.11+ Go 1.21+ Rust 1.75+ CI Pipeline

Flavor Pack (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.

🎯 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.21+ and Rust 1.75+ (for building ingredients)

Installation

# Clone the repository
git clone https://github.com/provide-io/flavor.git
cd flavor

# Set up environment and install dependencies
source env.sh

# Build the Go and Rust ingredients
./ingredients/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:

[Native Launcher] → Go or Rust executable
[8192-byte Index] → Format metadata and offsets
[Metadata] → Gzipped JSON manifest
[Slot Table] → Slot descriptors
[Slots 0..N] → Application code, runtime, dependencies
[📦🪄] → 8-byte emoji magic footer

📚 Documentation

🏗️ Architecture

Flavor Pack 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 Launchers (ingredients/flavor-{go,rs}/)

    • Extract and execute packages at runtime
    • Perform Ed25519 signature verification
    • Manage workenv caching and lifecycle
  3. Native Builders (ingredients/flavor-{go,rs}/)

    • Assemble PSPF packages from manifests
    • Implement the PSPF/2025 binary format
    • Handle slot packing and metadata encoding

🔒 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
workenv/flavor_*/bin/pytest tests/

# Run with coverage
workenv/flavor_*/bin/pytest --cov=src/flavor --cov-report=term-missing

# Test cross-language compatibility
./test-all-combinations.sh

# Run specific test categories
workenv/flavor_*/bin/pytest -m unit        # Fast unit tests
workenv/flavor_*/bin/pytest -m integration # Integration tests
workenv/flavor_*/bin/pytest -m security    # Security tests

# Test ingredients with Taster
cd helpers/taster
../../workenv/flavor_*/bin/flavor pack --manifest pyproject.toml --output taster.psp
./taster.psp --help

🙏 Acknowledgments

Flavor Pack 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.0.4.post8-py311-none-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

flavorpack-0.0.4.post8-py311-none-macosx_10_9_x86_64.whl (7.4 MB view details)

Uploaded Python 3.11macOS 10.9+ x86-64

File details

Details for the file flavorpack-0.0.4.post8-py311-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.4.post8-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aeab2da7f175602b3f8d7fcca82a843b9de3cc7718ef0a11e39a877ee04676ee
MD5 844d2af484d33cab8c2c443e2813f50f
BLAKE2b-256 b3fb7665d5b2c0c073feada74eeea63ab5e03fdbc74779c7a07e32c468f0ff88

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.4.post8-py311-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.4.post8-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d1a4f6ebf2a45eb1fc2aefd0fd5a60b9186c4adad78242115916fb9c47a06a3
MD5 f1af03bdf74b6a89d5d7fd0f55254aae
BLAKE2b-256 5c0a5ad36ea211b88c980db68a68c98fe4f10430a368f7d1302dbb5af402d393

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.4.post8-py311-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.4.post8-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d85a9ec5002f8562402a93e08a072fea04e728f5d707083cc2e4fada8c1af47
MD5 ac0a88b40ffb96cd3f8df2c961553ab3
BLAKE2b-256 562ac2edb260158d39f1e5eb81b3513531c9fdbe6fb37d5dabdc8ba1efb91b58

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.4.post8-py311-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.4.post8-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 add986be9814f1152aa70dfcfeaeac7210e55496b70e8bad9cbc3be1490cb960
MD5 22a60f60ec7eeff46bb0fc531f521e0c
BLAKE2b-256 d9cc1aeff55552716442953689b0d55bd4bb23ae2b1003dcd8b3323e797333e6

See more details on using hashes here.

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