v0.11.2

skypilot-org/skypilotv0.11.2Mar 3, 2026by Michaelvll

AI Summary

Release v0.11.2 delivers Slurm support in Beta, JobGroups, enhanced Pools with autoscaling, Autostop Hooks, and 7x MOUNT_CACHED speedup. Requires Python 3.9+.

Key Highlights

  • Beta Slurm Support for HPC clusters
  • JobGroups for heterogeneous parallel workloads
  • Enhanced Pools with autoscaling and multi-job scheduling
  • Autostop Hooks for pre-shutdown scripts
  • 7x MOUNT_CACHED upload speedup
  • Automatic EFA on EKS
  • Python 3.9+ required

Breaking Changes

  • Python 3.9+ required (dropped 3.7/3.8 support)

New Features

  • Slurm support (Beta) with multi-node, containers, partition support
  • JobGroups for multi-task pipelines with inter-job networking
  • Pool enhancements: multiple jobs per worker, autoscaling, heterogeneous GPUs
  • External Links detection for W&B
  • Autostop Hooks for custom pre-stop scripts
  • Automatic EFA setup on EKS
  • Exit code-based job recovery
  • Windows WSL support
  • External authentication proxy support
  • Sidecar container support for Kubernetes

Full Release Notes

# SkyPilot v0.11.2: Slurm Support, JobGroups, Enhanced Pools, External Links, Autostop Hooks, 7x data mount speed up and More

SkyPilot v0.11.2 delivers **Slurm support** in Beta, **JobGroups** for heterogeneous parallel workloads, and significantly **enhanced Pools** with autoscaling, multi-job scheduling and heterogeneous GPU support. This release also brings **Autostop Hooks**, **7x MOUNT_CACHED mode uploads speed up**, **automatic EFA on EKS**, and numerous admin, security, and performance improvements.

Get it now with:

```bash
uv pip install "skypilot>=0.11.2"
```

Or, upgrade your team SkyPilot API server:

```bash
NAMESPACE=skypilot
RELEASE_NAME=skypilot
VERSION=0.11.2

helm repo update skypilot
helm upgrade -n $NAMESPACE $RELEASE_NAME skypilot/skypilot \
  --set apiService.image=berkeleyskypilot/skypilot:$VERSION \
  --version $VERSION --devel --reuse-values
```

