huggingface / huggingface/leLab
Skills-first workflow redesign — proposal + code, with 4 fixes already PR'd (#45–48)
- Dominant language
- TypeScript
- Stars
- 171
- Forks
- 60
- Avg merge
- 1d 52m
- Merged PRs (30d)
- 5
Description
Hi maintainers — I've built a sizeable, "skills-first" workflow redesign of LeLab on top of `main`, and I'd like to hand it over so you can take what's useful and ignore what isn't. I know a big drop is a lot to ask of a review, so I've **already split out the small, self-contained, IA-independent pieces as normal PRs**, and I'm posting this issue for the larger redesign rather than dumping it on you.
## Already opened as focused PRs (each stands alone, off `main`)
- **#45 — Policy-extra preflight.** Install `lerobot[smolvla|pi|diffusion]` before training starts (instead of a buried `ImportError` mid-run). Builds on your existing install-extra pattern.
- **#46 — Reliable Windows shutdown + `lelab --stop`.** Process-tree teardown so uvicorn/Vite children and camera handles are released; pre-flight port checks.
- **#47 — Force-release camera/serial on disconnect failure.** Stops a flaky camera/port staying held and blocking the next run.
- **#48 — Surface the real inference error.** Pull the actual exception from the rollout log; classify a gripper-overload-on-shutdown as `ran_with_warning`, not `failed`.
Each is small, tested, and reviewable independently of everything below.
## The larger redesign — a visual tour
**Full branch:** `nobullryder:redesign/machined-console` → https://github.com/nobullryder/leLab/tree/redesign/machined-console
(diff vs `main`: ~118 files, ~11k insertions, ~3.3k deletions). Screenshots below are from a live local instance with real data.
**Run the whole thing locally** (the built UI is committed, so there's no npm step):
```bash
git clone -b redesign/machined-console https://github.com/nobullryder/leLab.git
cd leLab && pip install -e .
lelab # serves the UI + API on http://localhost:8000
```
Browsing datasets / training / the UI needs no hardware; teleoperate / record / inference need an SO-101.
### Home — a skills-first journey
Record → teleoperate → train → run, in plain words with the robotics terms glossed.

### Robot — pick a robot, set ports, calibrate

### Datasets — a library of your recordings
Pretty names + source badges (local / Hub / both), grid or list view.

### Dataset detail + episode player
Per-episode listing, sync status, add-takes, publish, per-episode delete — and a custom player that **clips playback to each episode** (not the whole multi-episode video file).


### Train — config + live job monitoring

### Skills — trained policies with version history
Models grouped by their source dataset into **versions**: retrain after editing a dataset and the old version stays here to run. (Shown: one dataset trained four times — two ACT, one failed SmolVLA, one training live.)

### Chat — a skill-aware assistant
Ask in plain words; it picks the right trained skill and (with your confirmation) runs it. Backed by an OpenAI-compatible API **or** a local `claude` / `codex` CLI.

## Suggested review order (smallest / safest first)
1. **Policy-extra preflight** — done, #45.
2. **Runtime / platform reliability** — done, #46 / #47 / #48.
3. **App shell + routes + design tokens** — the product-direction piece; review on its own.
4. **Recording / camera workflow** — take/redo loop, resume fixes, camera config, recording prefs.
5. **Dataset management** — ⚠️ see flag below.
6. **Training + Skills** — Skills page, version history, training/monitoring polish.
7. **Chat surface** — ⚠️ see flag below.
I'm happy to open 3–7 as a **stacked PR series of focused diffs** if you want to review them that way — just say the word.
## Please review these in isolation
- **Dataset management (5)** includes **per-episode delete that rewrites the local dataset's parquet/video/metadata files** and re-indexes episodes. It's behind an explicit confirm and has tests on synthetic datasets, but it's the riskiest piece — review it on its own.
- **Chat surface (7)** shells out to locally-installed `claude` / `codex` CLIs (or an OpenAI-compatible API) and produces assistant-driven actions; **anything touching hardware is confirmed by the user**. It's optional/local, not required infrastructure.
- This is a **wholesale visual + IA redesign**. If you don't want that direction, the reliability fixes (#45–48) stand entirely on their own.
## Testing
Backend `pytest` green; `npm run build` + `tsc` + `eslint` clean; core flows dogfooded (record/resume, episode delete on real + synthetic datasets, Skills run/delete, inference launch). The redesign is opinionated — treat the visuals as a proposal, not a fait accompli.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the redesign/machined-console branch and its suggested review order, then run the provided local install and lelab commands. Review the already separated PRs #45–48 before assessing the larger app shell, recording, dataset, training, and chat areas. Done means agreeing on the redesign scope or splitting it into focused, reviewable PRs while preserving the reported pytest, build, TypeScript, and ESLint checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, typescript
- Domain
- full-stack, robotics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100