huggingface / huggingface/leLab

Skills-first workflow redesign — proposal + code, with 4 fixes already PR'd (#45–48)

Open
#49 0 comments 1 reaction 0 assignees View on GitHub
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.

![Home](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-home.png)

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

![Robot](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-robot.png)

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

![Datasets](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-datasets.png)

### 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).

![Dataset detail](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-dataset-detail.png)
![Episode player](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-episode-player.png)

### Train — config + live job monitoring

![Train](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-train.png)

### 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.)

![Skills](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-skills.png)

### 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.

![Chat](https://raw.githubusercontent.com/nobullryder/leLab/assets/handoff/page-chat.png)

## 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.