Flyte 2 general availability, an org-level LLM Gateway, end-to-end artifacts with lineage, and tracked local runs.

August 2026

🚀 Flyte 2 Is Generally Available

Flyte 2 is generally available. The SDK README and documentation are updated for the GA release.

🤖 LLM Gateway

An org-level gateway gives your teams one OpenAI-compatible endpoint for every model provider they use, so application code targets a single base URL.

  • The gateway issues managed virtual keys as its credential.
  • It supports provider fallback, budgets, rate limits, and per-key and per-provider usage reporting.
  • You set the expected requests per second, and Union sizes and autoscales the proxy for you.
  • You choose whether the endpoint accepts requests without Union sign-in, at deploy time or from the gateway’s configuration card.
  • Role-based access control governs gateway administration.

📦 Artifacts, End to End

A task that declares produces_artifacts now registers its outputs as versioned artifacts when the run completes. Artifact triggers fire a run when a new version is published, including artifacts published from outside the platform.

  • Lineage graph. On an artifact’s details page, an interactive graph shows the run that produced it and everything downstream: the triggers watching it (expand one to see the runs it fired) and the apps consuming it.
  • Apps tab. Lists the exact artifact version each app was deployed against.
  • Filters. The artifacts list filters by metadata and creator. Filters are kept in the URL, so you can share or bookmark a view.
  • Prefetched models. A prefetched model is published as an artifact that apps can consume.

See Artifacts, Artifact triggers, and Lineage.

💻 Tracked Local Runs

flyte run --tracked reports a run executing on your own machine to the platform: live phases, inputs, outputs, and reports.

A Tracked Runs page in the Console lists and live-streams these runs with the same details experience as platform runs. You can abort a tracked run from the Console, though this cannot stop the process running on your machine.

Per-organization limits apply to concurrent local runs and actions, actions per run, and monthly run creations.

See Track local runs in the console.

📈 GPU Observability

The run Metrics tab now shows per-GPU health: temperature, power draw, clocks, tensor-core and memory-bandwidth activity, PCIe throughput, thermal and power throttling, and ECC memory errors.

Each pod keeps a consistent color across every metrics chart, with its GPUs drawn as shades of that color. CPU-only tasks are unaffected.

🔍 Kubernetes Events in the Run View

Mount failures, image pull errors, and other cluster events now appear in the run view with severity, reason, and repeat count, with warnings highlighted.

A stuck action’s failure message includes the warning events that explain it, and before a pod starts, the Logs tab shows events instead of an empty log view.

✨ App Status, Self-Healing Deployments, and Logs

Apps now report what they are doing and recover from failed deployments on their own.

  • Status. Apps report fine-grained status: Pulling image, Initializing, Running, Scaled to zero, Scaling up or down. Crash or out-of-memory exits report the real cause instead of appearing stuck in Deploying.
  • Self-healing. A failed deployment webhook retries for about five minutes. It recovers to Active on its own once the cause, such as a missing secret, is fixed, with no redeploy needed.
  • Logs. Logs can follow running replicas live or show persisted output from replicas that have stopped, labeled and colored by replica. Logs and Metrics both have a replica filter.
  • App view. Adds a Summary tab, a cards/list toggle, sorting, and status and deployed-by filters.
  • CLI. flyte serve --follow streams app logs.

⚙️ Queue and Cluster Lifecycle

A drained queue can now be soft-deleted and later restored. Deleted queues appear behind a Deleted filter and open read-only.

  • The organization default queue cannot be deleted.
  • A queue’s cluster membership is editable while it is active, and its cluster pool can be changed once it is drained.
  • Drained queues are visible on the Queues page by default.
  • A queue used as run.default_queue can be drained.
  • Cluster details gain a Compute tab listing node groups with instance types, interruptibility, autoscaling bounds, per-node allocatable resources, labels, and taints.
  • Queue activity adds a Throughput chart and a completions-by-outcome breakdown.

See Queues.

📊 Console Dashboards

