Open Source

Most of my open-source work orbits MLflow and Amazon SageMaker, because that’s where my customers’ problems live. A recurring theme: the hard part of ML in production is rarely the model. It’s versioning, authentication, and the seams between tools. When I hit one of those seams often enough, I fix it upstream.

My MLflow thread

MLflow shows up everywhere in my work, so it deserves its own narrative. It started with a customer problem: open-source MLflow had no access control, and enterprises needed it. I built the fix on AWS-native services — and when the client side needed to sign requests, I contributed AWS SigV4 authentication to MLflow itself. That field experience — POCs, blog posts, the upstream contribution — led to design discussions with the AWS service team during the development of managed MLflow on Amazon SageMaker AI, where I brought the customer perspective from running MLflow on AWS in production. The SigV4 work also led to the sagemaker-mlflow plugin, which today handles authentication in managed MLflow using the same approach.

Since then the thread has continued: network isolation for managed MLflow with AWS PrivateLink, tracking LLM evaluations in MLflow with FMEval, end-to-end data lineage with DVC and MLflow, three patterns for deploying MLflow models to SageMaker endpoints, and a second merged MLflow PR unblocking container builds in SageMaker JupyterLab. Every piece follows the same rule: hit the seam in the field, fix it upstream, write it down.

Contributions

mlflow/mlflow

Added AWS SigV4 request signing to the MLflow client via MLFLOW_TRACKING_AWS_SIGV4, enabling MLflow tracking servers to sit behind Amazon API Gateway with IAM authentication.

Pull Request
mlflow/mlflow

Unblocked mlflow sagemaker build-and-push-container in SageMaker JupyterLab: added a --network flag for the restricted sagemaker network, plus a Docker CLI fallback for environments where the Python SDK can't reach the proxy socket.

Pull Request
aws/sagemaker-python-sdk

Added an example notebook demonstrating Inference Pipelines in SageMaker V3, using ModelBuilder and the new sagemaker.core components.

Pull Request

Workshops

Two public workshops I authored or co-authored, run by AWS field teams worldwide and delivered to thousands of customers.

aws-samples/amazon-sagemaker-from-idea-to-production

MLOps from idea to production in six steps — from a notebook to a fully automated CI/CD pipeline, one step at a time.

Author
aws-samples/amazon-sagemaker-immersion-day

Amazon SageMaker Immersion Day — a hands-on introduction to the SageMaker ML lifecycle, from data preparation to deployment.

Co-author

Current Project: Agentic Developer Portal

My main project right now re-imagines the developer portal: instead of clicking through forms, developers describe their application and an agent bootstraps the infrastructure across AWS accounts according to codified best practices. It’s built on Strands Agents SOPs — machine-readable runbooks with RFC 2119 keywords, parameterized inputs, and progress tracking. The reference implementation takes a web application from description to production across three AWS accounts (~150 resources, 6 Terraform modules) in under an hour, with a human reviewing the plan and gating production.

strands-agents/agent-sop

The open-source framework the project builds on: Standard Operating Procedures as machine-readable runbooks that agents can execute with human oversight. See the talk for the architecture and a walkthrough of the reference implementation.

Built on

Companion Code

Runnable code behind my blog posts. Each repository stands on its own: clone it, run the notebooks, keep what’s useful.

pdifranc/mlflow-deploy-on-sagemaker-hosting

Three ways to deploy an MLflow model to a SageMaker AI endpoint, demonstrated with the same scikit-learn model so the only variable is the deployment mechanism. Companion to this post.

Author
aws-samples/sample-amazon-sagemaker-mlflow-dvc-lineage

End-to-end lineage with DVC and MLflow on SageMaker AI: dataset-level lineage via Git commit hashes, and record-level lineage for regulated environments. Companion to this post.

Author
aws-samples/sagemaker-custom-project-templates

S3-based templates for SageMaker AI Projects: one-click provisioning of a ModelOps environment integrated with GitHub Actions, without a Service Catalog. Companion to this post.

Contributor
aws-samples/track-fmeval-evaluation-using-mlflow

Programmatic LLM evaluation with FMEval, tracked and compared in SageMaker managed MLflow — accuracy, toxicity, fairness, and robustness as first-class experiment data. Companion to this post.

Author
aws-samples/sagemaker-mlflow-private

SageMaker Studio in a private VPC with no internet access, connected to managed MLflow over AWS PrivateLink — CDK stack with CodeArtifact as private PyPI and end-to-end experimentation via the @remote decorator. Companion to this post.

Co-author
aws-samples/sagemaker-studio-mlflow-integration

Open-source MLflow on serverless AWS with real access control: IAM for SageMaker jobs and Studio users, Amazon Cognito for the UI, and the MLflow UI embedded in Studio. Companion to this post.

Author
aws-samples/sagemaker-experiments-and-pipelines

Automatic experiment tracking inside SageMaker Pipelines: organize, track, and visualize every pipeline execution as an experiment. Companion to this post.

Author
aws-samples/amazon-sagemaker-experiments-dvc-demo

Data Version Control alongside SageMaker Experiments: track data and code changes together with experiment metrics for reproducible ML workflows. Companion to this post.

Author