diff --git a/README.md b/README.md index 5270b9aaf6..4d2092b3a9 100644 --- a/README.md +++ b/README.md @@ -1 +1,144 @@ -# new-ui-prototype +

+ Unsloth Studio +

+ +

🦥 Unsloth Studio

+ +

+ A modern, full-stack web interface for fine-tuning, managing, and chatting with large language models — locally or in the cloud. +

+ +

+ Features • + Quick Start • + API Reference • + Project Structure +

+ +--- + +## Features + +| Area | Capabilities | +|---|---| +| **Training** | Configure and launch LoRA / QLoRA fine-tuning jobs with real-time SSE progress streaming, live loss charts, and one-click stop / resume | +| **Model Management** | Browse, load, and manage Hugging Face hub models and local checkpoints | +| **Inference** | Interactive chat playground for testing fine-tuned models | +| **Dataset Tools** | Upload, preview, and prepare datasets (JSON, CSV, Parquet, PDF, DOCX) | +| **Export** | Export & push trained adapters to the Hugging Face Hub | +| **Auth** | Token-based authentication with JWT access / refresh flow and first-time setup token | + +## Quick Start + +### One-command setup + +```bash +bash setup.sh +``` + +This script will: +1. Install **Node.js ≥ 20** via nvm (if needed) +2. Build the frontend to `studio/frontend/dist` +3. Create a Python virtual environment and install all dependencies (including `unsloth`) +4. Register a convenient `unsloth-ui` shell alias + +### Launch the studio + +```bash +# After setup, open a new terminal (or source ~/.bashrc), then: +unsloth-ui -H 0.0.0.0 -p 8000 +``` + +On **first launch**, a one-time setup token is printed to the console. Use it in the browser to create your admin account. + +## API Reference + +All endpoints require a valid JWT `Authorization: Bearer ` header (except `/api/auth/*` and `/api/health`). + +| Method | Endpoint | Description | +|---|---|---| +| `GET` | `/api/health` | Health check | +| `GET` | `/api/system` | System info (GPU, CPU, memory) | +| `POST` | `/api/auth/signup` | Create account (requires setup token on first run) | +| `POST` | `/api/auth/login` | Login and receive JWT tokens | +| `POST` | `/api/auth/refresh` | Refresh an expired access token | +| `GET` | `/api/auth/status` | Check if auth is initialized | +| `POST` | `/api/train/start` | Start a training job | +| `POST` | `/api/train/stop` | Stop a running training job | +| `POST` | `/api/train/reset` | Reset training state | +| `GET` | `/api/train/status` | Get current training status | +| `GET` | `/api/train/metrics` | Get training metrics (loss, LR, steps) | +| `GET` | `/api/train/stream` | SSE stream of real-time training progress | +| `GET` | `/api/models/` | List available models | +| `POST` | `/api/inference/chat` | Send a chat message for inference | +| `GET` | `/api/datasets/` | List / manage datasets | + +> Full interactive docs are available at `/docs` (Swagger UI) and `/redoc` when the server is running. + +## CLI Commands + +The Unsloth CLI (`cli.py`) provides the following commands: + +``` +Usage: cli.py [COMMAND] + +Commands: + train Fine-tune a model + inference Run inference on a trained model + export Export a trained adapter + list-checkpoints List saved checkpoints + ui Launch the Unsloth Studio web UI + studio Launch the studio (alias) +``` + +## Project Structure + +``` +new-ui-prototype/ +├── cli.py # CLI entry point +├── cli/ # Typer CLI commands +│ └── commands/ +│ ├── train.py +│ ├── inference.py +│ ├── export.py +│ ├── ui.py +│ └── studio.py +├── setup.sh # One-command bootstrap script +└── studio/ + ├── backend/ + │ ├── main.py # FastAPI app & middleware + │ ├── run.py # Server launcher (uvicorn) + │ ├── auth/ # Auth storage & JWT logic + │ ├── routes/ # API route handlers + │ │ ├── training.py + │ │ ├── models.py + │ │ ├── inference.py + │ │ ├── datasets.py + │ │ └── auth.py + │ ├── models/ # Pydantic request/response schemas + │ ├── core/ # Training engine & config + │ ├── utils/ # Hardware detection, helpers + │ └── requirements.txt + ├── frontend/ + │ ├── src/ + │ │ ├── features/ # Feature modules + │ │ │ ├── auth/ # Login / signup flow + │ │ │ ├── training/ # Training config & monitoring + │ │ │ ├── studio/ # Main studio workspace + │ │ │ ├── chat/ # Inference chat UI + │ │ │ ├── export/ # Model export flow + │ │ │ └── onboarding/# Onboarding wizard + │ │ ├── components/ # Shared UI components (shadcn) + │ │ ├── hooks/ # Custom React hooks + │ │ ├── stores/ # Zustand state stores + │ │ └── types/ # TypeScript type definitions + │ ├── package.json + │ └── vite.config.ts + └── tests/ # Backend test suite +``` + +## License + +This project is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](https://www.gnu.org/licenses/agpl-3.0.html). + +Copyright © 2026 Unsloth AI.