MLOps Tools · Open-source stack

Open-Source MLOps Tools: A Practical Production Stack

An open-source stack gives you full data control and zero license cost, but you own installation, upgrades, secrets, backup and disaster recovery for every component. This page maps the ownership layers, the operational burden, the failure modes in a composable stack, and the triggers that justify moving to Kubernetes or a managed platform.

Documented from official sources

Direct answer

An open-source MLOps stack is a set of self-hosted tools where you own installation, upgrades, secrets, backup and disaster recovery. The smallest practical stack covers data versioning, experiment tracking, pipeline orchestration, model serving and drift monitoring. License cost is zero, but engineering cost is not: every component you adopt is a system you must operate, secure and upgrade. Choose open source when data control, air-gapped operation or custom integration outweigh the operational burden.

What an open-source MLOps stack must cover

A self-hosted open-source stack must cover the same five responsibilities as any production stack: data versioning, experiment tracking, pipeline orchestration, model serving and monitoring. The difference is not the responsibilities but who owns them — you do, for every component.

Coverage is not the same as adoption. A stack that tracks experiments but never registers a model, or serves a model but never monitors drift, has gaps that become incidents. The stack must cover the full loop, including a tested rollback path, before it is called production.

Smallest practical self-hosted stack

The smallest practical self-hosted stack is DVC for data versioning, MLflow for tracking and registry, one orchestrator (Kubeflow Pipelines, Airflow, Dagster or Prefect), Ray Serve or a containerised serving process, and Evidently for drift. Five components, five owners, five typed handoffs.

Smaller than five means one component owns two stages. MLflow is not an orchestrator; Evidently is not a serving runtime. Collapsing stages into one tool removes the failure boundary that contains incidents.

Reference production architecture

The reference architecture runs each component on a single cluster with shared object storage. DVC pointers live in the data registry; MLflow stores runs and registry aliases in a Postgres backend with artefacts in object storage; the orchestrator executes pipeline steps as containers; Ray Serve loads the artefact behind an MLflow alias; Evidently reads prediction logs and reference data to compute drift.

Every handoff is a typed artefact: a dataset version, an MLflow run ID, a registered model alias, a container digest, a metrics export. No handoff depends on a human copying a file. This is the architecture documented in the School of Core AI reference implementation.

What each component owns

Each row states the layer, the owning tool, its responsibility and its external dependencies.

What each component owns
LayerOwning toolResponsibilityExternal dependencies
Data versioningDVCPin dataset versions tied to code commits for reproducible training.Object storage for data, Git for pointers.
Experiment tracking and registryMLflowRecord runs, parameters, metrics and artefacts; own model versions and aliases.Postgres backend, object storage for artefacts.
Pipeline orchestrationKubeflow Pipelines (or Airflow, Dagster, Prefect)Schedule, retry and track pipeline steps; own DAG state and artefact lineage.Kubernetes or a worker runtime, object storage for step outputs.
Model servingRay ServeLoad the artefact, handle requests, batch, autoscale and manage traffic.Model artefact from MLflow alias, compute for inference.
MonitoringEvidentlyDetect data-quality issues, feature drift and prediction drift.Reference data, prediction logs, scheduled compute.

Artifact and metadata handoffs

The stack stays composable because every handoff is a typed artefact rather than an ad-hoc file. DVC passes a dataset pointer; MLflow passes a run ID and a registered model alias; the orchestrator passes step outputs through a pipeline root in object storage; serving loads the artefact behind the alias; monitoring consumes prediction logs and reference data.

When a handoff is untyped — a hardcoded path, a manual copy — the stack stops being composable and starts being brittle. The first sign is that an upgrade to one component breaks another. Typed handoffs are the contract that makes each component replaceable.

When Kubernetes is justified

Kubernetes is justified when you need multi-tenant scheduling, GPU sharing across teams, or declarative rollouts with KServe. It is not justified by tool popularity or by the presence of Kubeflow in the stack — Kubeflow Pipelines can run on a single cluster without a full Kubernetes platform team.

