Generate production-ready MLOps project scaffolds β via Web UI or Python CLI.
Scikit-learn Β· PyTorch Β· TensorFlow Β· NLP (Hugging Face) Β· Multi-cloud Β· 40+ files per project
This stack supports the full MLOps lifecycle:
Data β Train β Track β Orchestrate β Deploy β Monitor β Improve
Recent improvements to the Next.js Web UI and TypeScript generator:
- Observatory UI β redesigned landing with mission, features, how-it-works, and generator sections
- Mobile-first layout β compact on phones; desktop layout unchanged from
smbreakpoint up - Archive preview β
GET /api/preview(partial config, no strict validation) andPOST /api/preview?strict=truebefore download - File tree preview in the form β see 40+ paths before generating
- Recent projects β browser-local history with quick re-download
- Legacy Jinja templates wired β repo
templates/synced intoweb_ui/templates/and rendered for classification / regression / timeseries - Hugging Face NLP β
src/nlp/finetune.py,configs/nlp.yaml, Trainer + optional FastAPI inference - Deployment artifacts β root
Dockerfile,docker-compose.yml, Kubernetes manifests (k8s/) when Docker/K8s is selected - Orchestration files β Airflow DAG (
dags/ml_training_dag.py), Kubeflow pipeline stub - Monitoring scripts β Evidently drift report + custom metrics collector
- Config presets & templates β
preset_configandcustom_templatenow affect output (CI, notebooks, minimal/comprehensive/microservice bundles) - Stack presets β also set preset + template fields when applied
generation_insights.jsonβ optional recommendations when analytics is enabled
- Unified
timeseriesnaming (was mixed withtime-series) - Fixed
TimeSeriesModelimports viasnippets/model_import.py.j2 - Improved
requirements.txt.j2,config.yaml.j2, README/Makefile/.env Jinja templates - New
templates/nlp/for Hugging Face fine-tuning (CLI + web sync)
| Capability | Web UI | Python CLI |
|---|---|---|
| Frameworks | sklearn, PyTorch, TensorFlow | Same |
| Task types | classification, regression, timeseries, nlp, computer-vision | Same |
| Stack presets | 6 curated stacks (form) | init --preset |
| ZIP download | Yes | Project folder |
| Generator runtime | Pure TypeScript (API routes) | Jinja2 + Python |
- Experiment tracking β MLflow, W&B, custom, or none
- Orchestration β Airflow DAG, Kubeflow pipeline YAML (not empty folders only)
- Deployment β FastAPI inference, Docker (+ compose), Kubernetes (deployment/service/configmap)
- Monitoring β Evidently drift script, custom metrics collector
- Cloud packs β AWS / GCP / Azure folders with Dockerfile, config, deploy scripts
| Preset config | Effect |
|---|---|
quick-start |
Lean output (e.g. skips Makefile) |
production-ready |
CI workflow + stronger tests |
research |
Starter Jupyter notebook |
enterprise |
CI + pre-commit + notebook |
| Custom template | Effect |
|---|---|
minimal |
Essentials only |
comprehensive |
CI, pre-commit, notebook |
microservice |
API middleware patterns for FastAPI |
| Preset | Framework | Tracking | Orchestration | Deploy | Monitor |
|---|---|---|---|---|---|
| Quick Start | Sklearn | None | None | FastAPI | None |
| Data Science | Sklearn | MLflow | None | FastAPI | Custom |
| Deep Learning | PyTorch | W&B | None | Docker | None |
| Production MLOps | PyTorch | MLflow | Airflow | Docker | Evidently |
| Enterprise | TensorFlow | MLflow | Kubeflow | Kubernetes | Evidently |
| Research | PyTorch | W&B | None | FastAPI | None |
The fastest path: open the app, pick a stack preset, configure options, preview files, generate, and download a ZIP.
cd web_ui
npm install
npm run dev
# Syncs templates/ from repo root, then starts Next.js
# β http://localhost:3000| Method | Route | Description |
|---|---|---|
GET |
/api/options |
Dropdown values for the form |
GET |
/api/preview?framework=...&task_type=... |
File tree preview (defaults for missing fields) |
POST |
/api/preview |
Preview with partial body |
POST |
/api/preview?strict=true |
Preview with full validation |
POST |
/api/generate |
Start async generation β { task_id } |
GET |
/api/status/[taskId] |
Poll progress |
GET |
/api/download/[taskId] |
Download ZIP |
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| UI | Tailwind CSS v4, Syne + DM Sans + JetBrains Mono |
| Forms | react-hook-form + Zod |
| Generator | TypeScript (web_ui/src/lib/generator/) |
| Templates | Jinja2 sources in templates/ (synced on dev/build) |
| Archive | archiver (ZIP) |
cd web_ui
npm run build # runs scripts/sync-templates.mjs then next build
npm startSet the deploy root to web_ui. The generator runs in API routes β no separate Python server required.
Install and use the classic Typer CLI (renders templates/ with Jinja2):
pip install mlops-project-generator==2.1.0
# or from source:
pip install -e .mlops-project-generator initmlops-project-generator init --preset production-mlops --project-name my-ml-platform
mlops-project-generator list-presetsmlops-project-generator init \
--framework pytorch \
--task-type classification \
--tracking mlflow \
--orchestration airflow \
--deployment docker \
--monitoring evidently \
--project-name enterprise-ml \
--author-name "ML Team" \
--description "Production ML pipeline"mlops-project-generator clone <source> --name <target>
mlops-project-generator archive <project> --type zip
mlops-project-generator check_deps --update --security
mlops-project-generator profile --format json
mlops-project-generator migrate <old> <new-framework>
mlops-project-generator doctor --fix --deep| Flag | Values |
|---|---|
--framework / -f |
sklearn, pytorch, tensorflow |
--task-type / -t |
classification, regression, timeseries, nlp, computer-vision |
--tracking / -r |
mlflow, wandb, custom, none |
--orchestration / -o |
airflow, kubeflow, none |
--deployment / -d |
fastapi, docker, kubernetes |
--monitoring / -m |
evidently, custom, none |
Typical output (varies by stack, preset, and template):
your-project/
βββ src/
β βββ train.py # or nlp/finetune.py for NLP
β βββ inference.py
β βββ data/ # loaders (+ NLP/CV helpers)
β βββ models/ # task-specific model modules
β βββ nlp/ # Hugging Face (NLP task)
βββ configs/
β βββ config.yaml
β βββ nlp.yaml # NLP only
βββ dags/ # Airflow (if selected)
β βββ ml_training_dag.py
βββ pipelines/ # Kubeflow (if selected)
βββ k8s/ # Kubernetes (if selected)
β βββ deployment.yaml
β βββ service.yaml
β βββ configmap.yaml
βββ scripts/monitoring/ # Evidently / custom monitoring
βββ cloud/ # Optional cloud provider pack
β βββ <provider>/<service>/
βββ Dockerfile # Docker / K8s deploy
βββ docker-compose.yml # Docker deploy
βββ .github/workflows/ci.yml # production-ready / enterprise preset
βββ tests/
βββ notebooks/
βββ requirements.txt
βββ Makefile
βββ .env.example
βββ generation_insights.json # if analytics enabled
βββ project_config.json
βββ README.md
- RandomForest / regression / time-series models via Jinja templates
DataLoader,FeatureEngineering, joblib persistence
- Task-specific model templates (
classification_model,regression_model,timeseries_model) - Training loops with tracking hooks; FastAPI inference when selected
- Fine-tune with
transformers+datasets+Trainer - Config-driven (
configs/nlp.yaml), demo data if CSV missing - FastAPI inference when deployment is FastAPI
- Image dataset helper + OpenCV/Pillow in requirements
| Selection | Generated artifacts |
|---|---|
| FastAPI | src/inference.py with /health and /predict |
| Docker | Dockerfile, .dockerignore, docker-compose.yml, scripts/run_docker.sh |
| Kubernetes | k8s/*.yaml, scripts/deploy_k8s.sh |
| Evidently | scripts/monitoring/drift_report.py |
| Custom monitoring | scripts/monitoring/metrics_collector.py |
MLOps-Project-Generator/
βββ generator/ # Python CLI (Typer, renderer, cloud deployer, β¦)
βββ templates/ # Jinja2 sources (shared by CLI + Web UI sync)
β βββ common/ # README, requirements, config, snippets, tests
β βββ sklearn/ | pytorch/ | tensorflow/
β βββ nlp/ # Hugging Face NLP templates
βββ web_ui/ # Next.js application
β βββ app/api/ # generate, status, download, options, preview
β βββ src/
β β βββ components/ # MLOpsForm, marketing, form sections
β β βββ lib/
β β βββ generator/ # TS generator + legacy Jinja loader
β β βββ server/ # validation, generation pipeline
β β βββ tasks/ # in-memory task store
β βββ scripts/
β βββ sync-templates.mjs # copies ../templates β web_ui/templates
βββ tests/ # Python CLI tests
βββ pyproject.toml
βββ README.md
cd web_ui
npm install
npm run dev
npm run buildpip install -e ".[dev]"
pytest tests/ -v
black generator/ tests/
flake8 generator/ tests/- Fork the repository
- Create a feature branch
- Update
templates/and/orweb_ui/src/lib/generator/as needed - Run
cd web_ui && npm run buildandpytestfor CLI changes - Open a pull request
MIT β see LICENSE.
- Python CLI with interactive + non-interactive modes
- Scikit-learn, PyTorch, TensorFlow templates
- MLflow, W&B, Airflow, Kubeflow, Docker, K8s, Evidently scaffolds
- Multi-cloud deployment templates (AWS, GCP, Azure)
- Web UI β Next.js generator with ZIP download
- TypeScript generator β no Python runtime on the server
- Legacy Jinja integration β
templates/rendered in Web UI for core ML tasks - Hugging Face NLP β fine-tune + inference stubs
- Archive preview API β GET/POST
/api/preview - Deployment & orchestration files β real DAGs, K8s manifests, Docker Compose
- Config preset + custom template profiles in generated ZIPs
- UI redesign β marketing sections, stack presets, mobile compact layout
- Template quality pass β timeseries naming, model imports, requirements fixes
- Shareable project config links
- Template marketplace
- Additional frameworks (XGBoost, LightGBM)
- Deeper NLP/CV model templates in Jinja (beyond stubs)
β If this project helps you, consider starring the repo!
Generated with β€οΈ by MLOps Project Generator
