For accurate information, you might want to contact LeRobot Discord.
Yes. But there is no single “EnvHub directory” page today. Discovery is mostly convention plus Hub search filters, and a lot of EnvHub repos are not Spaces even though the docs show creating them as Spaces.
1) What “EnvHub environments” are on the Hub
EnvHub is just “load Python from a Hub git repo and call make_env”. The LeRobot docs define the minimal contract:
- The repo must contain an
env.py (or you pass a custom file path).
- That file must expose a
make_env(...) entry point that returns a Gymnasium env or vector env (or a dict for multitask suites). (Hugging Face)
- Loading runs third-party Python, so you must opt in with
trust_remote_code=True and you should pin a commit for safety and reproducibility. (Hugging Face)
Crucially, the URL syntax supports:
user/repo
user/repo@revision
user/repo:path
user/repo@rev:path (Hugging Face)
That last form is why Lightwheel’s EnvHub looks like “a model repo with files inside it” rather than a Space.
2) Why you don’t see “EnvHub” on the Spaces page
The EnvHub doc’s “upload” section literally uses --type space when creating the repo. (Hugging Face)
But the same doc’s quick start loads lerobot/cartpole-env. (Hugging Face)
And lerobot/cartpole-env is hosted as a Model repo (it appears under Models, has “No model card”, and is not a deployed Space). (Hugging Face)
Likewise, LightwheelAI/leisaac_env is also a Model repo in Hub terms. (Hugging Face)
So in practice:
- EnvHub repos can be Models or Spaces. The “repo type” is mostly a Hub UI categorization.
- Many EnvHub repos are uploaded as Models (often with no model card), so browsing only Spaces will miss them.
3) Practical discovery methods that work today
A) Start from known publishers (highest signal)
This is the fastest way to find “real” EnvHub repos.
- The
lerobot org page lists models, and you can spot EnvHub-ish repos there (examples include lerobot/dummy-hub-env, lerobot/unitree-g1-mujoco, and lerobot/cartpole-env). (Hugging Face)
- For Lightwheel LeIsaac, the LeRobot docs show EnvHub usage via
LightwheelAI/leisaac_env:envs/<task>.py and provide a script to list available tasks. (Hugging Face)
- For NVIDIA IsaacLab Arena integration, the docs show using an EnvHub repo path (
--env.hub_path=nvidia/isaaclab-arena-envs) and describe cloning and modifying that EnvHub repo. (Hugging Face)
Concrete examples you can open right now:
B) Use tags. “LeRobot” + “environment” is the closest thing to a marker
Some community EnvHub repos are tagged with things like LeRobot and environment.
Example: jadechoghari/cartpole-env shows tags Robotics, LeRobot, environment. (Hugging Face)
So, on the Hub:
- Go to Models, filter for tag(s) like LeRobot and environment.
- Search terms like
-env, env, EnvHub, LeRobot environment.
This is not universal (many official env repos have empty/absent cards), but when present it is the cleanest discovery signal.
C) Use Hub full-text search, but understand its limits
Hugging Face “full-text search” indexes:
- model cards and dataset cards
- Spaces
app.py files
It does not claim to index arbitrary files in model repos (like env.py). (Hugging Face)
Implication:
- Searching for
make_env( might work only if the repo’s README/model card mentions it.
- A Space-based EnvHub might be easier to find if it has an
app.py containing searchable text. (Hugging Face)
Useful entry points:
D) Programmatic discovery with huggingface_hub (best if you want something repeatable)
Hugging Face explicitly supports listing/searching models and spaces via HfApi using fields like search, author, and filter. (Hugging Face)
You can use this to:
- query for candidates (models + spaces)
- optionally validate that a repo contains
env.py (or some known path)
Example (Python):
# deps: pip install -U huggingface_hub
from huggingface_hub import HfApi
api = HfApi()
# 1) Find likely candidates (Models)
candidates = list(api.list_models(search="LeRobot environment", limit=50))
# 2) Also scan Spaces (some EnvHub repos may be Spaces)
spaces = list(api.list_spaces(search="LeRobot env", limit=50))
print("Top model candidates:")
for m in candidates[:10]:
print(m.id)
print("\nTop space candidates:")
for s in spaces[:10]:
print(s.id)
This is directly aligned with Hugging Face’s “Search the Hub” guide (same API, same fields). (Hugging Face)
CLI equivalents also exist (hf models ls, hf spaces ls) with --search, --sort, --limit. (Hugging Face)
E) Validate a repo quickly before you run it
Because many EnvHub repos look like “empty model cards”, you usually need to click Files and confirm:
- there is an
env.py (or you know the correct :path)
- dependencies in
requirements.txt (if any)
- recent commits and who owns the repo
This matches LeRobot’s own security guidance: inspect code, pin commits, and only use trust_remote_code=True for trusted sources. (Hugging Face)
4) Why LightwheelAI “EnvHub as models” works
LeRobot’s EnvHub docs explicitly support user/repo:path and user/repo@rev:path. (Hugging Face)
The LeIsaac integration docs use exactly that form:
make_env("LightwheelAI/leisaac_env:envs/so101_pick_orange.py", ...) (Hugging Face)
So it is expected that one Hub repo can contain multiple environment entrypoints under envs/, and you select them by file path.
5) Similar questions and ongoing “rough edges” (what people complain about)
“Where is the directory?”
There is an active forum thread asking essentially your question (“How to discover EnvHub environments?”). (Hugging Face Forums)
“The repo structure and metadata aren’t standardized enough”
A LeRobot GitHub issue proposes modernizing the EnvHub environment repository design for maintainability, scalability, and automated validation. That is basically the “we need better structure and discoverability” complaint, formalized. (GitHub)
“EnvHub exists, but it’s still new”
LeRobot releases explicitly call out adding EnvHub support (“allow loading envs from the hub”). (GitHub)
Net: conventions and tooling around discovery are still stabilizing.
6) Practical “do this now” checklist
- Check publishers first
lerobot org Models list. (Hugging Face)
- LeIsaac EnvHub docs for Lightwheel tasks and the
list_envs.py helper. (Hugging Face)
- IsaacLab Arena docs for NVIDIA env hub path. (Hugging Face)
- Search Models, not just Spaces
- Many official env repos are model repos (
lerobot/cartpole-env), despite the doc’s “create a Space” example. (Hugging Face)
- Exploit tags when they exist
- Filter for
LeRobot + environment (example repo shows those tags). (Hugging Face)
- Use programmatic search if you want a reproducible list
HfApi.list_models(search=...), HfApi.list_spaces(search=...). (Hugging Face)
- Always pin and inspect before running
Curated references (high-signal)
Summary
- EnvHub repos are just Hub git repos with an
env.py (or a specified :path) exposing make_env. (Hugging Face)
- Many EnvHub repos are uploaded as Models, not Spaces.
lerobot/cartpole-env is the canonical example. (Hugging Face)
- Best discovery today: browse known orgs, use tags (
LeRobot, environment) when present, and use huggingface_hub search programmatically. (Hugging Face)
- Full-text search will miss repos with empty cards because it does not claim to index
env.py in model repos. (Hugging Face)
- Treat
trust_remote_code=True as running arbitrary code. Inspect and pin commits. (Hugging Face)