Jetstream J1: images by hash (push to the hub, runners fetch what they lack) issue #39 closed: completed andymccall opened this · 2 comments
andymccall set labels feature ·
referenced by 2 changes on 11 Oct 2026
Deployed 2026-10-11 (hub d5f7f6c4, runners main-9825c664 on earth-1 and plex-1). Live test with Metal Gear's 1761 MiB image 0ba25243: push from the workstation sent 12774 chunks, 991 MiB in 226 s (744 MiB of zeros never sent), kept as 389 MiB on the hub; a second push sent 0 chunks in 7 s; flow rootfs pull into an empty Flow home fetched 991 MiB in 79 s and the image hashes to 0ba25243, written sparse (1.0 GB on disk). Left: a runner fetching for a real job.
Proved end to end 2026-10-11: with 0ba25243 removed from both runners, doomsdayone/metalgear run #173's performance job was claimed by earth-1, which fetched the image from the hub (12774 chunks, 991 MiB in 29.5 s) and ran the job (passed, its report kept). Done.
andymccall closed ·
First Jetstream deliverable (refs issue #38, docs/jetstream.md §8). On 2026-10-11 images were copied between runners by hand twice, and a job waited hours for an image whose pin came from a different, non-reproducible build.
flow rootfs push HASHuploads an image from a Flow home to OxygenHub in FastCDC chunks (Oxygen's chunker): the hub answers which chunks it lacks, only those are sent, then the manifest (hash, size, arch, chunks). A rebuilt image moves only its changed chunks; zero runs collapse to one chunk.<data>/images), checks each assembled image against its BLAKE3 before accepting it, and records its architecture.flow rootfs pull HASHdoes the same for a local Flow home, soflow rungets pinned images without a hand import.jetcrate, the start of Jetstream.