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
./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 (src/flavor-go/, src/flavor-rs/)

    • Extract and execute packages at runtime
    • Perform Ed25519 signature verification
    • Manage workenv caching and lifecycle
  3. Native Builders (src/flavor-go/, src/flavor-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
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 ingredients with Pretaster
cd tests/pretaster
make test

🙏 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.1000.post0-py311-none-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

flavorpack-0.0.1000.post0-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.1000.post0-py311-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.1000.post0-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df7eb11d8425385d63219a9e17c1153104b8bb6e4b451356c23e04c2e1a82a3c
MD5 c9879b891c935d6cfa55571fb59e6ac1
BLAKE2b-256 42e0ddd9fb743d82aa87073f7d00bf7837dbb47fd6ccfb267526de545195ab6a

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.1000.post0-py311-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.1000.post0-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 92f9ee2e736ea7889bd69f51c3b5df9778c6b923d3769697f7094e4352533e02
MD5 54b39d1f68193cd010019afd7ba0269e
BLAKE2b-256 e4c2794f9b1232bcac464cca81e16f2eced0bf6352919576c64769d714b89f1e

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.1000.post0-py311-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.1000.post0-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c41f9ba5a408fe0aae2940a224f4fead0816be5f84a75041335e77a2668e5e8
MD5 52c93bcb67a45198a3182def4cf58e95
BLAKE2b-256 a68c508ba6518ac72b2398680337c605355f0cdc703ebc5c4bcee5bf15d08253

See more details on using hashes here.

File details

Details for the file flavorpack-0.0.1000.post0-py311-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.1000.post0-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 97668f72158926fdef25d39cc964d0a19be0fcd797ff16669d07267bd0099cb7
MD5 705f8832abeb7c42eea92d18f38d98d0
BLAKE2b-256 e5977a2b2bd6d24b77cb66f26593c9c9561da9e4aedf5d7f349028d422d5d065

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