The trigger is operational: when ad-hoc deployment, manual retries and single-tenant resource allocation cost more than a Kubernetes control plane, move the orchestrator and serving layers to Kubernetes. Before that point, Kubernetes adds burden without leverage.

Authentication, secrets and network boundaries

Self-hosting means you own authentication and secrets. MLflow and the orchestrator need their own auth and RBAC; cloud object storage needs scoped credentials; serving needs request auth; monitoring needs read access to prediction logs. None of these come from the open-source license.

The network boundary is the trust boundary. In an air-gapped deployment, every component runs without outbound internet, which rules out managed dependencies and telemetry. Design the secret and network model before adopting components, not after the first incident.

Backup, upgrade and disaster-recovery ownership

In a self-hosted stack, the operator owns backup, upgrade and disaster recovery for every component. The MLflow Postgres backend, the object storage artefacts, the orchestrator's run history and the serving configuration all need tested backup and restore procedures.

Upgrade is the hidden cost. Each component releases on its own cadence, and an upgrade to one can break the handoff to another. A managed platform offloads this; a self-hosted stack does not. Budget for upgrade testing as a recurring platform task, not a one-off.

Engineering cost beyond license cost

License cost is zero; these are the recurring tasks the operator owns.

Engineering cost beyond license cost
TaskResponsibilityFrequencyComplexityNotes
Installation and configurationDeploy each component with correct backends, storage and networking.Initial plus per-upgradeMediumDoubles when Kubernetes is introduced.
Upgrades and compatibility testingUpgrade each component and verify handoffs still work.Monthly to quarterlyHighEach component releases on its own cadence.
Backup and restore testingBack up databases and artefact stores and test restore.Continuous backup, quarterly restore testMediumUntested backups are not backups.
Secrets and certificate rotationRotate credentials and TLS certificates across components.QuarterlyMediumOften forgotten until a certificate expires.
On-call and incident responseRespond to component outages and handoff failures.On-demandHighRequires runbooks for each component.

Scale-up and replacement triggers

A self-hosted stack earns its keep until one of three triggers fires. Multi-tenant scheduling or GPU sharing outgrows ad-hoc deployment, which points to Kubernetes. The platform team's capacity falls below the operational burden, which points to a managed platform. A data-residency or cost constraint makes one stage cheaper to buy than to operate, which points to hybrid.

Replacement, not addition, is the healthy response. When a trigger fires, replace the one component that no longer fits and keep the typed handoffs so the rest of the stack stays intact. Adding a sixth tool to mask a broken handoff compounds the problem.

Failure modes in a composable stack

Common failures, their signals, likely causes, containment and recovery.

Failure modes in a composable stack
FailureSignalLikely causeContainmentRecoveryEvidence
Tracking database loses run historyMLflow UI returns missing runs or stale metrics.Postgres backend not backed up, or storage corruption.Tracking is read-mostly; serving uses the last promoted alias.Restore database from backup; re-register artefacts from object storage.MLflow deployment docs note operator-owned backup.
Orchestrator step cannot find artefactPipeline step fails with missing-input error.Untyped handoff or changed artefact path after upgrade.Retry the step; isolate to the failing stage.Restore typed handoff contract; re-run from failed step.KFP artefact-passing docs describe pipeline-root contracts.
Serving loads wrong model versionPrediction distribution shifts after deployment.Alias pointed at unreviewed version, or manual override.Roll back alias to previous champion.Restore alias; add promotion gate to registry workflow.MLflow registry docs describe alias-based promotion.
Monitoring misses driftPerformance degrades without an alert.Reference data stale, or drift thresholds too loose.Manual review of prediction logs.Refresh reference data; recalibrate thresholds.Evidently docs describe reference-data requirements.
Upgrade breaks handoffComponent A works, component B fails after A's upgrade.Untyped handoff depended on an internal detail.Roll back the upgrade.Restore typed handoff; test upgrades in a staging stack first.Recurring integration pattern in composable stacks.

Reference implementation and project evidence

