This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
ReleasePort's take
Light signalZenMLβ―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 summaryBroad release touches π¨ Dashboard Improvements, π οΈ Enhanced Developer Experience, https://github.com/zenml-io/zenml/pull/4804, and SSE.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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. TheZENML_LOGGING_FORMATvariable is now deprecated in favor ofZENML_CONSOLE_LOGGING_FORMAT. PR #4851
π¨ Dashboard Improvements
- Improved scrolling behavior for the pipeline timeline view. PR #1053
- Pipeline runs now properly fail when the user pipeline function cannot be imported (e.g., due to missing packages), instead of staying in a
runningstate indefinitely. PR #4832 - Keyboard interrupts during active wait conditions are now handled more gracefully, preventing unclear error messages when the server transitions to
STOPPEDstatus. 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_admininstead ofactiveto 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
Related context
Related tools
Beta — feedback welcome: [email protected]