SkyPilot v0.13.1rc1
Get it now with:
uv pip install "skypilot>=0.13.1rc1"What's Changed
- [Kubernetes] Surface remediation hint on abnormal->INIT cluster events by @SeungjinYang in #10060
- [Azure] Fix NIC provisioning broken by azure-mgmt-network 31.0.0 by @lloyd-brown in #10062
- [Dashboard] Truncate long managed job names in the jobs table by @stephenkevn in #10011
- [Dashboard] Add recovery count to managed job detail page by @stephenkevn in #10004
- [k8s] Guard against None pod.status.conditions in termination-reason lookup by @kevinmingtarja in #10065
- [Debug Dump] Resolve k8s coordinates from cluster YAML so INIT clusters still get their k8s/Kueue state dumped by @ishankaul1 in #10068
- [Test] Fix flaky test_helm_deploy_okta: tolerate current_url=None during dashboard redirect by @zpoint in #10073
- fix(runpod): correct and refresh region -> data center mapping by @ciprianf in #10072
- [Dashboard] Infra page: await sky check before reading enabled clouds on manual refresh by @cg505 in #9879
- [Client] Fix async get() not unwrapping the 'detail'-nested 500 payload by @cg505 in #10026
- Remove the API stream link from async request submission output by @claude[bot] in #10081
- [Jobs] Start consolidation-mode controllers only from the leader daemon by @cg505 in #10080
- [Test] chaos_proxy: jitter the kill interval to avoid phase-locked races by @cg505 in #10024
- [Jobs] Stream managed job logs on demand when a logging agent is configured by @aylei in #10069
- [k8s] Support storage.existingClaim to attach a pre-provisioned PVC by @aylei in #10085
- Add a pre-write validator hook for API server config saves by @kevinmingtarja in #10059
- [Dashboard] Render fenced code blocks in error messages by @SeungjinYang in #10088
- [Core] Extract external links from job logs server-side by @lloyd-brown in #9934
- [API] Grant private-workspace access to users added to allowed_users pre-login by @kevinmingtarja in #10079
- [API] Collect debug-dump request logs via LogProvider by @cg505 in #9852
- [Jobs] Give the controller process a single class identity by @cg505 in #10083
- [Dashboard] Add owner + activity toggles to Clusters page by @hentt30 in #9884
- [Dashboard] Default Clusters to My Clusters, add scope hint, unify toggle styling by @stephenkevn in #10089
- [Dashboard] Support admin-configured URL template external links by @lloyd-brown in #10090
- [Dashboard] Hint when a K8s context's nodes are filtered by allowed_nodes by @SeungjinYang in #10092
- Update the config doc and default value for rbac.restrict_config_to_admins by @DanielZhangQD in #10042
- [Kubernetes] Co-locate multi-node EFA jobs in one AZ by @trevanth24 in #10054
- [AWS] Skip unreachable me-south-1 region in catalog fetcher by @DanielZhangQD in #10095
- [k8s] storage.existingClaim activates the persistent-storage layout by @aylei in #10086
- [Test] Replace retired p3.2xlarge with g4dn.xlarge in tests by @aylei in #10098
- [Core] debug-dump: fast-fail unreachable kube contexts, parallelize per-cluster collection by @ishankaul1 in #10041
- [Jobs] Tolerate end-time fetch and log download failures in the controller by @kevinmingtarja in #10091
- [k8s] Avoid per-API-call urllib3 setLevel() to prevent logging fork deadlock on Python < 3.13 by @SeungjinYang in #10104
- [Kubernetes] Derive EFA count on scale-from-zero AWS clusters by @trevanth24 in #10053
- [Kubernetes] Cap provisioning thread pools at the number of work items by @SeungjinYang in #10111
- [Test] Replace retired p3/V100 AWS resources in examples by @SeungjinYang in #10107
- helm: make the persisted clients directory subPath configurable by @aylei in #10101
- [Test] Move zero-quota-failover test off retired AWS p3/V100 by @zpoint in #10113
- [Helm] Add apiService.host to control API server bind interface by @nicosuter in #10050
- [Test] Mark test_debug_dump_unreachable_context_fast_fail no_remote_server by @zpoint in #10116
- [Users] Allow specifying a role when creating a service account token by @DanielZhangQD in #10115
- [Test] Mark test_debug_dump_unreachable_context_fast_fail no_dependency by @zpoint in #10118
- [Docs] Update Sandboxes page with new features and current SDK syntax by @lloyd-brown in #10109
- [Jobs] Release the jobs-scheduler launch slot while the launch request is parked by @cg505 in #10013
- [Jobs] Emergency recovery: retry unexpected controller errors (reuse RECOVERING + recovery_source) by @cg505 in #9868
- [Azure] Support booting from private Shared Image Gallery images by @ahluwalij in #9843
- [k8s] Use
disk_sizeinstead ofephemeral_storagefield by @kyuds in #9273 - [Core] Fix ray job submit failure in Ray cluster template by deconflicting dashboard agent port by @romilbhardwaj in #9856
- [k8s] Resolve urllib3 logger once at decoration time, not per API call by @SeungjinYang in #10108
- Cap provisioning thread pools at the number of work items(2) by @SeungjinYang in #10112
- [Metrics] Auto-detect local kubeconfig context to fix /gpu-metrics self-federation by @hentt30 in #10058
- [Test] Skip test_batch_diffusion on Azure (no L4 GPU in catalog) by @lloyd-brown in #10064
- [k8s] sky local up: add --num-nodes for multi-node local clusters by @zpoint in #10138
- [API] Add config post-save hook carrying old/new config and user by @ishankaul1 in #10133
- [Buildkite] Add concurrency_group marker for global per-test serialization by @zpoint in #10150
- [Core] Add SKYPILOT_DISABLE_LOCAL_API_SERVER to block local API server autostart by @Michaelvll in #10093
- [k8s] Request gzip-compressed API server responses by @aylei in #10153
- [Jobs] Clear SKYPILOT_DISABLE_LOCAL_API_SERVER when starting the controller's local API server by @zpoint in #10154
- [Kubernetes] Check ephemeral storage in check_instance_fits by @SeungjinYang in #10131
- Stash the yaml into the db during launch by @SeungjinYang in #10159
- [Metrics] Take local-context detection off the scrape path by @rohansonecha in #10175
- [Docs] Update SkyPilot logo and homepage architecture image by @stephenkevn in #10179
- [Kubernetes] - Support AWS Neuron (Trainium/Inferentia) accelerators by @trevanth24 in #10169
- [Test] Fix flaky test_pool_scale_down_with_job_count_priority by @zpoint in #10182
- [GCP] Add RTX PRO 6000 Blackwell (G4) support by @pauldonzier in #9634
- [API] Close SSH proxy websocket gracefully on cluster validation failure by @DanielZhangQD in #10183
- [Docs] Restyle Ask AI docs widget and add dark mode support by @stephenkevn in #10180
- [Docs] Update links, styling, and page organization by @romilbhardwaj in #10187
- [Docs] Remove demo card from docs homepage and README by @claude[bot] in #10189
- [AWS] Skip default-SG pre-creation for user-specified security groups by @rohansonecha in #10178
- [Dashboard] Use quicker count for the clusters empty-state CTA by @lloyd-brown in #10149
- [Dashboard] Update logo and favicon to new branding by @hopechong in #10181
- [Docs] Add Hugging Face Hub storage guide by @alex000kim in #10117
- [Dashboard] Render dynamically-registered columns on the Users table by @MadhavJivrajani in #10160
- [Test] Verify volume is actually mounted in test_volume_env_mount_kubernetes by @kevinmingtarja in #10190
- [CI] Tag the commit of each published nightly by @zpoint in #10192
- [Dashboard] Defer cluster fetch to background preload on the jobs page by @MadhavJivrajani in #10193
- [Nebius] Implement personalized pricing by @Jobarion in #9107
- [Dashboard] Add scope field to dashboard.external_links entries by @lloyd-brown in #10194
- [Jobs] Reduce jobs queue payload for field-filtered requests by @MadhavJivrajani in #10176
- [Core] Price region-free cost estimates with the joint regional minimum by @kevinmingtarja in #10199
- [Docs] Update Together AI in docs by @romilbhardwaj in #10198
- [Core] Surface concise health-probe failures in unhealthy-cluster events by @lloyd-brown in #10201
- [Dashboard] Show PENDING job reason in status tooltip by @lloyd-brown in #10202
- [LLM] slime on Job Groups: agentic coding-agent RL with a scalable inference fleet by @ishankaul1 in #10200
- [Volumes] Use SHORT queue for volume apply/delete to avoid LONG-pool starvation by @DanielZhangQD in #10195
- [Jobs] Add Prometheus gauges for managed-job recovery observability by @DanielZhangQD in #10186
- [API] Offload service-account auth DB lookups off the event loop by @kevinmingtarja in #10185
- [Test] Poll for async volume/PVC deletion in test_volumes_on_kubernetes by @zpoint in #10206
- [Kubernetes] OCI network_tier=best: GB200/GB300 NCCL profiles by @DanielZhangQD in #10204
- Release 0.13.1rc1 by @Michaelvll in #10219
New Contributors
- @nicosuter made their first contribution in #10050
- @ahluwalij made their first contribution in #9843
- @MadhavJivrajani made their first contribution in #10160
Full Changelog: v0.13.0rc1...v0.13.1rc1