Resumable OCI image pulls for unreliable networks.
OCI image layers can be massive - bootc OS images often have layers of 800MB or more. On unreliable edge networks, a failed pull means starting over.
Fray splits each layer into chunks and tracks progress with a merkle tree. Interrupted pulls resume from where they left off.
Traditional: Layer (800MB) ------------------------> FAIL -> restart from 0
Fray: Layer (800MB)
+-----+-----+-----+-----+-----+-----+
| # | # | # | x | | | <- interrupt
+-----+-----+-----+-----+-----+-----+
|
v resume
+-----+-----+-----+-----+-----+-----+
| # | # | # | # | # | # | <- done
+-----+-----+-----+-----+-----+-----+
# Install
go install github.com/hexfusion/fray/cmd/fray@latest
# Pull an image
fray pull quay.io/prometheus/busybox:latest
# Run proxy
fray proxy -l :5000 -d /var/cache/fray &
podman pull --tls-verify=false localhost:5000/docker.io/library/alpine:latest- Resumable pulls - chunk state persists across restarts
- No server changes - uses standard HTTP Range requests
- Pull-through proxy - caching registry for edge clusters
- Parallel downloads - configurable concurrency
- OCI Image Layout - standard storage format
- User Guide - commands, options, proxy setup
- Developer Guide - architecture, building, testing
- protoc-gen-cel - CEL validation plugin for protobufs
bootc enables transactional, image-based OS updates. Fray can be deployed as a logically bound image:
FROM quay.io/centos-bootc/centos-bootc:stream9
COPY --from=ghcr.io/hexfusion/fray:latest / /Apache 2.0