Metadata-Version: 2.4
Name: mlflow-plugin-manager
Version: 0.1.0
Summary: PyPI package management integrated directly into MLflow's web interface
Home-page: https://github.com/thijsdezoete/mlflow-plugin-manager
Author: Thijs de Zoute
Author-email: 
Project-URL: Bug Tracker, https://github.com/thijsdezoete/mlflow-plugin-manager/issues
Project-URL: Documentation, https://thijsdezoete.github.io/mlflow-plugin-manager/
Project-URL: Source, https://github.com/thijsdezoete/mlflow-plugin-manager
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flask>=2.0.0
Requires-Dist: requests>=2.25.0
Requires-Dist: packaging>=20.0
Requires-Dist: asgiref>=3.4.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"
Requires-Dist: flake8>=4.0.0; extra == "dev"
Provides-Extra: server
Requires-Dist: flask-sqlalchemy>=2.5.0; extra == "server"
Requires-Dist: flask-migrate>=3.0.0; extra == "server"
Requires-Dist: flask-login>=0.5.0; extra == "server"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# MLflow Plugin Manager

![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)

Welcome to the MLflow Plugin Manager, inspired by wbond's package manager for Sublime Text. This tool seamlessly integrates with MLflow, allowing you to install, update, and uninstall MLflow plugins directly from the MLflow web interface.

## Features
- 🛠 **Install** new MLflow plugins with ease.
- 🔄 **Update** existing plugins to their latest versions.
- 🗑 **Uninstall** plugins you no longer need.
- 🌐 Direct integration into the MLflow web interface.

Preview
![preview functionality](https://github.com/thijsdezoete/mlflow-plugin-manager/blob/master/media/mlflow-plugin.gif?raw=true)

## Installation

Clone this repository:
```bash
git clone git@github.com:thijsdezoete/mlflow-plugin-manager.git
```

Navigate to the cloned directory and install the package:

```bash
cd mlflow-plugin-manager
pip install -e .
```

# Usage

To run the MLflow server with the Plugin Manager, use the following command:

```bash
mlflow server --app-name plugin_manager
```

Once the server is running, navigate to the MLflow web interface. You'll find the Plugin Manager integrated and ready for use at:

http://localhost:5000/plugin-manager/

## Configuration

### Environment Variables

- `PLUGIN_SERVER_URL`: URL of the plugin metadata server
  - **Default**: `https://api.mlflowplugins.com` (production)
  - **Local Development**: Set to `http://localhost:5001` if running your own server
  
Example for local development:
```bash
export PLUGIN_SERVER_URL="http://localhost:5001"
mlflow server --app-name plugin_manager
```

## Architecture

The MLflow Plugin Manager consists of two components:

1. **MLflow Plugin** (this package): Integrates with MLflow's web interface and handles package installation locally via pip
2. **Metadata Server**: Provides plugin information (hosted at api.mlflowplugins.com)

**Important**: Package installation happens locally on your machine. The remote server only provides plugin metadata (available packages, versions, etc.).

## For Server Maintainers Only

If you're maintaining your own plugin metadata server:

```bash
cd server
python reindex_plugins.py  # Index packages from PyPI
python app.py              # Run metadata server on port 5001
```

End users don't need to run these commands - the default configuration uses api.mlflowplugins.com.

# License

This project is licensed under the MIT License. Refer to the LICENSE file for more details.


