ContentVault
Content packs for Lucky Robots. Each pack contains a metadata.yaml, a thumbnail.png, and a .zip with the pack contents.
Clone
git clone https://huggingface.co/luckyrobots/ContentVault
Content Packs
| Pack | Description |
|---|---|
| Bunglalow | Bungalow environment |
| Go2VelocityTracking | Unitree Go2 velocity tracking |
| Loft | Loft environment |
| MujocoExample | MuJoCo simulation example |
| Office | Office environment |
| Oscillator | Oscillator environment |
| Panda | Franka Panda robot |
| Piper | Piper robot |
| PiperBlockStacking | Piper block stacking task |
| PiperPickPlace | Piper pick and place task |
| PiperUnscrewCap | Piper cap unscrewing task |
| SO100PickAndPlace | SO-100 pick and place task |
| Skies-Vol-1 | Sky HDRIs volume 1 |
| UnitreeG1 | Unitree G1 humanoid |
| UnitreeGo2 | Unitree Go2 quadruped |
| Welcome | Welcome / intro pack |
CDN
All content packs are served globally via Cloudflare CDN:
https://contentvault.luckyrobots.com/{PackName}/{filename}
For example:
https://contentvault.luckyrobots.com/Loft/metadata.yaml
https://contentvault.luckyrobots.com/Loft/Loft.zip
How sync works
A Cloudflare Worker (worker/) listens for webhooks from HuggingFace. When a push is made to this repo, the Worker:
- Parses the commit diff to find changed files
- Streams each file directly to Cloudflare R2 (no buffering, handles large zip files)
- Deletes removed files from R2
- R2 serves the files through Cloudflare's CDN with a 30-day cache at 300+ edge locations worldwide
Worker setup
cd worker
npm install
Secrets (set via wrangler)
npx wrangler secret put HF_WEBHOOK_SECRET
npx wrangler secret put HF_TOKEN
Deploy
npx wrangler deploy
Setup
# Install huggingface_hub with fast upload backend
pip install -U "huggingface_hub[hf_xet]"
# Login (requires write-access token from https://huggingface.co/settings/tokens)
hf auth login
CLI Commands
Upload entire folder
hf upload luckyrobots/ContentVault <local-folder> . --commit-message "Your message"
Upload a single pack/subfolder
hf upload luckyrobots/ContentVault <local-folder>/<pack-name> <pack-name> --commit-message "Add <pack-name>"
Upload a single file
hf upload luckyrobots/ContentVault <local-file> <path-in-repo> --commit-message "Add file"
Upload large folder (resumable, multi-threaded, auto-retry)
hf upload-large-folder luckyrobots/ContentVault <local-folder>
Delete files remotely
hf upload luckyrobots/ContentVault . . --include="" --delete="<folder-name>/*" --commit-message "Remove <folder-name>"
Tips
- Resumable uploads:
upload_large_folderandhf upload-large-folderare resumable. If interrupted, run the same command again. - Don't use raw
git pushfor large files — use the CLI/API instead. They handle LFS/Xet automatically. - Write token required: Tokens default to read-only. Enable write access at https://huggingface.co/settings/tokens.
- 50 GB max per file on HuggingFace. Split larger files before uploading.
- Ignore patterns: Use
--includeand--excludeto filter what gets uploaded.