Back to browse
GitHub Repository

๐Ÿ“ฆ content-addressed packages

90 starsRust

Filepack: a fast SHASUM/SFV/PGP alternative using BLAKE3

by rodarmorยทFeb 21, 2026ยท2 pointsยท0 comments

AI Analysis

โ—โ—โ—BangerWizardrySlick

BLAKE3 speeds file verification 10x over SHA-256; beats SFV/shasum with signatures.

Strengths
  • โ€ขBLAKE3 is demonstrably faster and more secure than SHA-1/MD5 legacy tools (shasum/SFV)
  • โ€ขMerkle tree signing approach (package fingerprint) elegant: single root covers manifest integrity
  • โ€ขReal Rust implementation, cross-platform binaries, published on crates.io, low barrier to adoption
Weaknesses
  • โ€ขFile verification is a solved problem (existing tools work fine); BLAKE3 speedup matters mainly for massive archives or continuous CI
  • โ€ขMinimal ecosystem pressure: most users tolerate shasum speed; adoption depends on friction
Category
Target Audience

System administrators, security-conscious developers, release engineers

Similar To

sha256sum ยท shasum ยท SFV tools

Post Description

I've been working on filepack, a command-line tool for file verification on and off for a while, and it's finally in a state where it's ready for feedback, review, and initial testing.

GitHub repo here: https://github.com/casey/filepack/

It uses a JSON manifest named `filepack.json` containing BLAKE3 file hashes and file lengths.

To create a manifest in the current directory:

filepack create

To verify a manifest in the current directory:

filepack verify

Manifests can be signed:

# generate keypair filepack keygen

# print public key filepack key

# create and sign manifest filepack create --sign

And checked to have a signature from a particular public key:

filepack verify --key <PUBLIC_KEY>

Signatures are made over the root of a merkle tree built from the contents of the manifest.

The root hash of this merkle tree is called a "package fingerprint", and provides a globally-unique identifier for a package.

The package fingerprint can be printed:

filepack fingerprint

And a package can be verified to have a particular fingerprint:

filepack verify --fingerprint <FINGERPRINT>

Additionally, and I think possibly most interestingly, a format for machine-readable metadata is defined, allowing packages to be self-describing, making collections of packages indexable and browsable with a better user interface than the folder-of-files ux possible otherwise.

Any feedback, issues, feature request, and design critique is most welcome! I tried to include a lot of details in the readme, so definitely check it out.

Similar Projects