OXYGENHUB

Jetstream J1: images by hash (push to the hub, runners fetch what they lack) issue #39 closed: completed andymccall opened this · 2 comments

andymccall

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 HASH uploads 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.
  • The hub keeps images site-wide (<data>/images), checks each assembled image against its BLAKE3 before accepting it, and records its architecture.
  • Placement offers a job to a runner that lacks its image when the hub holds it; the runner fetches the manifest and missing chunks, writes the image sparse, checks the hash, and runs the job (its log says so).
  • flow rootfs pull HASH does the same for a local Flow home, so flow run gets pinned images without a hand import.
  • The format and chunking live in a new jet crate, the start of Jetstream.

andymccall set labels feature ·

referenced by 2 changes on 11 Oct 2026

59078d2b8d46 4cf0c99a1486

andymccall

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.

andymccall

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 ·