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

Uploaded Python 3.11macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post3-py311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71202efd6ac7001f4812dc1587df6281df2891f5e15e3732ba691df866595a81
MD5 98b50812d6084077480a567a98a6d61d
BLAKE2b-256 c6148cd00f0187ce0fa8bf8cc03e9b6dd14e7bb66c89c2525350e1b75b983df9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post3-py311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7481cbff4b0775bdebcb9efca9ad775233297d30b8937edbb0925abedf1cb85d
MD5 4777a68c0b236c9ec41a164f8baa2704
BLAKE2b-256 b8d2dccb0d566af38e4d352e1cb3e1f514bc13048e89cac1660cb1ff5a02ada3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post3-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37b85791ec7f2db41c561165196c71f4c66b46c5b1119fae39a100c0e289dcca
MD5 3dc11a5bf858339d391e94eb3d4325f7
BLAKE2b-256 cf5d60fe63b969026b11f0257ced852dd4a62850f5846ca30146ecd252146112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flavorpack-0.0.4.post3-py311-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d6ac196d427edb23f7aa8f1fcf5a08190be3881c33e46f120187dd10a78c3d72
MD5 9a1dbbfe3f1ebac69723b2a620d4a967
BLAKE2b-256 aa2b87136f0803e3a66f1f8e2a62f31793adf0ef33c989f8ebbf231a91802c1b

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