A native cross-platform desktop application for supervised learning (classification, regression) and unsupervised clustering — with team model sharing via PostgreSQL-backed MLflow.
- Python 3.11+
- PostgreSQL (optional, for team sharing)
Using uv (recommended — fast):
pip install uv
uv venv
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows
uv pip install -e .Or with pip:
python -m venv .venv
source .venv/bin/activate
pip install -e .On your team's shared PostgreSQL server:
CREATE DATABASE mlflow_db;
CREATE USER mlforge_user WITH PASSWORD 'admin123';
GRANT ALL PRIVILEGES ON DATABASE mlflow_db TO mlforge_user;python -m mlforge.main
# or if installed as script:
mlforgeOn first launch, go to Settings → MLflow & Team Sharing and enter your PostgreSQL URI:
postgresql+psycopg://mlforge_user:yourpassword@your-server:5432/mlflow_db
All teammates point to the same URI — runs and registered models are shared automatically.
| Panel | Purpose |
|---|---|
| Data Source | Connect to PostgreSQL, SQLite, CSV or Parquet. Browse tables, write custom SQL, select features and target. |
| Data Preview | Full tabular preview with search, column filter, and null highlighting. |
| Analysis | Feature statistics, distributions, correlation matrix, target balance analysis, data quality warnings. |
| Training | Algorithm picker (10 classifiers, 12 regressors), dynamic hyperparameter sliders, preprocessing config, live training log, metrics, SHAP feature importance, confusion matrix / residual plot, generated Python code. |
| Clustering | 8 clustering algorithms, KMeans elbow/silhouette search, PCA scatter plot, cluster profiling table, export labeled CSV. |
| Registry | Full MLflow run history, side-by-side run comparison, model staging (Staging/Production/Archived), .pkl export. |
Random Forest, XGBoost, LightGBM, Logistic Regression, SVM, KNN, Decision Tree, Extra Trees, AdaBoost, Naive Bayes
Random Forest, XGBoost, LightGBM, Linear, Ridge, Lasso, ElasticNet, SVR, KNN, Decision Tree, Extra Trees, Gradient Boosting
K-Means, DBSCAN, Agglomerative, Gaussian Mixture, OPTICS, Birch, Mean Shift, Spectral Clustering
mlforge/
├── main.py # Entry point
├── core/
│ ├── constants.py # Algorithms, hyperparams, config
│ ├── connection.py # Postgres/SQLite/CSV/Parquet connector
│ ├── tracker.py # MLflow wrapper
│ ├── trainer.py # Supervised training engine
│ ├── clusterer.py # Clustering engine
│ └── analysis.py # Feature analysis utilities
├── workers/
│ ├── training_worker.py # QRunnable for background training
│ └── clustering_worker.py # QRunnable for background clustering
└── ui/
├── main_window.py # Main window + navigation
├── styles.py # Dark / light Qt stylesheets
├── panels/
│ ├── data_panel.py # Connection + feature selector
│ ├── preview_panel.py # Tabular data preview
│ ├── analysis_panel.py # EDA workbench
│ ├── training_panel.py # Training console
│ ├── clustering_panel.py # Clustering workbench
│ └── registry_panel.py # Model registry
└── dialogs/
├── connection_dialog.py
└── settings_dialog.py
pip install pyinstaller
pyinstaller --onefile --windowed --name MLForge mlforge/main.pypyinstaller --onefile --windowed --name MLForge mlforge/main.pyUse pyinstaller then wrap with appimagetool.
- DBA creates
mlflow_dbon shared Postgres server - Each team member installs MLForge, enters the same
postgresql+psycopg://...URI in Settings - Team member A trains a model → it appears in everyone's Registry panel
- Team member B opens Registry, promotes it to Production stage
- Everyone can export .pkl from the Registry for deployment
| Layer | Libraries |
|---|---|
| UI | PySide6 (Qt6), pyqtgraph |
| Data | pandas, pyarrow, SQLAlchemy, psycopg3 |
| ML | scikit-learn, xgboost, lightgbm, optuna |
| Clustering | scikit-learn (KMeans, DBSCAN, etc.) |
| Explainability | shap, scikit-plot |
| Tracking | MLflow (Postgres backend) |
| Packaging | PyInstaller, uv |