The reference implementation wires DVC, MLflow, Kubeflow Pipelines, Ray Serve and Evidently into one reproducible pipeline on a shared cluster, with each handoff typed and each component replaceable. The end-to-end project demonstrates the loop from versioned data to rollback on a real workload.

The implementation documents the integration contracts and the operational tasks the team owns. It is not a benchmark; it is a working stack that survived upgrade, backup and rollback testing.

Sources and last verification

Component capabilities are grounded in official documentation for MLflow, Kubeflow Pipelines, Ray Serve and Evidently, plus the School of Core AI reference architecture and end-to-end project.

Limitations

  • The stack is a reference architecture, not a runtime benchmark.
  • Operational burden estimates are directional and depend on team size and infrastructure.
  • Upgrade compatibility claims are patterns, not guarantees for every release.

Re-verification cadence: 2026-11-21

Sources and last verification

Every claim is linked to a source. Sources are re-verified on a cadence. See the note on limitations and re-verification cadence at the end of the page.

  1. 01Tier 1MLflow

    MLflow Documentation (latest)

    Version: 2.16+

    Official documentation for MLflow tracking, registry, deployment and API.

    Supports claims:

    • MLflow tracking data model
    • MLflow model registry lifecycle
    • MLflow self-hosting deployment

    Last verified:

    View source →
  2. 02Tier 1MLflow

    MLflow GitHub Repository — LICENSE

    Version: latest

    Repository LICENSE file confirms Apache License 2.0.

    Supports claims:

    • MLflow Apache 2.0 license

    Last verified:

    View source →
  3. 03Tier 1Kubeflow

    Kubeflow Pipelines Documentation

    Version: 2.0+

    Official KFP documentation.

    Supports claims:

    • KFP pipeline concept
    • KFP artifact passing
    • KFP caching
    • KFP installation

    Last verified:

    View source →
  4. 04Tier 1Kubeflow

    Kubeflow Pipelines GitHub Repository — LICENSE

    Version: latest

    Repository LICENSE confirms Apache 2.0.

    Supports claims:

    • KFP Apache 2.0 license

    Last verified:

    View source →
  5. 05Tier 1Ray

    Ray Serve Documentation

    Version: 2.30+

    Official Ray Serve documentation.

    Supports claims:

    • Ray Serve deployment model
    • Ray Serve autoscaling
    • Ray Serve composition

    Last verified:

    View source →
  6. 06Tier 1Ray

    Ray GitHub Repository — LICENSE

    Version: latest

    Repository LICENSE confirms Apache 2.0.

    Supports claims:

    • Ray Apache 2.0 license

    Last verified:

    View source →
  7. 07Tier 1Evidently AI

    Evidently Documentation — Introduction

    Version: 0.7+

    Official Evidently documentation.

    Supports claims:

    • Evidently drift detection
    • Evidently data quality checks
    • Evidently report/test presets

    Last verified:

    View source →
  8. 08Tier 1Evidently AI

    Evidently GitHub Repository — LICENSE

    Version: latest

    Open source is Apache 2.0; Evidently Cloud is proprietary.

    Supports claims:

    • Evidently Apache 2.0 (open source), Evidently Cloud proprietary

    Last verified:

    View source →
  9. 09Tier 4School of Core AI

    Practical MLOps Architecture — Reference Implementation

    Version: August 2026

    First-party reference implementation documenting tool integration in the SCAI MLOps architecture.

    Supports claims:

    • SCAI reference MLOps architecture
    • MLflow + Kubeflow + Ray + KServe integration

    Last verified:

    View source →
  10. 10Tier 4School of Core AI

    End-to-End MLOps Project

    Version: August 2026

    Cluster 2 project proof.

    Supports claims:

    • End-to-end MLOps project proof
    • AWS SageMaker capstone

    Last verified:

    View source →

Build this stack yourself in the guided MLOps program

The open-source stack is straightforward to describe and hard to wire correctly. The guided MLOps program walks you through connecting DVC, MLflow, Kubeflow Pipelines, Ray Serve and Evidently in one graded end-to-end pipeline, with the upgrade, backup and rollback steps that make it production-ready.

#open-source-mlops-stack