Skip to main content
MLflow

Pulumi MLflow Provider

Manage MLflow experiments, model registry and access control as code.

Build Integration npm PyPI Go Reference License

A native Pulumi provider for MLflow. It manages the declarative parts of an MLflow estate — experiments, the model registry (registered models, versions, aliases) and access control (users and permissions) — through the MLflow REST API, so they can be reviewed and rolled out like the rest of your infrastructure.

  • 🧪 Experiments — declare experiments, artifact locations and tags.
  • 📦 Model Registry — registered models, immutable model versions, and mutable deployment aliases.
  • 🔐 Access control — users and per-experiment / per-model permissions (with the mlflow.server.auth app).
  • 🔁 MLflow 2.x and 3.x — one code path; the provider detects the server version at runtime.
  • 🌐 Multi-language — TypeScript/JavaScript, Python, and Go (.NET and Java planned).

Status — v0.1.0. First release covering the stable tracking + registry + auth surface. The API may still change on minor releases while it stabilizes. MLflow 3.x-only modules (LoggedModel, Prompt, AI Gateway, Webhooks) are on the roadmap.

Contents

Installation

# TypeScript / JavaScript
npm install @baubap/mlflow

# Python
pip install baubap-mlflow

# Go
go get github.com/Baubap/pulumi-mlflow/sdk/go/mlflow

The plugin binary is resolved from GitHub Releases via pluginDownloadURL github://api.github.com/Baubap/pulumi-mlflow, so pulumi plugin install and SDK auto-install work out of the box.

Configuration

Config key Env var Secret Description
mlflow:trackingUri MLFLOW_TRACKING_URI Base URL of the tracking server.
mlflow:token MLFLOW_TRACKING_TOKEN ✅ Bearer token (takes precedence over basic auth).
mlflow:username MLFLOW_TRACKING_USERNAME Username for HTTP basic auth.
mlflow:password MLFLOW_TRACKING_PASSWORD ✅ Password for HTTP basic auth.
mlflow:insecureSkipVerify Skip TLS verification (not recommended).
pulumi config set mlflow:trackingUri https://mlflow.internal.example.com
pulumi config set mlflow:token <token> --secret

Quick start

import * as mlflow from "@baubap/mlflow";

const experiment = new mlflow.Experiment("demo", {
    name: "fraud-detection",
    tags: { team: "foundations" },
});

const model = new mlflow.registry.RegisteredModel("fraud", {
    name: "fraud-detector",
    description: "Gradient-boosted fraud model",
});

const v1 = new mlflow.registry.ModelVersion("fraud-v1", {
    name: model.name,
    source: "s3://models/fraud/1",
});

// Point deployments at a mutable alias instead of a deprecated stage.
new mlflow.registry.RegisteredModelAlias("champion", {
    modelName: model.name,
    alias: "champion",
    version: v1.version,
});
import baubap_mlflow as mlflow

experiment = mlflow.Experiment("demo", name="fraud-detection", tags={"team": "foundations"})
model = mlflow.registry.RegisteredModel("fraud", name="fraud-detector",
                                        description="Gradient-boosted fraud model")
v1 = mlflow.registry.ModelVersion("fraud-v1", name=model.name, source="s3://models/fraud/1")
mlflow.registry.RegisteredModelAlias("champion", model_name=model.name, alias="champion", version=v1.version)

Resources & functions

Module Resources Functions (data sources)
index (tracking) Experiment getExperiment, getExperimentByName, searchExperiments
registry RegisteredModel, ModelVersion, RegisteredModelAlias getRegisteredModel, searchRegisteredModels, getLatestVersions, getModelVersion, searchModelVersions, getModelVersionByAlias, getModelVersionDownloadUri
auth¹ User, ExperimentPermission, RegisteredModelPermission getUser, getExperimentPermission, getRegisteredModelPermission

¹ The auth resources require the tracking server to run with the mlflow.server.auth app enabled.

Every resource supports pulumi import. See the per-resource Import sections in the registry docs once published.

MLflow version support

The declarative REST surface is identical across MLflow 2.x and 3.x, so the same program works against either. The provider version is independent of the MLflow version — MLflow compatibility is documented and handled at runtime (via GET /version), not encoded in the provider's semver. Model-version stages are deprecated in MLflow 3; use RegisteredModelAlias instead.

Development

See CONTRIBUTING.md for the full development workflow, project layout, conventions, and how to add resources, functions, and docs.

make provider          # build the plugin binary into ./bin
make generate_schema   # regenerate provider/cmd/pulumi-resource-mlflow/schema.json
make generate_nodejs generate_python generate_go   # generate the SDKs into ./sdk

Testing

make test_provider     # hermetic unit tests (no server needed)

# End-to-end against a real MLflow server (Docker):
make mlflow-up && make test_e2e && make mlflow-down

# Sweep the e2e suite across MLflow versions:
make test_matrix MLFLOW_TAGS="v2.16.2 v3.1.0"

The e2e suite (provider/e2e, build tag e2e) drives the full resource lifecycle through the provider's in-process server against real MLflow 2.x/3.x servers — see integration.yml. It is parametrizable over multiple servers via MLFLOW_TRACKING_URIS.

Publishing

Tagging vX.Y.Z triggers release.yml: GoReleaser builds the multi-arch plugin and creates the GitHub Release, then the SDKs are published to npm and PyPI (Go via a module tag). Listing on the public Pulumi Registry is a one-time PR to pulumi/registry — see docs/registry-submission.md.

Roadmap

  • v0.2.0+ — MLflow 3.x-only modules behind version gating: Webhook, LoggedModel/Scorer/EvaluationDataset, Prompt/PromptAlias, and the AI Gateway (endpoints, model definitions, secrets, budgets, guardrails).
  • Additional language SDKs: .NET and Java.

License

Apache-2.0.

Metadata

Release files for baubap-mlflow 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for baubap-mlflow 0.1.1
File Size Uploaded Provenance
baubap_mlflow-0.1.1.tar.gz 26.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for baubap-mlflow 0.1.1
File Interpreter ABI Platform
baubap_mlflow-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 77.4 kB

Release files / baubap_mlflow-0.1.1.tar.gz

Download URL baubap_mlflow-0.1.1.tar.gz
Size 26.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4c9a09a7d432102413b7982025ed96a075f1efa0afd3385b2e70dff5e637183f
BLAKE2b-256 checksum
How to use checksums
d77b0869a75c5a372e56da88f91288fb1a4753b4e74e6c4f5bef23cc5e584068
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / baubap_mlflow-0.1.1-py3-none-any.whl

Download URL baubap_mlflow-0.1.1-py3-none-any.whl
Size 50.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29f9bd2f963cdf083e5f3895231fe31d204f6b5c5c8a151def35d3c1233129e9
BLAKE2b-256 checksum
How to use checksums
251040e5c8d28f1bb7ef42c66d2d9d184547d87af4868758a6aa422c999c468d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Security for baubap-mlflow 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for baubap_mlflow-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page