CLI and templates for production-ready MLOps projects โ Scikit-learn, PyTorch, TensorFlow, NLP (Hugging Face), and multi-cloud deployment
Project description
๐ง MLOps Project Generator
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
๐ What's New (Web UI v1.2.0)
Recent improvements to the Next.js Web UI and TypeScript generator:
Web experience
- 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
Generator (TypeScript v1.2.0)
- 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
Template fixes (templates/)
- 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)
๐ Features
๐๏ธ Core generation
| 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 |
๐ฌ MLOps integration (generated into ZIP)
- 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
๐ฆ Template profiles (Web UI โ optional fields)
| 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 |
๐ฏ Stack presets (Web UI cards)
| 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 |
๐ Web UI (Recommended)
The fastest path: open the app, pick a stack preset, configure options, preview files, generate, and download a ZIP.
Run locally
cd web_ui
npm install
npm run dev
# Syncs templates/ from repo root, then starts Next.js
# โ http://localhost:3000
API routes
| 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 |
Web UI tech stack
| 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) |
Deploy / self-host
cd web_ui
npm run build # runs scripts/sync-templates.mjs then next build
npm start
Set the deploy root to web_ui. The generator runs in API routes โ no separate Python server required.
๐ฆ Python CLI
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 .
Interactive
mlops-project-generator init
With preset
mlops-project-generator init --preset production-mlops --project-name my-ml-platform
mlops-project-generator list-presets
Non-interactive (CI/CD)
mlops-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"
Advanced CLI (v2.x)
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
init flags
| 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 |
๐ Generated project structure
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
๐ ๏ธ Framework & task highlights
Scikit-learn
- RandomForest / regression / time-series models via Jinja templates
DataLoader,FeatureEngineering, joblib persistence
PyTorch & TensorFlow
- Task-specific model templates (
classification_model,regression_model,timeseries_model) - Training loops with tracking hooks; FastAPI inference when selected
NLP (Hugging Face)
- Fine-tune with
transformers+datasets+Trainer - Config-driven (
configs/nlp.yaml), demo data if CSV missing - FastAPI inference when deployment is FastAPI
Computer vision
- Image dataset helper + OpenCV/Pillow in requirements
๐ Deployment & monitoring (generated)
| 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 |
๐๏ธ Repository structure
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
๐งช Development
Web UI
cd web_ui
npm install
npm run dev
npm run build
Python CLI
pip install -e ".[dev]"
pytest tests/ -v
black generator/ tests/
flake8 generator/ tests/
๐ค Contributing
- 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
๐ License
MIT โ see LICENSE.
๐บ๏ธ Roadmap
Completed
- 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
Upcoming
- Shareable project config links
- Template marketplace
- Additional frameworks (XGBoost, LightGBM)
- Deeper NLP/CV model templates in Jinja (beyond stubs)
๐ Support
โญ If this project helps you, consider starring the repo!
Generated with โค๏ธ by MLOps Project Generator
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 mlops_project_generator-2.1.0.tar.gz.
File metadata
- Download URL: mlops_project_generator-2.1.0.tar.gz
- Upload date:
- Size: 157.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5e7cc542586da0309336f71e50648eccae020f5d08bdc4158a7b580f3c3727e
|
|
| MD5 |
f2376f4b84cf64696f17f9762390259f
|
|
| BLAKE2b-256 |
3d2fb2cc7c0de3d624107edd35b5a0378c84d8fd8ad5d8c8d7fafa75a10a81b6
|
File details
Details for the file mlops_project_generator-2.1.0-py3-none-any.whl.
File metadata
- Download URL: mlops_project_generator-2.1.0-py3-none-any.whl
- Upload date:
- Size: 128.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e01f062a38f346832691328cb6cc589bae7f21ca486fc7c21da886e225a3273f
|
|
| MD5 |
68daf3ad4aba2efad832bd0914a21cbd
|
|
| BLAKE2b-256 |
c6db1e332631269c87d02b8b3c4ce3892a446c185df246cfc5a14c3642dac637
|