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

Uploaded Python 3.11macOS 11.0+ ARM64

flavorpack-0.0.4.post4-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.post4-py311-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flavorpack-0.0.4.post4-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb75451d6b016a01a69637bef1e119a416af4a040384f8cbee6aed55c010aa8a
MD5 c6ae373929f6c9e921afc15bfb715cab
BLAKE2b-256 c1d42e8f167739cf2eba57c184beb6a912758f34aa6df77eadf7fe5ee5578358

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post4-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 367a4e93ee5f8d4ad996e5b405bfe28453f0386ca30f716708b37593dada753d
MD5 b32cadda302ee371404522724b4125d2
BLAKE2b-256 6d4914fce316e2e96fbb5c0fad750d381b9db1ddcb5bd62ae4279c5f1c191276

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post4-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68d4e525cdeb949a2adcf40aa25515f664ba5c33c5b5f20781fd8596640bcd1b
MD5 27cd27fa160cdfe6fe3af053cbba7cea
BLAKE2b-256 9ca3141b475afce2b5a3cba71dcfa04eaf932a01bc89b5359141041133a34bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post4-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 336663f561056f432dad8761963d0e23de4055956b0029359ab5e58866fe2548
MD5 194ff7131b1aa4b523b7b1a71821c6d2
BLAKE2b-256 390bf83f90cdc49743cdd4678192534c65223e3a82743133d5942ed504425f2b

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