Skip to content

zenml

v0.94.5 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’

✓ No known CVEs patched in this version

Topics

agentops agents ai automl data-science machine-learning
+12 more
devops-tools genai llm llmops metadata-tracking mlops pipelines production-ready pytorch tensorflow workflow zenml

Affected surfaces

auth

ReleasePort's take

Light signal
editorial:auto 5d

ZenMLβ€―0.94.5 adds real‑time event streaming for pipeline runs and a new statistics endpoint, improves observability with structured logging and OpenTelemetry support, and fixes several bugs including user account activation and GCP Cloud Run deployment timeouts.

Why it matters: Provides immediate operational visibility (streaming + stats) and reliability improvements; critical bugfixes resolve indefinite run states and account management failures in deployments using ZenML server.

Summary

AI summary

Broad release touches 🎨 Dashboard Improvements, πŸ› οΈ Enhanced Developer Experience, https://github.com/zenml-io/zenml/pull/4804, and SSE.

Changes in this release

Feature Medium

Adds POST `/api/v1/runs/statistics` endpoint for aggregated pipeline run metrics.

Adds POST `/api/v1/runs/statistics` endpoint for aggregated pipeline run metrics.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Feature Medium

Enhances Weights & Biases integration to auto‑add ZenML metadata and record identifiers bidirectionally.

Enhances Weights & Biases integration to auto‑add ZenML metadata and record identifiers bidirectionally.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Feature Medium

Adds agentic human‑in‑the‑loop pipeline example demonstrating dynamic planning, approval gates, and lineage tracking.

Adds agentic human‑in‑the‑loop pipeline example demonstrating dynamic planning, approval gates, and lineage tracking.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Feature Medium

Introduces structured logging and OpenTelemetry instrumentation for ZenML server.

Introduces structured logging and OpenTelemetry instrumentation for ZenML server.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Feature Medium

Adds support for standard OpenTelemetry environment variables to configure ZenML server OTel settings.

Adds support for standard OpenTelemetry environment variables to configure ZenML server OTel settings.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Feature Medium

Adds real-time event streaming for pipeline runs via `zenml.streaming.publish()`.

Adds real-time event streaming for pipeline runs via `zenml.streaming.publish()`.

Source: llm_adapter@2026-05-29

Confidence: low

β€”
Feature Low

Enables real-time event streaming from pipelines using `zenml.streaming.publish()`.

Enables real-time event streaming from pipelines using `zenml.streaming.publish()`.

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Feature Low

Allows mounting a build cache during Docker image building for faster Python package installations.

Allows mounting a build cache during Docker image building for faster Python package installations.

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Feature Low

Supports string type annotations in step and pipeline definitions using quotes or `from __future__ import annotations`.

Supports string type annotations in step and pipeline definitions using quotes or `from __future__ import annotations`.

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Feature Low

Improves interactive wait condition input to accept raw strings without requiring quotes.

Improves interactive wait condition input to accept raw strings without requiring quotes.

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Feature Low

Adds configuration option `ZENML_CONSOLE_LOGGING_FORMAT` to control console output format (console, json, text).

Adds configuration option `ZENML_CONSOLE_LOGGING_FORMAT` to control console output format (console, json, text).

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Bugfix Medium

Handles keyboard interrupts during active wait conditions more gracefully, avoiding unclear error messages when server stops.

Handles keyboard interrupts during active wait conditions more gracefully, avoiding unclear error messages when server stops.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Bugfix Medium

Corrects copy‑paste bug in user update endpoint that prevented activation/deactivation of accounts.

Corrects copy‑paste bug in user update endpoint that prevented activation/deactivation of accounts.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Bugfix Medium

Fixes GCP Cloud Run deployer timeout for internal/authenticated services.

Fixes GCP Cloud Run deployer timeout for internal/authenticated services.

Source: llm_adapter@2026-05-29

Confidence: high

β€”
Bugfix Medium

Fails pipeline runs when user pipeline function cannot be imported, preventing indefinite `running` state.

Fails pipeline runs when user pipeline function cannot be imported, preventing indefinite `running` state.

Source: llm_adapter@2026-05-29

Confidence: low

β€”
Refactor Low

Deprecates `ZENML_LOGGING_FORMAT` in favor of `ZENML_CONSOLE_LOGGING_FORMAT` for console log formatting.

Deprecates `ZENML_LOGGING_FORMAT` in favor of `ZENML_CONSOLE_LOGGING_FORMAT` for console log formatting.

Source: granite4.1:30b@2026-05-29-audit

Confidence: low

β€”
Full changelog

πŸš€ Live Event Streaming for Pipeline Runs

You can now stream custom events in real-time from your running pipelines! Call zenml.streaming.publish() from inside any step or dynamic pipeline to push events that can be consumed via Server-Sent Events (SSE). Enable this feature by setting stream_broker_implementation_source in your server configuration. The initial implementation includes a Redis-based broker with automatic catch-up, gap signaling, and idle cleanup. PR #4804

πŸ“Š Pipeline Run Statistics Endpoint

A new POST /api/v1/runs/statistics endpoint lets you query aggregated metrics across your pipeline runs. Group by status, pipeline, stack, user, time buckets (hour/day/week/month), metadata values, tags, and more. Calculate averages, sums, min/max over duration, step counts, cached steps, output artifacts, or custom numeric metadata. Perfect for building dashboards and analytics. PR #4860

🎯 Richer Weights & Biases Integration

The W&B experiment tracker now automatically adds ZenML pipeline and step metadata to your W&B runs, groups runs by pipeline execution, and records W&B identifiers back to ZenML step metadata. You can now configure custom groups, job types, run configs, explicit or deterministic run IDs, resume behavior, and pass through additional wandb.init kwargs for complete control over your experiment tracking. PR #4838

