Flavor Pack packaging system implementing Progressive Secure Package Format (PSPF/2025)
Project description
🌶️📦 Flavor Pack: Your Yummy Progressive Secure Polyglot Packaging Toolchain
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
- User Guide - Getting started and creating packages
- Development Guide - Setting up development environment
- Architecture - Technical details and design
- API Reference - Command and format specifications
- Troubleshooting - Common issues and solutions
- Full Documentation Index - Complete documentation structure
🏗️ Architecture
Flavor Pack consists of three main components:
-
Python Orchestrator (
src/flavor/)- Manages the build process and dependency resolution
- Creates manifests and handles Python packaging
- Provides CLI interface for package operations
-
Native Launchers (
ingredients/flavor-{go,rs}/)- Extract and execute packages at runtime
- Perform Ed25519 signature verification
- Manage workenv caching and lifecycle
-
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-seedfor 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flavorpack-0.0.4.post5-py311-none-manylinux2014_x86_64.whl.
File metadata
- Download URL: flavorpack-0.0.4.post5-py311-none-manylinux2014_x86_64.whl
- Upload date:
- Size: 7.6 MB
- Tags: Python 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03dad9e3ec03cc2ba8cfc0f625d63674def690b5eb978b2d5975a99608d2aefb
|
|
| MD5 |
b28750084e810db6e330c3a2b3ca0bd3
|
|
| BLAKE2b-256 |
180bc5b44525085ebfdc6f03163e2f74193386be622ea4ecd9eb7e46b37c3067
|
File details
Details for the file flavorpack-0.0.4.post5-py311-none-manylinux2014_aarch64.whl.
File metadata
- Download URL: flavorpack-0.0.4.post5-py311-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 7.1 MB
- Tags: Python 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8af7bdbda4e902d480716f121e2e6b1c12eb4dff138b8e7d1fbfcc4bd8a2d711
|
|
| MD5 |
b7415f9a11c7d5b570ac1190260936d5
|
|
| BLAKE2b-256 |
1ba052b7e8b9e3c1ac75ef59501320b10ad266d3b1ed538d02dd6806919d7ae6
|
File details
Details for the file flavorpack-0.0.4.post5-py311-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: flavorpack-0.0.4.post5-py311-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.9 MB
- Tags: Python 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5956d186b8418117d66036032cd40026af9d05e623b47823e844912fef82ab7
|
|
| MD5 |
ce599a9b4f2e855ccea0fdb496690bf0
|
|
| BLAKE2b-256 |
ecad4919a51ad9d31989fd552f1f6761917961e6be58c56e074a4e45b839376a
|
File details
Details for the file flavorpack-0.0.4.post5-py311-none-macosx_10_9_x86_64.whl.
File metadata
- Download URL: flavorpack-0.0.4.post5-py311-none-macosx_10_9_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: Python 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
493119de5be07f50eb697f2262dc08098a709bd8299a3c736983a079d6633f40
|
|
| MD5 |
3cf39a054d7d3b360086031c1e57903c
|
|
| BLAKE2b-256 |
a353185971530d1d7fde95d0d844d8e8d949ee39a369764cd833ecddc57064c8
|