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.post5-py311-none-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

flavorpack-0.0.4.post5-py311-none-macosx_10_9_x86_64.whl (7.3 MB view details)

Uploaded Python 3.11macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post5-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 03dad9e3ec03cc2ba8cfc0f625d63674def690b5eb978b2d5975a99608d2aefb
MD5 b28750084e810db6e330c3a2b3ca0bd3
BLAKE2b-256 180bc5b44525085ebfdc6f03163e2f74193386be622ea4ecd9eb7e46b37c3067

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post5-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8af7bdbda4e902d480716f121e2e6b1c12eb4dff138b8e7d1fbfcc4bd8a2d711
MD5 b7415f9a11c7d5b570ac1190260936d5
BLAKE2b-256 1ba052b7e8b9e3c1ac75ef59501320b10ad266d3b1ed538d02dd6806919d7ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post5-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5956d186b8418117d66036032cd40026af9d05e623b47823e844912fef82ab7
MD5 ce599a9b4f2e855ccea0fdb496690bf0
BLAKE2b-256 ecad4919a51ad9d31989fd552f1f6761917961e6be58c56e074a4e45b839376a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post5-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 493119de5be07f50eb697f2262dc08098a709bd8299a3c736983a079d6633f40
MD5 3cf39a054d7d3b360086031c1e57903c
BLAKE2b-256 a353185971530d1d7fde95d0d844d8e8d949ee39a369764cd833ecddc57064c8

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