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
PodGallery Editable native Pod gallery with materials, articulated exhibits and elastic cables (2026.3+)
SO100PickAndPlace SO-100 pick and place task
Skies-Vol-1 Sky HDRIs volume 1
UnitreeG1 Unitree G1 humanoid
UnitreeGo2 Unitree Go2 quadruped
UnitreeH1 Unitree H1 humanoid model (developer pack; no controller)
UnitreeH2 Standard Unitree H2 humanoid (developer pack; fixed hands, no controller)
UnitreeH2PlusSharpa Unitree H2 Plus with articulated Sharpa hands (developer pack; no controller)
Welcome Welcome / intro pack

Project engine versions

Project packs that require a legacy-to-Pod migration have separate archives for engines through 2026.2 and for 2026.3 onward. The newer folder and ZIP names append Pod to the original pack ID, while keeping the same display name and packs/devpacks membership. For example, CupCleanerPod/CupCleanerPod.zip contains the Pod version of CupCleaner. Welcome and the existing WelcomePod already form this pair; both are indexed under packs.

EngineVersion.Max is exclusive: the original packs use Max: "2026.3" to include every 2026.2 release. The new packs use Min: "2026.3". Both use Behaviour: Hide, so incompatible variants disappear instead of becoming disabled cards. Existing lower bounds on the original packs are preserved.

The new archives use Pod motion and animation graphs, retaining asset handles, scene inputs, clip bindings and script controls. Archives retained for legacy engines are unchanged.

SimplePick already uses Pod and remains one pack with Min: "2026.3" and Behaviour: Hide. BlankProject contains no graphs, remains one pack without an engine-version restriction, and continues to serve the editor's starter cards.

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

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_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.
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading