Goal
Synchronize compressed CAS object files (.eko/objects/) efficiently by packaging and uploading them on-demand.
Steps to Outcome
- Blob Packaging (TAR.GZ Pack):
- Identify local CAS object files referenced by new manifests.
- Compress and bundle these objects into a single
.eko_pack.tar.gz archive.
- Remote Pack Storage (Release Assets / Packages):
- Upload the package archive using the GitHub Releases API (as a release asset) or GitHub Container Registry (as generic OCI artifacts).
- Lazy Object Download on
eko restore:
- When a user triggers
eko restore <id>, inspect the local cache first.
- If object blobs are missing, download the corresponding remote pack archive from GitHub and extract it into
.eko/objects/.
- Progress and Performance UX:
- Show a real-time progress bar (using
github.com/schollz/progressbar) during upload and download phases.
Final Outcome
Eko packages and uploads object blobs to GitHub during push, and downloads missing blobs lazily on-demand during restoration.
Goal
Synchronize compressed CAS object files (.eko/objects/) efficiently by packaging and uploading them on-demand.
Steps to Outcome
.eko_pack.tar.gzarchive.eko restore:eko restore <id>, inspect the local cache first..eko/objects/.github.com/schollz/progressbar) during upload and download phases.Final Outcome
Eko packages and uploads object blobs to GitHub during push, and downloads missing blobs lazily on-demand during restoration.