πŸ€– Agentic Human-in-the-Loop Pipeline Example

A new example demonstrates building dynamic agentic pipelines with human approval gates. The example shows how to plan agent tasks, fan them out with step.map(), summarize results, pause execution with zenml.wait() for human review, and branch the final action based on the decision. Includes clean lineage tracking with Annotated step outputs. PR #4849

πŸ“ Structured Logging and OpenTelemetry Instrumentation

The ZenML server now supports structured logging with OpenTelemetry instrumentation. Configure console output with the new ZENML_CONSOLE_LOGGING_FORMAT environment variable, choosing between console, json, or text formats. Server logs use a clean structured layout with timestamps, levels, logger context, and optional JSON fields. PR #4781

πŸ› οΈ Enhanced Developer Experience

  • String Type Annotations: Step and pipeline definitions now support string annotations, either explicitly quoted or via from __future__ import annotations. PR #4843
  • Build Cache Mounting: Python package installations during Docker image building can now mount a build cache for faster builds. PR #4820
  • Improved Wait Condition Input: When resolving wait conditions interactively with string schemas, you can now input raw strings without quotesβ€”ZenML detects and handles this automatically. PR #4845
  • Better Logging Control: Restored custom console log formatting for non-DEBUG output, added step-name prefixes in terminal output during execution (disable with ZENML_DISABLE_STEP_NAMES_IN_LOGS=true), and kept stored logs clean and unformatted. The ZENML_LOGGING_FORMAT variable is now deprecated in favor of ZENML_CONSOLE_LOGGING_FORMAT. PR #4851

🎨 Dashboard Improvements

  • Improved scrolling behavior for the pipeline timeline view. PR #1053
Fixed
  • Pipeline runs now properly fail when the user pipeline function cannot be imported (e.g., due to missing packages), instead of staying in a running state indefinitely. PR #4832
  • Keyboard interrupts during active wait conditions are now handled more gracefully, preventing unclear error messages when the server transitions to STOPPED status. PR #4835
  • Fixed a copy-paste bug in the user update endpoint where admins couldn't activate or deactivate user accountsβ€”the code was incorrectly writing is_admin instead of active to the safe update object. PR #4839

What's Changed

  • Add version 0.94.3 to legacy docs by @github-actions[bot] in https://github.com/zenml-io/zenml/pull/4828
  • Document the organization trusted domain feature by @stefannica in https://github.com/zenml-io/zenml/pull/4819
  • Add 0.94.4 to the migration tests by @github-actions[bot] in https://github.com/zenml-io/zenml/pull/4829
  • Add option to mount build cache during python package installation by @schustmi in https://github.com/zenml-io/zenml/pull/4820
  • Fix CLI page info formatting by @strickvl in https://github.com/zenml-io/zenml/pull/4834
  • Fail a pipeline run if failing to import the user pipeline function by @schustmi in https://github.com/zenml-io/zenml/pull/4832
  • Only run DB backup/restore tests on local code version by @schustmi in https://github.com/zenml-io/zenml/pull/4831
  • Improved keyboard interrupt handling in active wait conditions by @schustmi in https://github.com/zenml-io/zenml/pull/4835
  • Bump the minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/zenml-io/zenml/pull/4847
  • Support string type annotations by @schustmi in https://github.com/zenml-io/zenml/pull/4843
  • Add agentic human-in-the-loop pipeline example by @htahir1 in https://github.com/zenml-io/zenml/pull/4849
  • Better string parsing during interactive wait condition resolving by @schustmi in https://github.com/zenml-io/zenml/pull/4845
  • Fix CLI tests in CI by @schustmi in https://github.com/zenml-io/zenml/pull/4850
  • Fixes for the logging env variables by @bcdurak in https://github.com/zenml-io/zenml/pull/4851
  • Fix GCP Cloud Run deployer timeout for internal/authenticated services by @safoinme in https://github.com/zenml-io/zenml/pull/4700
  • Structured logs and OTel Instrumentation for ZenML Server by @amitvikramraj in https://github.com/zenml-io/zenml/pull/4781
  • made shutdown_otel function idempotent and added support for individually enabling otel signals by @amitvikramraj in https://github.com/zenml-io/zenml/pull/4857
  • Bump actions/github-script from 8.0.0 to 9.0.0 by @dependabot[bot] in https://github.com/zenml-io/zenml/pull/4750
  • Allow streaming events while running a pipeline by @schustmi in https://github.com/zenml-io/zenml/pull/4804
  • fix: scoped sqlalchemy otel instrumentation to server sql engine by @amitvikramraj in https://github.com/zenml-io/zenml/pull/4858
  • fix(users): correct copy-paste bug in active status update by @sebastiondev in https://github.com/zenml-io/zenml/pull/4839
  • feat: supporting standard OTel env vars for zenml-server OTel configuration by @amitvikramraj in https://github.com/zenml-io/zenml/pull/4861
  • Richer WanDB integration by @Json-Andriopoulos in https://github.com/zenml-io/zenml/pull/4838
  • Run statistics endpoint by @schustmi in https://github.com/zenml-io/zenml/pull/4860
  • Prepare release 0.94.5 by @github-actions[bot] in https://github.com/zenml-io/zenml/pull/4871

New Contributors

  • @sebastiondev made their first contribution in https://github.com/zenml-io/zenml/pull/4839

Full Changelog: https://github.com/zenml-io/zenml/compare/0.94.4...0.94.5

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track zenml

Get notified when new releases ship.

Sign up free

About zenml

ZenML : One AI Platform from Pipelines to Agents. https://zenml.io.

All releases β†’

Related context

Beta — feedback welcome: [email protected]