Organization and project overview dashboards show actions executed, the work Union saved you (cache hits and recovered actions), runs completed, active apps, builders and triggers, actions over time, and the busiest users.

  • The projects list shows per-project activity sparklines, with the busiest projects at the top.
  • The runs and local-runs lists gain run-completion charts.
  • A per-project triage view surfaces failures, retries, and stuck apps.

✨ Secrets and Timeouts on the Launch Form

For tasks that declare secrets, a Secrets tab on the launch form lets you change which secret store entry is injected into each declared target before launching. A Timeout field sets the overall task attempt timeout, prefilled from the task’s existing value.

🔒 Volumes Without Elevated Privileges

Tasks now mount volumes with no elevated privileges. A node-level broker performs the privileged filesystem setup and hands the task an already-connected file descriptor.

  • Pods keep running under restricted Pod Security Standards: no CAP_SYS_ADMIN, no device mount, and no host paths.
  • Volume data access uses the pod’s own cloud identity, and the broker holds no storage credentials.

In this release, the broker is available on a limited set of clusters. It reached every BYOC cluster and the self-managed chart in September 2026.

♻️ Recovery and Reusable Ray Improvements

  • Run recovery is now available from the Console with a Recover button.
  • Recovered actions show their inputs and outputs correctly.
  • Action names are stable across code changes, so recovery matches the right work.
  • Reusable Ray clusters are shared correctly across tasks in an environment that sets a pod template.
  • Aborted runs no longer leak a Ray cluster past its idle TTL.
  • The image shown on a task or run links to the build that produced it, even when the image was served from cache.

⚡ Faster Console

The Apps list loads quickly and returns cached results instantly while it refreshes. Artifact and code-rendering pages load in under half a second instead of several.

A class of intermittent stuck spinners and slow uploads is fixed across logs, reports, code, secrets, app metrics, launch forms, file uploads, and trigger creation.

🔧 SDK Updates

  • flyte run hello and flyte serve hello give you a first run and a first app with no files on disk.
  • Devbox: flyte get devbox, a --devbox shortcut on flyte create config, and support for GitHub Codespaces, Google Colab, and Windows.
  • flyte.load_interactive_ctx() restores task context inside a debugger, and the Python debugger extension is installed by default.
  • Task-level cache max age, and the root action’s cache key now honors Literal.hash the way sub-actions do.
  • Speculative decoding and cache-aware routing for vLLM and SGLang model serving.
  • service_account on a task environment, a termination grace period, and Image.from_pixi_script().
  • Clustered tasks resume from checkpoints across whole-set restarts.

🔧 Reliability and Fixes

  • Spark tasks launch again after a plugin registration fix. With a pod template, the Spark driver and executor no longer inherit the task container’s entrypoint.
  • The VS Code link appears for Ray tasks with interactive debugging enabled.
  • Every API response carries an X-Request-ID header. Supply your own and it is echoed back, or one is generated for you. Quote it in a support request so Union can find the exact request.
  • Structured outputs render their real values in the formatted view.
  • Organization creation shows live provisioning progress.
  • The Console login and signup pages have clickjacking protection.

⚙️ Self-Managed Data Plane Updates

Update to the latest Union Helm chart to pick up:

  • Artifact registration for tasks declaring produces_artifacts, and artifact triggers on new versions.
  • Kubernetes event enrichment in failure messages and the Logs tab.
  • Fine-grained app status and self-healing deployment webhooks.
  • Reusable Ray cluster fixes, Spark fixes, and Ray metrics and logs across head and worker pods.
  • Live logs for a distributed task no longer fail when one pod has been evicted.

⚠️ Breaking Changes

  • Runs against a draining or drained queue now fail immediately. The implicit fallback to the default queue is removed. Target an active queue, or set run.default_queue explicitly.
  • Moving a queue to a different cluster pool requires draining it first. Cluster membership remains editable while a queue is active.
  • Calling a sync task from async code must now use .aio. Change the call site to await task.aio(...). In exchange, asyncio.run() now works inside sync tasks.