PyPI package management integrated directly into MLflow’s web interface
pip install mlflow-plugin-manager
git clone https://github.com/thijsdezoete/mlflow-plugin-manager.git
cd mlflow-plugin-manager
pip install -e .
# Using docker compose
docker compose up -d
# Or using make
make docker-build
make docker-run
Run the MLflow server with the Plugin Manager:
mlflow server --app-name plugin_manager
Access the Plugin Manager at:
PLUGIN_SERVER_URL: URL of the plugin metadata server
https://api.mlflowplugins.com (production)http://localhost:5001 if running your own server# Use production server (default)
mlflow server --app-name plugin_manager
# Use local server for development
export PLUGIN_SERVER_URL="http://localhost:5001"
mlflow server --app-name plugin_manager
make help # Show all available commands
# Development
make install # Install in development mode
make dev # Run MLflow with plugin manager
make test # Run test suite
make lint # Run linting
# Docker
make docker-build # Build Docker image
make docker-run # Start container
make docker-stop # Stop container
# Testing MLflow Versions
make test-mlflow2 # Test with MLflow 2.x
make test-mlflow3 # Test with MLflow 3.x
The MLflow Plugin Manager consists of two components:
Note: Package installation happens locally on your machine. The remote server only provides plugin metadata (available packages, versions, etc.).
GET /plugin-manager/ - Web interfaceGET /plugin-manager/installed-plugins - List installed packagesGET /plugin-manager/available-plugins - Browse PyPI packagesPOST /plugin-manager/install-plugin - Install a packagePOST /plugin-manager/uninstall-plugin - Remove a packageGET /plugin-manager/check-plugin-updates - Check for updatesPOST /plugin-manager/upgrade-plugin - Update a package| MLflow Version | Server Type | Status |
|---|---|---|
| 2.x | Flask/Gunicorn | Supported |
| 3.x | FastAPI/Uvicorn | Supported |
The plugin auto-detects the MLflow version and adapts accordingly.
For maintainers who want to run their own plugin metadata server:
cd server
python reindex_plugins.py # Index packages from PyPI
python app.py # Run metadata server on port 5001
Note: End users don’t need to run these commands - the default configuration uses api.mlflowplugins.com.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.