You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)
Reliable shutdown on Windows + lelab --stop #46 — Reliable Windows shutdown + lelab --stop. Process-tree teardown so uvicorn/Vite children and camera handles are released; pre-flight port checks.
Run the whole thing locally (the built UI is committed, so there's no npm step):
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.
App shell + routes + design tokens — the product-direction piece; review on its own.
Recording / camera workflow — take/redo loop, resume fixes, camera config, recording prefs.
Dataset management — ⚠️ see flag below.
Training + Skills — Skills page, version history, training/monitoring polish.
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.
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.
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)lerobot[smolvla|pi|diffusion]before training starts (instead of a buriedImportErrormid-run). Builds on your existing install-extra pattern.lelab --stop#46 — Reliable Windows shutdown +lelab --stop. Process-tree teardown so uvicorn/Vite children and camera handles are released; pre-flight port checks.ran_with_warning, notfailed.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):
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/codexCLI.Suggested review order (smallest / safest first)
lelab --stop#46 / Force-release camera/serial resources when a device disconnect fails #47 / Surface the real inference error; don't report a gripper-overload shutdown as failed #48.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
claude/codexCLIs (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.Testing
Backend
pytestgreen;npm run build+tsc+eslintclean; 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.