--- license: mit tags: - content-packs - robotics - 3d-environments - luckyrobots --- # ContentVault Content packs for [Lucky Robots](https://luckyrobots.com). Each pack contains a `metadata.yaml`, a `thumbnail.png`, and a `.zip` with the pack contents. ## Clone ```bash 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: 1. Parses the commit diff to find changed files 2. Streams each file directly to Cloudflare R2 (no buffering, handles large zip files) 3. Deletes removed files from R2 4. R2 serves the files through Cloudflare's CDN with a 30-day cache at 300+ edge locations worldwide ## Worker setup ```bash cd worker npm install ``` ### Secrets (set via wrangler) ```bash npx wrangler secret put HF_WEBHOOK_SECRET npx wrangler secret put HF_TOKEN ``` ### Deploy ```bash npx wrangler deploy ``` ## Setup ```bash # 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 ```bash hf upload luckyrobots/ContentVault . --commit-message "Your message" ``` ### Upload a single pack/subfolder ```bash hf upload luckyrobots/ContentVault / --commit-message "Add " ``` ### Upload a single file ```bash hf upload luckyrobots/ContentVault --commit-message "Add file" ``` ### Upload large folder (resumable, multi-threaded, auto-retry) ```bash hf upload-large-folder luckyrobots/ContentVault ``` ### Delete files remotely ```bash hf upload luckyrobots/ContentVault . . --include="" --delete="/*" --commit-message "Remove " ``` --- ## Tips - **Resumable uploads**: `upload_large_folder` and `hf upload-large-folder` are resumable. If interrupted, run the same command again. - **Don't use raw `git push`** for 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 `--include` and `--exclude` to filter what gets uploaded.