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.post2-py311-none-manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded Python 3.11

flavorpack-0.0.4.post2-py311-none-macosx_11_0_arm64.whl (20.4 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

flavorpack-0.0.4.post2-py311-none-macosx_10_9_x86_64.whl (21.6 MB view details)

Uploaded Python 3.11macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post2-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8daabffdc65312bc07adb32c4f1d7ccdc05b8b8a5e71c0ab36bfc790e22567f
MD5 41d6eb9d42da81341ce94c3759c2bdf6
BLAKE2b-256 f86cd80cae1006cea5d9bb0eaef13ffeda68825d81a7ad3f73a9e660ec01246f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post2-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 52c9b7818b6de6911a2443a88112aebe8f435619a9041589cea196d9ca9b075d
MD5 cbdc18fd1fc74e2da19396d80a46d5df
BLAKE2b-256 a04490c40a940544e372d5939498e6752b16b56e3e4ca4eaa51602ee4dcbd34d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post2-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da9d37abddfadf0454ae13bdfecbf1a044c77ff8e64efe6efa427a3c1b777583
MD5 bb5b54a1c47f8cef4f79b528336e47a5
BLAKE2b-256 b5364e5cd7124575a00410e705d039c93b9e6027908b6aacbbf90475e7365d1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post2-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8573cc04d97aadb800d6331a8b6b99557a62c7d61e8e7780b1989b4a4533d433
MD5 d3a0cf02466bc66ca28f4a6aa18a4f54
BLAKE2b-256 5e7eff60e70e124313c76620d27119bb7149b04125d01b4a46a853c60c153d4f

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