Portable tasks still need configured infrastructure
SkyPilot can give a team one way to describe a job while leaving infrastructure ownership with that team. The README describes YAML or Python tasks containing resource requirements, data to sync, setup commands, and execution commands. It lists Kubernetes, Slurm, and 20+ clouds behind that interface.
The same README describes provisioning with capacity failover, workdir sync, dependency setup, log streaming, queueing, and automatic cleanup of idle resources. These are project claims, not capabilities demonstrated by our local run. They make SkyPilot relevant when infrastructure placement changes often, but do not establish compatibility with every workload or savings over an existing deployment.
SkyPilot is bring-your-own-cloud: resources launch within your accounts, VPCs, and clusters. Credentials, quotas, network access, and billing therefore remain part of the adoption decision. A stable single-cluster team should first identify which of SkyPilot's scheduling, development, or management features it needs. Portability alone does not settle that choice.
What our recorded run establishes
Our stored run began on October 1, 2026, at 03:24:56.993 UTC and used commit a72a88173f8ac438e9ef21d88549f6fdc43ca41e. The recorded configuration was 3 CPUs, 8 GB of memory, and image ghcr.io/astral-sh/uv:python3.12-bookworm. The install output identifies Python 3.12.12.
| Recorded step | Observation | Limit |
|---|---|---|
| Install | Exit 0 after 170.609 seconds, rounded to 171 seconds | The available tail does not verify an installed sky executable or identify dependency-download time separately. |
| Build | Exit 0 after 11.274 seconds, rounded to 11 seconds | The full command is absent; its tail contains Python syntax warnings. Wheel creation is not established. |
| Tests | Exit 4 after 15.739 seconds, rounded to 16 seconds | The command stopped while importing test configuration; no completed suite or passing-test count is established. |
| Dependencies | 381 recorded dependencies; 1,681 MB footprint | This is the recorded environment, not a minimum installation size. |
| Audit | Pip-audit recorded 12 advisories across four packages | Coverage, identities, severities, and exploitability are unknown. |
The test traceback runs from tests/conftest.py through an import of sky into user-hash generation. Python's getpass.getuser() calls pwd.getpwuid(os.getuid()) and raises KeyError: 'getpwuid(): uid not found: 1000'. This is an observed user-lookup failure during configuration loading. It does not show failing workload assertions, a cloud integration failure, or how the suite behaves after user lookup succeeds.
The repository measurement recorded 2,624 files, about 583,675 lines of source, and 101.5 MB, plus 29 CI workflow files, a Dockerfile, and a tests directory. Those signals describe the checkout; they do not prove test coverage or operational reliability. No new execution, GPU workload, provider launch, or savings benchmark was performed for this correction.
From local setup to a useful launch
The installation guide supports uv and pip. It requires pip inside the uv environment for remote wheel building. Its stable uv instructions specify Python 3.9 through 3.13, while some pip and other examples specify 3.7 through 3.13. Check the instructions and provider requirements for the route you choose rather than treating every example as the same compatibility statement.
For local operation, install the dependencies for the providers you plan to use and run sky check to inspect credential configuration. The guide warns that first-time cloud accounts may have zero or low instance quotas, especially for GPUs. The README's example requests eight A100 GPUs and explicitly requires access to those instances.
For a team deployment, sky api login connects a client to a remote API server without local provider dependencies. This changes where configuration lives; it does not remove the need to operate the server and configure its infrastructure access. The next useful evaluation is a small representative launch, including setup, logs, and cleanup, on each intended target. Our run did not complete that evaluation.
What v0.13.0 adds to evaluate
The supplied v0.13.0 release notes describe Sky Batch, Hugging Face storage, lifecycle hooks, sky debug-dump, per-instance hourly cost caps, and GKE Autopilot support. Sky Batch distributes data processing across worker pools and reuses workers between jobs. Lifecycle hooks run custom logic around autostop, preemption, and shutdown events.
The hourly cost cap limits which instance prices are considered during optimization. It is not evidence of a total spending limit or measured savings. The debug-dump command collects logs, state, and configuration into a zip, and the release notes say tasks automatically receive API-server credentials by default. Review those behaviors when deciding who can submit tasks and access diagnostics. Our run did not exercise these release features or establish that its checkout was the v0.13.0 release artifact.
Issue status matters as much as the reproduction
Issue 10713 reported that sky status -o json printed prose before its JSON payload for an absent cluster. The supplied issue history shows it closed as completed on October 7, 2026, referencing commit 4a68bc1 and PR 10763. Our October 1 run predates that closure and did not test this command. The closure supports updating the issue's status; it does not establish that every JSON-emitting command is clean or that the fix is included in a particular release.
Issue 10741 remains open in the supplied extract. It reports that credentials passed through --env persist in plaintext request records, while construction-time redaction handles --secret. On September 25, a maintainer said this was intended because users should use --secret for secrets. Treat this as reported behavior with maintainer guidance, not a security finding from our sandbox.
Issue 10742 also remains open in the supplied extract. Its author reports that distinct cluster names can normalize to the same cloud name and share resources, with a reproduction attributed to master at 6cf931f. We did not reproduce it. Check naming behavior on the revision you intend to deploy, particularly if automation generates names that differ only by case, dots, underscores, or hyphens.
Compare orchestration with orchestration
dstack is the direct orchestration comparison supported by the supplied sources. Its README describes GPU provisioning across clouds, Kubernetes, and on-prem clusters, with a server required before CLI or API use. Compare both tools using the same intended infrastructure and representative workload; this review contains no dstack measurements.
Ray answers a different question. Its README describes a distributed runtime and AI libraries, including tasks and actors for distributed execution. Consider Ray when application execution needs to scale. It can be a complement to an infrastructure orchestration layer, so treating it as a smaller replacement for SkyPilot would obscure the decision.
How to read the scores
These are editorial evidence ratings, not benchmark results. The shared scale is 1 for substantial documented obstacles, 2 for partial support with major unresolved checks, 3 for a documented path with meaningful limits, 4 for broad evidence including relevant validation, and 5 for comprehensive evidence across the intended scope. Setup considers prerequisites and recorded execution; docs considers actionable guidance and consistency; community considers visible support and contribution evidence; maturity considers documented operating features and validated behavior.
The community score reflects limited evidence in this review, not a measurement of adoption or support quality. Stars, release features, and the presence of CI cannot establish production reliability. Choose SkyPilot for a requirement you can name, then validate that requirement on your infrastructure.