**Breaking Change:** **Python 3.9+ required** — Python 3.7 and 3.8 are no longer supported ([#8489](https://github.com/skypilot-org/skypilot/pull/8489)). Please upgrade before installing this release.

---

## Highlights

### [Beta] Slurm Support

SkyPilot now supports **Slurm** as a new infrastructure backend, enabling users to orchestrate workloads on HPC clusters alongside cloud VMs and Kubernetes — all through the same unified interface ([docs](https://docs.skypilot.co/en/latest/reference/slurm/index.html), [#5491](https://github.com/skypilot-org/skypilot/pull/5491), [#8138](https://github.com/skypilot-org/skypilot/pull/8138)).

This release brings comprehensive Slurm capabilities:

- **Multi-node distributed workloads** — run distributed training jobs across multiple Slurm nodes with proper environment variable propagation and per-node logging ([#8219](https://github.com/skypilot-org/skypilot/pull/8219))
- **Containerized execution** via NVIDIA pyxis/enroot — specify Docker images with `--image-id` for reproducible, GPU-accelerated workloads ([#8604](https://github.com/skypilot-org/skypilot/pull/8604), [#8609](https://github.com/skypilot-org/skypilot/pull/8609))
- **Resource-scoped SSH sessions** — `ssh <cluster>` drops you inside the Slurm job allocation, so `nvidia-smi` correctly reflects only your allocated GPUs ([#8268](https://github.com/skypilot-org/skypilot/pull/8268))
- **Interactive SSH authentication** (2FA, password prompts) for clusters requiring keyboard-interactive auth ([#8317](https://github.com/skypilot-org/skypilot/pull/8317))
- **Partition support** — Slurm partitions are mapped to SkyPilot zones, enabling partition-aware scheduling ([#8198](https://github.com/skypilot-org/skypilot/pull/8198))
- **Multi-cluster support** — configure and use multiple Slurm clusters simultaneously
- **Dashboard integration** — Slurm clusters appear in the infrastructure page with status and GPU utilization

See the [Slurm documentation](https://docs.skypilot.co/en/latest/reference/slurm/index.html) for setup instructions.

<p align="center">
<img width="3024" height="792" alt="image" src="https://github.com/user-attachments/assets/0510257b-c158-4ef1-8432-e7a619a679bc" />
</p>


### JobGroups: Heterogeneous Parallel Workloads

**JobGroups** enable running multiple jobs with different resource requirements together as a managed group ([blog](https://blog.skypilot.co/job-groups/), [#8456](https://github.com/skypilot-org/skypilot/pull/8456)). Define multi-task pipelines in a single multi-document YAML file:

```yaml
# Header: job group metadata
name: rl-training
execution: parallel
primary_tasks: [trainer]
termination_delay: 30s

---
name: trainer
resources:
accelerators: A100:8
run: python train.py
---
name: reward-server
resources:
accelerators: A100:1
run: python reward_server.py
```

Key capabilities:

- **Parallel cluster launch and monitoring** — all jobs launched and tracked concurrently
- **Inter-job networking** — easy task name based hostname discovery (<task-name>.<job-name>) for job-to-job communication
- **Dashboard UI** — expandable rows for multi-task groups, task-specific log filtering
- **CLI support** — `sky jobs logs --task-name <name>` for viewing specific task logs

<p align="center">
<img width="80%" alt="JobGroups banner" src="https://blog.skypilot.co/job-groups/assets/banner.png" />
</p>

Example applications included: [RL post-training (RLHF) pipeline](https://blog.skypilot.co/job-groups/) and parallel train-eval pipeline.

### Enhanced Pools: Multi-Job Scheduling and Heterogeneous GPUs

SkyPilot Pools receive significant upgrades in this release:

- **Multiple jobs per worker** — the scheduler now performs resource-aware bin-packing, tracking CPU, memory, and accelerator usage to fit multiple jobs on a single worker ([#8192](https://github.com/skypilot-org/skypilot/pull/8192), [#8279](https://github.com/skypilot-org/skypilot/pull/8279))
- **Autoscaling** — pools can now automatically scale workers up and down (including to zero) based on queue length. Specify `min_workers`, `max_workers`, and target queue length; a `QueueLengthAutoscaler` handles the rest while protecting running jobs from cancellation ([#8483](https://github.com/skypilot-org/skypilot/pull/8483))
- **Heterogeneous GPU support** — specify `any_of` resource configurations and the scheduler dynamically resolves to available hardware ([#8315](https://github.com/skypilot-org/skypilot/pull/8315)):

```yaml
resources:
any_of:
  - accelerators: T4:1
  - accelerators: A100:1
```

- **9x faster concurrent job launch** — launching 100 concurrent jobs reduced from 4.5 minutes to 30 seconds using the new `--num-jobs` argument ([#7891](https://github.com/skypilot-org/skypilot/pull/7891))
- **Fractional GPU scheduling fix** — fractional GPU jobs now correctly schedule across all workers ([#8509](https://github.com/skypilot-org/skypilot/pull/8509))

### External Links

SkyPilot dashboard now [automatically detects your W&B links](https://docs.skypilot.co/en/latest/running-jobs/external-links.html) generated by your AI workloads. No need to dig into the job logs to figure out where your training panels are. ([#8405](https://github.com/skypilot-org/skypilot/pull/8405))

<p align="center">
<img width="60%" alt="image 1" src="https://github.com/user-attachments/assets/26c38623-60e1-4994-aab6-24d1f29249b6" />
</p>


### Autostop Hooks

An autostop hook mechanism allow running custom scripts before a cluster is automatically stopped — for example, to save checkpoints, sync W&B runs, or send Slack notifications ([#8412](https://github.com/skypilot-org/skypilot/pull/8412)):

```yaml
resources:
autostop:
idle_minutes:10
    hook:|
      wandb sync
      curl -X POST $SLACK_WEBHOOK -d '{"text": "Cluster shutting down"}'
hook_timeout:300
```

- New `sky logs --autostop` command to view hook execution logs
- `sky exec` is rejected on `AUTOSTOPPING` clusters; `sky launch` waits for autostop to complete before restarting

### Automatic EFA Setup on Amazon EKS

SkyPilot now automatically configures **Elastic Fabric Adapter (EFA)** on EKS with a single flag ([#8557](https://github.com/skypilot-org/skypilot/pull/8557)):

```jsx
resources:
  network_tier: best
```

This automates what was previously a complex manual setup, delivering **~78.8 GB/s inter-node bandwidth** (vs ~4.1 GB/s without EFA), critical for distributed training performance. EFA interfaces are allocated proportionally to the requested GPU count.

<p align="center">
<img width="50%" alt="efa-speedup" src="https://github.com/user-attachments/assets/e28b3d47-5378-41b6-a2eb-b8faf496f21a" />
</p>


### 7x MOUNT_CACHED Uploads Speed Up

**Parallel uploads** are now the default for `MOUNT_CACHED` file mounts, delivering a **7x speedup** — flush time dropped from 151s to 21s for a ~14.6 GB test workload ([#8455](https://github.com/skypilot-org/skypilot/pull/8455)). A new `data.mount_cached.sequential_upload` config option allows reverting to sequential uploads if needed.

<p align="center">
<img width="50%" alt="mount-cached-speedup" src="https://github.com/user-attachments/assets/03dab45c-3694-44ba-948e-166ea8a6450b" />
</p>


### Exit Code-Based Job Recovery

Users can now specify exit codes that trigger automatic job recovery in managed jobs ([#8324](https://github.com/skypilot-org/skypilot/pull/8324)):

```yaml
resources:
  job_recovery:
    recover_on_exit_codes:[29]
```

When a job exits with a specified code, SkyPilot automatically recovers it — useful for transient failures with known error codes.

### Windows WSL Support

Automatically detect that SkyPilot is running in WSL, and seamless set up VSCode Remote-SSH for Windows users ([#8669](https://github.com/skypilot-org/skypilot/pull/8669))

### Admin Deployment Improvement

- **External authentication proxy support** — deploy behind AWS ALB with Cognito, Azure Front Door, or custom SSO proxies; supports both plaintext and JWT header formats ([#8751](https://github.com/skypilot-org/skypilot/pull/8751))
- **Sidecar container support** — Istio, Datadog, and other sidecar injection no longer breaks K8s provisioning; SkyPilot explicitly targets the `ray-node` container ([#8353](https://github.com/skypilot-org/skypilot/pull/8353), [#8444](https://github.com/skypilot-org/skypilot/pull/8444))

---

## What’s New

### Kubernetes

- **Improved Kueue integration** — 24-hour provisioning timeout, workspace-level queue configuration, controller pod exclusion, and pod annotations ([#8484](https://github.com/skypilot-org/skypilot/pull/8484))
- **GPU detection fix** — L40S no longer misidentified as L4; added Blackwell, newer Hopper, and Ada Lovelace GPUs ([#8593](https://github.com/skypilot-org/skypilot/pull/8593))
- **`kubernetes.set_pod_resource_limits`** — set pod CPU/memory limits relative to requests for pod resource limit enforcement ([#8644](https://github.com/skypilot-org/skypilot/pull/8644))
- **Volume `NOT_READY` status** — actionable error messages for PVC issues; background refresh daemon; `--refresh` flag ([#8524](https://github.com/skypilot-org/skypilot/pull/8524))
- **Unified ingress resource** — share a single ingress across services ([#8532](https://github.com/skypilot-org/skypilot/pull/8532))
- Kubernetes python client race condition fix ([#8705](https://github.com/skypilot-org/skypilot/pull/8705))
- Service resource leak fix for pod eviction/Kueue preemption ([#8745](https://github.com/skypilot-org/skypilot/pull/8745)), GPU misconfiguration hints ([#8629](https://github.com/skypilot-org/skypilot/pull/8629)), per-task `remote_identity` override ([#8659](https://github.com/skypilot-org/skypilot/pull/8659)), not-ready node exclusion ([#8172](https://github.com/skypilot-org/skypilot/pull/8172)), GKE autoscaler compatibility ([#8326](https://github.com/skypilot-org/skypilot/pull/8326))

### API Server & Security

- **Concurrent request context isolation** — fixed workspace isolation violations from context leaking between users ([#8354](https://github.com/skypilot-org/skypilot/pull/8354))
- **Zip Slip vulnerability fix** — patched path traversal in `/upload` endpoint ([#8723](https://github.com/skypilot-org/skypilot/pull/8723))
- **Polling-based `sky api login`** — works around Chrome Private Network Access restrictions ([#8590](https://github.com/skypilot-org/skypilot/pull/8590))
- **Memory leak fix** — AWS session cache leak in status refresh daemon ([#8098](https://github.com/skypilot-org/skypilot/pull/8098))
- Kubeconfig no longer uploaded when using `SERVICE_ACCOUNT` ([#8386](https://github.com/skypilot-org/skypilot/pull/8386))
- Docker password redaction in logs ([#8080](https://github.com/skypilot-org/skypilot/pull/8080)), Bearer token + Basic Auth fix ([#8503](https://github.com/skypilot-org/skypilot/pull/8503)), disable basic auth option ([#8694](https://github.com/skypilot-org/skypilot/pull/8694))
- API server plugin system ([#7993](https://github.com/skypilot-org/skypilot/pull/7993), [#8272](https://github.com/skypilot-org/skypilot/pull/8272), [#8700](https://github.com/skypilot-org/skypilot/pull/8700), [#8410](https://github.com/skypilot-org/skypilot/pull/8410))

### Deployment

- Persists managed jobs logs with RWX persistent storage with RollingUpdate ([#8537](https://github.com/skypilot-org/skypilot/pull/8537))
- `fullnameOverride` ([#8528](https://github.com/skypilot-org/skypilot/pull/8528))
- CoreWeave, DigitalOcean credentials support ([#8200, #](https://github.com/skypilot-org/skypilot/pull/8200)[7931](https://github.com/skypilot-org/skypilot/pull/7931))
- SSH node pool config ([#8249](https://github.com/skypilot-org/skypilot/pull/8249))
- Helm RollingUpdate SQLite fix ([#8607](https://github.com/skypilot-org/skypilot/pull/8607))
- Scheduling constraints ([#8134](https://github.com/skypilot-org/skypilot/pull/8134))

### Managed Jobs & Dashboard

- **GPU metrics for managed jobs** — utilization, memory, temperature, and power in the dashboard ([#8718](https://github.com/skypilot-org/skypilot/pull/8718))
- **6x infra page speedup** and server-side pagination ([#8523](https://github.com/skypilot-org/skypilot/pull/8523), [#8611](https://github.com/skypilot-org/skypilot/pull/8611), [#8651](https://github.com/skypilot-org/skypilot/pull/8651))
- **Label filtering** for clusters and infrastructure ([#8507](https://github.com/skypilot-org/skypilot/pull/8507))
- Log download compression ~96% ([#8626](https://github.com/skypilot-org/skypilot/pull/8626)), GPU temperature panel ([#8472](https://github.com/skypilot-org/skypilot/pull/8472)), Grafana link ([#8599](https://github.com/skypilot-org/skypilot/pull/8599))
- Job cancel reliability fix ([#8203](https://github.com/skypilot-org/skypilot/pull/8203)), multi-user cluster fix ([#8233](https://github.com/skypilot-org/skypilot/pull/8233)), SSH key permission fix ([#8316](https://github.com/skypilot-org/skypilot/pull/8316))

### Cloud Integrations

- **AWS multi-VPC failover** — specify multiple VPC names with automatic failover across regions ([#8722](https://github.com/skypilot-org/skypilot/pull/8722))
- **AWS `p5e.48xlarge` H200 and Melbourne region support** ([#8465,](https://github.com/skypilot-org/skypilot/pull/8465) [#8055](https://github.com/skypilot-org/skypilot/pull/8055))
- Choose instance type based on AWS local disk ([#8661](https://github.com/skypilot-org/skypilot/pull/8661))
- **S3 mounting with non-static credentials** — fixed for AWS SSO, IAM roles, Pod Identity/IRSA ([#8358](https://github.com/skypilot-org/skypilot/pull/8358))
- **Together AI InfiniBand** ([#8581](https://github.com/skypilot-org/skypilot/pull/8581))
- **GCP Queued Resources for TPUs** — TPU VM provisioning requests are queued until capacity becomes available ([#8481](https://github.com/skypilot-org/skypilot/pull/8481))
- Vast.ai `create_instance_kwargs` ([#8536](https://github.com/skypilot-org/skypilot/pull/8536)), Vast.ai SSH fix ([#8614](https://github.com/skypilot-org/skypilot/pull/8614))
- Azure blobfuse2 Debian 13 fix ([#8730](https://github.com/skypilot-org/skypilot/pull/8730))
- Nebius UFW security hardening ([#8627](https://github.com/skypilot-org/skypilot/pull/8627))

### Core, Backend & UX

- **`--secret-file` CLI flag** — avoid shell history exposure ([#8646](https://github.com/skypilot-org/skypilot/pull/8646))
- **`provision.install_conda` config** — skip Miniconda for faster launches ([#8662](https://github.com/skypilot-org/skypilot/pull/8662))
- **Pending cluster state** ([#8262](https://github.com/skypilot-org/skypilot/pull/8262)), custom `.sky` location ([#8153](https://github.com/skypilot-org/skypilot/pull/8153)), restore autostop on start ([#8022](https://github.com/skypilot-org/skypilot/pull/8022)), multiple skylets per host ([#8156](https://github.com/skypilot-org/skypilot/pull/8156))
- SSH access during bad Ray state ([#8649](https://github.com/skypilot-org/skypilot/pull/8649)), volume fail-fast ([#8739](https://github.com/skypilot-org/skypilot/pull/8739)), `greenlet` import fix ([#8653](https://github.com/skypilot-org/skypilot/pull/8653)), `Resources.copy()` fix ([#8648](https://github.com/skypilot-org/skypilot/pull/8648)), pandas compatibility ([#8643](https://github.com/skypilot-org/skypilot/pull/8643)), Docker MOTD fix ([#8632](https://github.com/skypilot-org/skypilot/pull/8632))
- **SSH Node Pools:** deployment refactored ([#8154](https://github.com/skypilot-org/skypilot/pull/8154), [#8173](https://github.com/skypilot-org/skypilot/pull/8173), [#8226](https://github.com/skypilot-org/skypilot/pull/8226)), heterogeneous node ban ([#8230](https://github.com/skypilot-org/skypilot/pull/8230)), `lstrip('ssh-')` bug fix ([#8417](https://github.com/skypilot-org/skypilot/pull/8417)), package distribution fix ([#8508](https://github.com/skypilot-org/skypilot/pull/8508))

### Documentation & Examples

- Air-gapped environment docs ([#7312](https://github.com/skypilot-org/skypilot/pull/7312)), NVIDIA Dynamo serving ([#7333](https://github.com/skypilot-org/skypilot/pull/7333)), EKS IAM roles guide ([#8358](https://github.com/skypilot-org/skypilot/pull/8358)), Slurm migration guide ([#8515](https://github.com/skypilot-org/skypilot/pull/8515))
- Prefect integration ([#8506](https://github.com/skypilot-org/skypilot/pull/8506)), SAM3 video segmentation ([#8384](https://github.com/skypilot-org/skypilot/pull/8384)), VeRL search ([#8241](https://github.com/skypilot-org/skypilot/pull/8241)), Marimo notebooks ([#8123](https://github.com/skypilot-org/skypilot/pull/8123))

---

## Contributors

Thank you to all contributors who made this release possible!

@aflah02, @alex000kim, @andylizf, @aylei, @Bokki-Ryu, @brianstrauch, @cblmemo, @cg505, @concretevitamin, @cwhitak3r, @dan-blanchard, @DanielZhangQD, @Elden123, @funkypenguin, @hentt30, @isagi-y22, @JiangJiaWei1103, @kevinmingtarja, @koaning, @kyuds, @laimis9133, @liuwb, @lloyd-brown, @lucamanolache, @m-braganca, @Maknee, @Michaelvll, @mk0walsk, @mmcclean-aws, @mt5225, @nakinnubis, @oelachqar, @otutukingsley, @Philmod, @php-workx, @qicz, @rohansonecha, @romilbhardwaj, @sachdva, @SalikovAlex, @seahyinghang8, @SeungjinYang, @YashIIT0909, @yurekami, @atoniolo76, @zpoint

**New Contributors:**

- @aflah02 made their first contribution in [#8093](https://github.com/skypilot-org/skypilot/pull/8093)
- @atoniolo76 made their first contribution
- @Bokki-Ryu made their first contribution in [#8134](https://github.com/skypilot-org/skypilot/pull/8134)
- @dan-blanchard made their first contribution in [#8037](https://github.com/skypilot-org/skypilot/pull/8037)
- @hentt30 made their first contribution
- @isagi-y22 made their first contribution
- @laimis9133 made their first contribution
- @liuwb made their first contribution
- @m-braganca made their first contribution
- @mk0walsk made their first contribution in [#8237](https://github.com/skypilot-org/skypilot/pull/8237)
- @mt5225 made their first contribution
- @nakinnubis made their first contribution
- @oelachqar made their first contribution
- @otutukingsley made their first contribution
- @Philmod made their first contribution
- @php-workx made their first contribution in [#8444](https://github.com/skypilot-org/skypilot/pull/8444)
- @qicz made their first contribution in [#7890](https://github.com/skypilot-org/skypilot/pull/7890)
- @sachdva made their first contribution
- @seahyinghang8 made their first contribution
- @YashIIT0909 made their first contribution
- @yurekami made their first contribution

Special thanks to the community for bug reports, feature requests, and pull requests that helped improve SkyPilot!

## Full Changelog

For a complete list of changes, see the [commit history](https://github.com/skypilot-org/skypilot/compare/v0.11.0...v0.11.2).