Why the duplicate post? I open-sourced CAVS: tiny verified updates for Godot PCK games
I appreciate the many examples but I think leading with the Godot sample would be best, this sample shows the part I’d care about most, downloading patches dynamically is the cool feature, server management and CLI tools do not look as fun.
Speaking of CLI the examples are all quite long! Keep in mind this program begs the comparison to platform patching tools like itch.io’s butler which patches with one command, maybe try to reduce the number of commands needed? Or have a “minimal” example. It would also help to remove the bin prefix ./target/release
# butler example
butler push Build/Linux "gertkeno/mygame:linux"
################################################
# CAVS example
# 1. Describe the released version once (compact, ~0.07% of the source)
./target/release/cavs signature export ./Build_v1 --raw -o build_v1.cavssig
# 2. See what the next build changes before publishing anything
./target/release/cavs preview ./Build_v2 --against build_v1.cavssig --changes-only
# 3. Produce a deterministic offline update plan (a portable patch)
./target/release/cavs diff-plan ./Build_v1 ./Build_v2 -o update.cavsplan --report plan.md
# 4. Apply it in place — staged, journaled, verified, mod-friendly
./target/release/cavs apply --old ./InstalledGame --plan update.cavsplan --inplace --verify
# 5. Check any install against a known-good signature (mods tolerated)
./target/release/cavs verify-install ./InstalledGame --signature build_v2.cavssig --allow-extra-files
# Identify/inspect any CAVS file
./target/release/cavs file update.cavsplan
./target/release/cavs ls build_v1.cavssig