Web-based GUI for LizyML
Project description
LizyStudio
A web-based GUI for machine-learning workflows. Configure, train, evaluate, tune, and run inference — all from your browser, no code required.
LizyStudio wraps ML backend libraries (starting with LizyML) behind an adapter layer, so the same interface works across different backends.
Features
Workspace — iterative ML workflow in a single page
Configure data, model parameters, cross-validation, and run training — all without leaving the page. Results appear in real-time via WebSocket.
- JSON-Schema-driven config forms — backend schemas are rendered automatically; no hand-written UI per backend
- CV fold preview and column value distribution bars
- BlockedGroupKFold 2-axis editor for complex split strategies
- Config upload/download (YAML/JSON)
Jobs — training lifecycle management
Browse all fit and tune jobs. Inspect metrics, feature importance, learning curves, and confusion matrices. Export trained models or standalone Python code.
- KPI cards with key metrics at a glance
- Feature importance with kind selection (split, gain, SHAP)
- Learning curve plots with per-fold filtering
- Model export as artifacts or dependency-free Python code
Tune — hyperparameter optimization
Define search spaces with fixed/range modes, run Optuna-powered hyperparameter tuning, and compare trial results.
- Search space editor with default range auto-population
- Real-time trial progress with fold-level scores
Inference — apply models to new data
Predict on new datasets using any completed job's model. Optionally include SHAP explanations and evaluate against ground truth.
- Prediction table with pagination
- Evaluation metrics and plots (when ground truth is available)
- Distribution comparison between inference runs
- CSV download of results
Adapter architecture
Plug in new ML backends by implementing a single Python protocol. The GUI adapts automatically — no frontend changes needed.
See the Adapter Guide for implementation details.
Requirements
- Python 3.10+
Installation
pip install lizystudio
Quick start
lizystudio # starts the server on http://localhost:8501
lizystudio --port 9000 # custom port
Open your browser and navigate to the URL shown in the terminal.
Typical workflow
- Load data — upload a CSV/Parquet or select a local file
- Configure model — adjust parameters or use smart defaults
- Train — click Fit (single run) or Tune (hyperparameter search)
- Review results — metrics, plots, and feature importance appear in real-time
- Export — save the trained model or generate standalone Python code
- Inference — apply the model to new data
Tech stack
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, Uvicorn |
| Frontend | React 19, TypeScript, Vite |
| UI | Tailwind CSS, shadcn/ui |
| ML backend | LizyML (LightGBM + scikit-learn) |
| Type safety | Pydantic → OpenAPI → openapi-typescript |
| Linting | Ruff (Python), Biome (TypeScript) |
| Testing | pytest, Vitest, Playwright |
Development
Prerequisites
Setup
# Clone
git clone https://github.com/nbx-liz/LizyStudio.git
cd LizyStudio
# Backend
uv sync
uv run lizystudio --reload # dev server on http://localhost:8501
# Frontend (in a separate terminal)
cd frontend
pnpm install
pnpm dev # Vite dev server on http://localhost:5173
Commands
# Backend
uv run pytest # run tests
uv run ruff check . # lint
uv run ruff format --check . # format check
uv run mypy src/lizystudio/ # type check
# Frontend
cd frontend
pnpm build # production build → src/lizystudio/static/
pnpm check # Biome lint + format
pnpm test # Vitest
pnpm test:e2e # Playwright E2E
pnpm generate:api # regenerate API types from OpenAPI
pnpm storybook # component development
Documentation
| Document | Description |
|---|---|
| Architecture | System overview, layer responsibilities, data flow |
| API Reference | REST endpoints, WebSocket, error codes |
| Adapter Guide | How to implement a new ML backend |
| Contributing | Development workflow, conventions, quality gates |
| Changelog | Release history |
| Security | Vulnerability reporting, security design |
Contributing
Contributions are welcome! Please read the Contributing Guide for the development workflow, commit conventions, and quality requirements.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lizystudio-0.3.0.tar.gz.
File metadata
- Download URL: lizystudio-0.3.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ee7971043d00be8e34a2b07399b21e5d319ed5a8a5302af7b235ed329eec6c2
|
|
| MD5 |
578c8ec413aaeadcaf7d352ad1a30959
|
|
| BLAKE2b-256 |
718a9bc16a933b3433b0ad0de1abe781c751805fd66df2883d57fb124943e7e5
|
Provenance
The following attestation bundles were made for lizystudio-0.3.0.tar.gz:
Publisher:
publish.yml on nbx-liz/LizyStudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lizystudio-0.3.0.tar.gz -
Subject digest:
1ee7971043d00be8e34a2b07399b21e5d319ed5a8a5302af7b235ed329eec6c2 - Sigstore transparency entry: 1340148580
- Sigstore integration time:
-
Permalink:
nbx-liz/LizyStudio@cd1c51ec4838441a36eaf8b1039293b3e9949939 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/nbx-liz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cd1c51ec4838441a36eaf8b1039293b3e9949939 -
Trigger Event:
push
-
Statement type:
File details
Details for the file lizystudio-0.3.0-py3-none-any.whl.
File metadata
- Download URL: lizystudio-0.3.0-py3-none-any.whl
- Upload date:
- Size: 111.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9dda387317ed6f86dfdcd049ec95abef6790b731975902363414d0aeb7783c7
|
|
| MD5 |
8222859748e2d29e906b4ac5b7351743
|
|
| BLAKE2b-256 |
9fe1a02a5d82a291d176d5bbe0af6c301560b8f90e6a1e2ed1c21889e4093036
|
Provenance
The following attestation bundles were made for lizystudio-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on nbx-liz/LizyStudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lizystudio-0.3.0-py3-none-any.whl -
Subject digest:
f9dda387317ed6f86dfdcd049ec95abef6790b731975902363414d0aeb7783c7 - Sigstore transparency entry: 1340148583
- Sigstore integration time:
-
Permalink:
nbx-liz/LizyStudio@cd1c51ec4838441a36eaf8b1039293b3e9949939 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/nbx-liz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cd1c51ec4838441a36eaf8b1039293b3e9949939 -
Trigger Event:
push
-
Statement type: