skypilot-nightly 1.0.0.dev20250303__tar.gz → 1.0.0.dev20250305__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. {skypilot_nightly-1.0.0.dev20250303/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250305}/PKG-INFO +28 -41
  2. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/README.md +27 -40
  3. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/__init__.py +2 -2
  4. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/cloud_vm_ray_backend.py +16 -8
  5. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/cli.py +36 -18
  6. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/client/cli.py +36 -18
  7. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/client/sdk.py +32 -9
  8. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/core.py +55 -6
  9. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/exceptions.py +80 -1
  10. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/client/sdk.py +7 -2
  11. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/constants.py +1 -1
  12. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/dashboard/dashboard.py +15 -25
  13. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/dashboard/templates/index.html +100 -3
  14. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/server/core.py +11 -6
  15. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/utils.py +51 -21
  16. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/constants.py +1 -1
  17. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/payloads.py +16 -8
  18. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/server.py +15 -2
  19. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/constants.py +1 -1
  20. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/job_lib.py +10 -1
  21. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305/skypilot_nightly.egg-info}/PKG-INFO +28 -41
  22. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/LICENSE +0 -0
  23. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/MANIFEST.in +0 -0
  24. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/pyproject.toml +0 -0
  25. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/setup.cfg +0 -0
  26. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/setup.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/__init__.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/aws.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/azure.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/cloudflare.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/common.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/cudo.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/do.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/docker.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/gcp.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/ibm.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/kubernetes.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/nebius.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/oci.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/runpod.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/vast.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/adaptors/vsphere.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/admin_policy.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/authentication.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/__init__.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/backend.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/backend_utils.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/docker_utils.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/local_docker_backend.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/backends/wheel_utils.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/benchmark/__init__.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/benchmark/benchmark_state.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/benchmark/benchmark_utils.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/check.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/client/__init__.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/client/common.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/cloud_stores.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/__init__.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/aws.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/azure.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/cloud.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/cudo.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/do.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/fluidstack.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/gcp.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/ibm.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/kubernetes.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/lambda_cloud.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/nebius.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/oci.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/paperspace.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/runpod.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/scp.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/__init__.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/common.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/config.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/constants.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/do_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/__init__.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/aws_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/azure_utils.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/gcp_utils.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/oci_utils.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/utils/scp_utils.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/vast.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/clouds/vsphere.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/dag.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/__init__.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/data_transfer.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/data_utils.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/mounting_utils.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/storage.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/data/storage_utils.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/execution.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/global_user_state.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/__init__.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/client/__init__.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/controller.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/dashboard/static/favicon.ico +0 -0
  125. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/recovery_strategy.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/scheduler.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/server/__init__.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/server/dashboard_utils.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/server/server.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/jobs/state.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/models.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/optimizer.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/__init__.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/aws/__init__.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/aws/config.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/aws/instance.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/aws/utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/azure/__init__.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/azure/azure-config-template.json +0 -0
  140. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/azure/config.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/azure/instance.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/common.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/__init__.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/config.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/cudo_machine_type.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/cudo_utils.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/cudo_wrapper.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/cudo/instance.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/do/__init__.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/do/config.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/do/constants.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/do/instance.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/do/utils.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/docker_utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/fluidstack/__init__.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/fluidstack/config.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/fluidstack/instance.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/__init__.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/config.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/constants.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/instance.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/instance_utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/gcp/mig_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/instance_setup.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/__init__.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/config.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/constants.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/instance.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  172. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  173. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/network.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/network_utils.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/kubernetes/utils.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/lambda_cloud/__init__.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/lambda_cloud/config.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/lambda_cloud/instance.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/logging.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/metadata_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/nebius/__init__.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/nebius/config.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/nebius/instance.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/nebius/utils.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/oci/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/oci/config.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/oci/instance.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/oci/query_utils.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/paperspace/__init__.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/paperspace/config.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/paperspace/constants.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/paperspace/instance.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/paperspace/utils.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/provisioner.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/__init__.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/api/__init__.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/api/commands.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/api/pods.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/config.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/instance.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/runpod/utils.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vast/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vast/config.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vast/instance.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vast/utils.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/__init__.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/__init__.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/custom_script.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/id_generator.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/service_manager.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/common/vim_utils.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/config.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/instance.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/provision/vsphere/vsphere_utils.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/resources.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/autoscalers.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/client/__init__.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/client/sdk.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/constants.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/controller.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/load_balancer.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/load_balancing_policies.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/replica_managers.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/serve_state.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/serve_utils.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/server/__init__.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/server/core.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/server/server.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/service.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/serve/service_spec.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/__init__.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/common.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/html/log.html +0 -0
  242. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/__init__.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/executor.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/queues/__init__.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/queues/mp_queue.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/requests.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/serializers/__init__.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/serializers/decoders.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/requests/serializers/encoders.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/server/stream_utils.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/setup_files/MANIFEST.in +0 -0
  252. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/setup_files/dependencies.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/setup_files/setup.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/sky_logging.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/LICENSE +0 -0
  256. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/attempt_skylet.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/autostop_lib.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/configs.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/events.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/log_lib.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/log_lib.pyi +0 -0
  263. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/__init__.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/command_runner.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/ibm/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/ibm/node_provider.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/ibm/utils.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/scp/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/scp/config.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/providers/scp/node_provider.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/__init__.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  274. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/cli.py.patch +0 -0
  275. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  276. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  277. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  278. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/updater.py.patch +0 -0
  279. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/ray_patches/worker.py.patch +0 -0
  280. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/skylet.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skylet/subprocess_daemon.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/skypilot_config.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/task.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/aws-ray.yml.j2 +0 -0
  285. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/azure-ray.yml.j2 +0 -0
  286. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/cudo-ray.yml.j2 +0 -0
  287. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/do-ray.yml.j2 +0 -0
  288. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  289. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/gcp-ray.yml.j2 +0 -0
  290. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/ibm-ray.yml.j2 +0 -0
  291. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/jobs-controller.yaml.j2 +0 -0
  292. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  293. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  294. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  295. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  296. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  297. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/lambda-ray.yml.j2 +0 -0
  298. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/local-ray.yml.j2 +0 -0
  299. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/nebius-ray.yml.j2 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/oci-ray.yml.j2 +0 -0
  301. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/paperspace-ray.yml.j2 +0 -0
  302. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/runpod-ray.yml.j2 +0 -0
  303. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/scp-ray.yml.j2 +0 -0
  304. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  305. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  306. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/vast-ray.yml.j2 +0 -0
  307. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/vsphere-ray.yml.j2 +0 -0
  308. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/templates/websocket_proxy.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/usage/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/usage/constants.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/usage/usage_lib.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/__init__.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/accelerator_registry.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/admin_policy_utils.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/annotations.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/cli_utils/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/cli_utils/status_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/cluster_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/command_runner.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/command_runner.pyi +0 -0
  321. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/common.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/common_utils.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/config_utils.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/control_master_utils.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/controller_utils.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/dag_utils.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/db_utils.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/env_options.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/__init__.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/create_cluster.sh +0 -0
  331. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  332. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  333. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  336. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  338. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  339. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  341. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/kubernetes_enums.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/log_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/message_utils.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/registry.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/resources_utils.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/rich_utils.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/schemas.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/status_lib.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/subprocess_utils.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/timeline.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/ux_utils.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/sky/utils/validator.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  355. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  356. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  357. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/skypilot_nightly.egg-info/requires.txt +0 -0
  358. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/skypilot_nightly.egg-info/top_level.txt +0 -0
  359. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_api.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_cli.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_config.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_global_user_state.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_jobs.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_jobs_and_serve.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_list_accelerators.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_optimizer_dryruns.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_optimizer_random_dag.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_serve_autoscaler.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_smoke.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_storage.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_wheels.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250305}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250303
3
+ Version: 1.0.0.dev20250305
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -241,13 +241,13 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidst
241
241
  </p>
242
242
 
243
243
 
244
- ## Getting Started
244
+ ## Getting started
245
245
  You can find our documentation [here](https://docs.skypilot.co/).
246
246
  - [Installation](https://docs.skypilot.co/en/latest/getting-started/installation.html)
247
247
  - [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html)
248
248
  - [CLI reference](https://docs.skypilot.co/en/latest/reference/cli.html)
249
249
 
250
- ## SkyPilot in 1 Minute
250
+ ## SkyPilot in 1 minute
251
251
 
252
252
  A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.
253
253
 
@@ -299,59 +299,46 @@ SkyPilot then performs the heavy-lifting for you, including:
299
299
  </p>
300
300
 
301
301
 
302
- Refer to [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
302
+ See [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
303
303
 
304
- ## More Information
304
+ ## Runnable examples
305
+
306
+ See [**SkyPilot examples**](https://docs.skypilot.co/en/docs-examples/examples/index.html) that cover: development, training, serving, LLM models, AI apps, and common frameworks.
307
+
308
+ Latest featured examples:
309
+
310
+ | Task | Examples |
311
+ |----------|----------|
312
+ | Training | [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.html), [Finetune Llama 3](https://docs.skypilot.co/en/latest/examples/training/llama-3_1-finetuning.html), [NeMo](https://docs.skypilot.co/en/latest/examples/training/nemo.html), [Ray](https://docs.skypilot.co/en/latest/examples/training/ray.html), [Unsloth](https://docs.skypilot.co/en/latest/examples/training/unsloth.html), [Jax/TPU](https://docs.skypilot.co/en/latest/examples/training/tpu.html) |
313
+ | Serving | [vLLM](https://docs.skypilot.co/en/latest/examples/serving/vllm.html), [SGLang](https://docs.skypilot.co/en/latest/examples/serving/sglang.html), [Ollama](https://docs.skypilot.co/en/latest/examples/serving/ollama.html) |
314
+ | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 3](https://docs.skypilot.co/en/latest/examples/models/llama-3.html), [CodeLlama](https://docs.skypilot.co/en/latest/examples/models/codellama.html), [Qwen](https://docs.skypilot.co/en/latest/examples/models/qwen.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
315
+ | AI apps | [RAG](https://docs.skypilot.co/en/latest/examples/applications/rag.html), [vector databases](https://docs.skypilot.co/en/latest/examples/applications/vector_database.html) (ChromaDB, CLIP) |
316
+ | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html) |
317
+
318
+ Source files and more examples can be found in [`llm/`](https://github.com/skypilot-org/skypilot/tree/master/llm) and [`examples/`](https://github.com/skypilot-org/skypilot/tree/master/examples).
319
+
320
+ ## More information
305
321
  To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
306
322
 
307
- <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
308
- Runnable examples:
309
- - [**AI Gallery**](https://docs.skypilot.co/en/latest/gallery/index.html)
310
- - LLMs on SkyPilot
311
- - [DeepSeek-R1](./llm/deepseek-r1/)
312
- - [DeepSeek-Janus](./llm/deepseek-janus/)
313
- - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
314
- - [Pixtral](./llm/pixtral/)
315
- - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
316
- - [GPT-2 via `llm.c`](./llm/gpt-2/)
317
- - [Llama 3](./llm/llama-3/)
318
- - [Qwen](./llm/qwen/)
319
- - [Databricks DBRX](./llm/dbrx/)
320
- - [Gemma](./llm/gemma/)
321
- - [Mixtral 8x7B](./llm/mixtral/); [Mistral 7B](https://docs.mistral.ai/self-deployment/skypilot/) (from official Mistral team)
322
- - [Code Llama](./llm/codellama/)
323
- - [vLLM: Serving LLM 24x Faster On the Cloud](./llm/vllm/) (from official vLLM team)
324
- - [SGLang: Fast and Expressive LLM Serving On the Cloud](./llm/sglang/) (from official SGLang team)
325
- - [Vicuna chatbots: Training & Serving](./llm/vicuna/) (from official Vicuna team)
326
- - [Train your own Vicuna on Llama-2](./llm/vicuna-llama-2/)
327
- - [Self-Hosted Llama-2 Chatbot](./llm/llama-2/)
328
- - [Ollama: Quantized LLMs on CPUs](./llm/ollama/)
329
- - [LoRAX](./llm/lorax/)
330
- - [QLoRA](https://github.com/artidoro/qlora/pull/132)
331
- - [LLaMA-LoRA-Tuner](https://github.com/zetavg/LLaMA-LoRA-Tuner#run-on-a-cloud-service-via-skypilot)
332
- - [Tabby: Self-hosted AI coding assistant](https://github.com/TabbyML/tabby/blob/bed723fcedb44a6b867ce22a7b1f03d2f3531c1e/experimental/eval/skypilot.yaml)
333
- - [LocalGPT](./llm/localgpt)
334
- - [Falcon](./llm/falcon)
335
- - Add yours here & see more in [`llm/`](./llm)!
336
- - Framework examples: [Vector Database](./examples/vector_database/), [PyTorch DDP](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_torch.yaml), [DeepSpeed](./examples/deepspeed-multinode/sky.yaml), [JAX/Flax on TPU](https://github.com/skypilot-org/skypilot/blob/master/examples/tpu/tpuvm_mnist.yaml), [Stable Diffusion](https://github.com/skypilot-org/skypilot/tree/master/examples/stable_diffusion), [Detectron2](https://github.com/skypilot-org/skypilot/blob/master/examples/detectron2_docker.yaml), [Distributed](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_tf_app.py) [TensorFlow](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_app_storage.yaml), [Ray Train](examples/distributed_ray_train/ray_train.yaml), [NeMo](https://github.com/skypilot-org/skypilot/blob/master/examples/nemo/), [programmatic grid search](https://github.com/skypilot-org/skypilot/blob/master/examples/huggingface_glue_imdb_grid_search_app.py), [Docker](https://github.com/skypilot-org/skypilot/blob/master/examples/docker/echo_app.yaml), [Cog](https://github.com/skypilot-org/skypilot/blob/master/examples/cog/), [Unsloth](https://github.com/skypilot-org/skypilot/blob/master/examples/unsloth/unsloth.yaml), [Ollama](https://github.com/skypilot-org/skypilot/blob/master/llm/ollama), [llm.c](https://github.com/skypilot-org/skypilot/tree/master/llm/gpt-2), [Airflow](./examples/airflow/training_workflow) and [many more (`examples/`)](./examples).
337
-
338
- Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
323
+ Case studies and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
339
324
 
340
325
  Follow updates:
341
- - [Twitter](https://twitter.com/skypilot_org)
342
326
  - [Slack](http://slack.skypilot.co)
327
+ - [X / Twitter](https://twitter.com/skypilot_org)
328
+ - [LinkedIn](https://www.linkedin.com/company/skypilot-oss/)
343
329
  - [SkyPilot Blog](https://blog.skypilot.co/) ([Introductory blog post](https://blog.skypilot.co/introducing-skypilot/))
344
330
 
345
331
  Read the research:
346
332
  - [SkyPilot paper](https://www.usenix.org/system/files/nsdi23-yang-zongheng.pdf) and [talk](https://www.usenix.org/conference/nsdi23/presentation/yang-zongheng) (NSDI 2023)
347
333
  - [Sky Computing whitepaper](https://arxiv.org/abs/2205.07147)
348
334
  - [Sky Computing vision paper](https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s02-stoica.pdf) (HotOS 2021)
349
- - [Policy for Managed Spot Jobs](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
335
+ - [SkyServe: AI serving across regions and clouds](https://arxiv.org/pdf/2411.01438) (EuroSys 2025)
336
+ - [Managed jobs spot instance policy](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
350
337
 
351
338
  SkyPilot was initially started at the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see [Concept: Sky Computing](https://docs.skypilot.co/en/latest/sky-computing.html).
352
339
 
353
- ## Support and Questions
354
- We are excited to hear your feedback!
340
+ ## Questions and feedback
341
+ We are excited to hear your feedback:
355
342
  * For issues and feature requests, please [open a GitHub issue](https://github.com/skypilot-org/skypilot/issues/new).
356
343
  * For questions, please use [GitHub Discussions](https://github.com/skypilot-org/skypilot/discussions).
357
344
 
@@ -84,13 +84,13 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidst
84
84
  </p>
85
85
 
86
86
 
87
- ## Getting Started
87
+ ## Getting started
88
88
  You can find our documentation [here](https://docs.skypilot.co/).
89
89
  - [Installation](https://docs.skypilot.co/en/latest/getting-started/installation.html)
90
90
  - [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html)
91
91
  - [CLI reference](https://docs.skypilot.co/en/latest/reference/cli.html)
92
92
 
93
- ## SkyPilot in 1 Minute
93
+ ## SkyPilot in 1 minute
94
94
 
95
95
  A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.
96
96
 
@@ -142,59 +142,46 @@ SkyPilot then performs the heavy-lifting for you, including:
142
142
  </p>
143
143
 
144
144
 
145
- Refer to [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
145
+ See [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
146
146
 
147
- ## More Information
147
+ ## Runnable examples
148
+
149
+ See [**SkyPilot examples**](https://docs.skypilot.co/en/docs-examples/examples/index.html) that cover: development, training, serving, LLM models, AI apps, and common frameworks.
150
+
151
+ Latest featured examples:
152
+
153
+ | Task | Examples |
154
+ |----------|----------|
155
+ | Training | [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.html), [Finetune Llama 3](https://docs.skypilot.co/en/latest/examples/training/llama-3_1-finetuning.html), [NeMo](https://docs.skypilot.co/en/latest/examples/training/nemo.html), [Ray](https://docs.skypilot.co/en/latest/examples/training/ray.html), [Unsloth](https://docs.skypilot.co/en/latest/examples/training/unsloth.html), [Jax/TPU](https://docs.skypilot.co/en/latest/examples/training/tpu.html) |
156
+ | Serving | [vLLM](https://docs.skypilot.co/en/latest/examples/serving/vllm.html), [SGLang](https://docs.skypilot.co/en/latest/examples/serving/sglang.html), [Ollama](https://docs.skypilot.co/en/latest/examples/serving/ollama.html) |
157
+ | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 3](https://docs.skypilot.co/en/latest/examples/models/llama-3.html), [CodeLlama](https://docs.skypilot.co/en/latest/examples/models/codellama.html), [Qwen](https://docs.skypilot.co/en/latest/examples/models/qwen.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
158
+ | AI apps | [RAG](https://docs.skypilot.co/en/latest/examples/applications/rag.html), [vector databases](https://docs.skypilot.co/en/latest/examples/applications/vector_database.html) (ChromaDB, CLIP) |
159
+ | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html) |
160
+
161
+ Source files and more examples can be found in [`llm/`](https://github.com/skypilot-org/skypilot/tree/master/llm) and [`examples/`](https://github.com/skypilot-org/skypilot/tree/master/examples).
162
+
163
+ ## More information
148
164
  To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
149
165
 
150
- <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
151
- Runnable examples:
152
- - [**AI Gallery**](https://docs.skypilot.co/en/latest/gallery/index.html)
153
- - LLMs on SkyPilot
154
- - [DeepSeek-R1](./llm/deepseek-r1/)
155
- - [DeepSeek-Janus](./llm/deepseek-janus/)
156
- - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
157
- - [Pixtral](./llm/pixtral/)
158
- - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
159
- - [GPT-2 via `llm.c`](./llm/gpt-2/)
160
- - [Llama 3](./llm/llama-3/)
161
- - [Qwen](./llm/qwen/)
162
- - [Databricks DBRX](./llm/dbrx/)
163
- - [Gemma](./llm/gemma/)
164
- - [Mixtral 8x7B](./llm/mixtral/); [Mistral 7B](https://docs.mistral.ai/self-deployment/skypilot/) (from official Mistral team)
165
- - [Code Llama](./llm/codellama/)
166
- - [vLLM: Serving LLM 24x Faster On the Cloud](./llm/vllm/) (from official vLLM team)
167
- - [SGLang: Fast and Expressive LLM Serving On the Cloud](./llm/sglang/) (from official SGLang team)
168
- - [Vicuna chatbots: Training & Serving](./llm/vicuna/) (from official Vicuna team)
169
- - [Train your own Vicuna on Llama-2](./llm/vicuna-llama-2/)
170
- - [Self-Hosted Llama-2 Chatbot](./llm/llama-2/)
171
- - [Ollama: Quantized LLMs on CPUs](./llm/ollama/)
172
- - [LoRAX](./llm/lorax/)
173
- - [QLoRA](https://github.com/artidoro/qlora/pull/132)
174
- - [LLaMA-LoRA-Tuner](https://github.com/zetavg/LLaMA-LoRA-Tuner#run-on-a-cloud-service-via-skypilot)
175
- - [Tabby: Self-hosted AI coding assistant](https://github.com/TabbyML/tabby/blob/bed723fcedb44a6b867ce22a7b1f03d2f3531c1e/experimental/eval/skypilot.yaml)
176
- - [LocalGPT](./llm/localgpt)
177
- - [Falcon](./llm/falcon)
178
- - Add yours here & see more in [`llm/`](./llm)!
179
- - Framework examples: [Vector Database](./examples/vector_database/), [PyTorch DDP](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_torch.yaml), [DeepSpeed](./examples/deepspeed-multinode/sky.yaml), [JAX/Flax on TPU](https://github.com/skypilot-org/skypilot/blob/master/examples/tpu/tpuvm_mnist.yaml), [Stable Diffusion](https://github.com/skypilot-org/skypilot/tree/master/examples/stable_diffusion), [Detectron2](https://github.com/skypilot-org/skypilot/blob/master/examples/detectron2_docker.yaml), [Distributed](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_tf_app.py) [TensorFlow](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_app_storage.yaml), [Ray Train](examples/distributed_ray_train/ray_train.yaml), [NeMo](https://github.com/skypilot-org/skypilot/blob/master/examples/nemo/), [programmatic grid search](https://github.com/skypilot-org/skypilot/blob/master/examples/huggingface_glue_imdb_grid_search_app.py), [Docker](https://github.com/skypilot-org/skypilot/blob/master/examples/docker/echo_app.yaml), [Cog](https://github.com/skypilot-org/skypilot/blob/master/examples/cog/), [Unsloth](https://github.com/skypilot-org/skypilot/blob/master/examples/unsloth/unsloth.yaml), [Ollama](https://github.com/skypilot-org/skypilot/blob/master/llm/ollama), [llm.c](https://github.com/skypilot-org/skypilot/tree/master/llm/gpt-2), [Airflow](./examples/airflow/training_workflow) and [many more (`examples/`)](./examples).
180
-
181
- Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
166
+ Case studies and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
182
167
 
183
168
  Follow updates:
184
- - [Twitter](https://twitter.com/skypilot_org)
185
169
  - [Slack](http://slack.skypilot.co)
170
+ - [X / Twitter](https://twitter.com/skypilot_org)
171
+ - [LinkedIn](https://www.linkedin.com/company/skypilot-oss/)
186
172
  - [SkyPilot Blog](https://blog.skypilot.co/) ([Introductory blog post](https://blog.skypilot.co/introducing-skypilot/))
187
173
 
188
174
  Read the research:
189
175
  - [SkyPilot paper](https://www.usenix.org/system/files/nsdi23-yang-zongheng.pdf) and [talk](https://www.usenix.org/conference/nsdi23/presentation/yang-zongheng) (NSDI 2023)
190
176
  - [Sky Computing whitepaper](https://arxiv.org/abs/2205.07147)
191
177
  - [Sky Computing vision paper](https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s02-stoica.pdf) (HotOS 2021)
192
- - [Policy for Managed Spot Jobs](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
178
+ - [SkyServe: AI serving across regions and clouds](https://arxiv.org/pdf/2411.01438) (EuroSys 2025)
179
+ - [Managed jobs spot instance policy](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
193
180
 
194
181
  SkyPilot was initially started at the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see [Concept: Sky Computing](https://docs.skypilot.co/en/latest/sky-computing.html).
195
182
 
196
- ## Support and Questions
197
- We are excited to hear your feedback!
183
+ ## Questions and feedback
184
+ We are excited to hear your feedback:
198
185
  * For issues and feature requests, please [open a GitHub issue](https://github.com/skypilot-org/skypilot/issues/new).
199
186
  * For questions, please use [GitHub Discussions](https://github.com/skypilot-org/skypilot/discussions).
200
187
 
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = '50bbf9162d3516d5eb4e59e071822a4f3c38622c'
8
+ _SKYPILOT_COMMIT_SHA = '296a22e868b9bdf1faccbe3effbfb858a5a05905'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20250303'
38
+ __version__ = '1.0.0.dev20250305'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -3823,6 +3823,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3823
3823
  follow: Whether to follow the logs.
3824
3824
  tail: The number of lines to display from the end of the
3825
3825
  log file. If 0, print all lines.
3826
+
3827
+ Returns:
3828
+ The exit code of the tail command. Returns code 100 if the job has
3829
+ failed. See exceptions.JobExitCode for possible return codes.
3826
3830
  """
3827
3831
  code = job_lib.JobLibCodeGen.tail_logs(job_id,
3828
3832
  managed_job_id=managed_job_id,
@@ -3856,7 +3860,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3856
3860
  job_id: Optional[int] = None,
3857
3861
  job_name: Optional[str] = None,
3858
3862
  controller: bool = False,
3859
- follow: bool = True) -> None:
3863
+ follow: bool = True) -> int:
3860
3864
  # if job_name is not None, job_id should be None
3861
3865
  assert job_name is None or job_id is None, (job_name, job_id)
3862
3866
  code = managed_jobs.ManagedJobCodeGen.stream_logs(
@@ -3869,13 +3873,17 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3869
3873
  signal.signal(signal.SIGTSTP, backend_utils.stop_handler)
3870
3874
 
3871
3875
  # Refer to the notes in tail_logs.
3872
- self.run_on_head(
3873
- handle,
3874
- code,
3875
- stream_logs=True,
3876
- process_stream=False,
3877
- ssh_mode=command_runner.SshMode.INTERACTIVE,
3878
- )
3876
+ try:
3877
+ returncode = self.run_on_head(
3878
+ handle,
3879
+ code,
3880
+ stream_logs=True,
3881
+ process_stream=False,
3882
+ ssh_mode=command_runner.SshMode.INTERACTIVE,
3883
+ )
3884
+ except SystemExit as e:
3885
+ returncode = e.code
3886
+ return returncode
3879
3887
 
3880
3888
  def sync_down_managed_job_logs(
3881
3889
  self,
@@ -1227,11 +1227,15 @@ def launch(
1227
1227
  clusters=[handle.get_cluster_name()])
1228
1228
  # job_id will be None if no job was submitted (e.g. no entrypoint
1229
1229
  # provided)
1230
+ returncode = 0
1230
1231
  if not detach_run and job_id is not None:
1231
- sdk.tail_logs(handle.get_cluster_name(), job_id, follow=True)
1232
+ returncode = sdk.tail_logs(handle.get_cluster_name(),
1233
+ job_id,
1234
+ follow=True)
1232
1235
  click.secho(
1233
1236
  ux_utils.command_hint_messages(ux_utils.CommandHintType.CLUSTER_JOB,
1234
1237
  job_id, handle.get_cluster_name()))
1238
+ sys.exit(returncode)
1235
1239
 
1236
1240
 
1237
1241
  @cli.command(cls=_DocumentedCodeCommand)
@@ -1377,7 +1381,8 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
1377
1381
  job_id_handle = _async_call_or_wait(request_id, async_call, 'sky.exec')
1378
1382
  if not async_call and not detach_run:
1379
1383
  job_id, _ = job_id_handle
1380
- sdk.tail_logs(cluster, job_id, follow=True)
1384
+ returncode = sdk.tail_logs(cluster, job_id, follow=True)
1385
+ sys.exit(returncode)
1381
1386
 
1382
1387
 
1383
1388
  def _handle_jobs_queue_request(
@@ -2121,12 +2126,20 @@ def logs(
2121
2126
  one job_id can be provided.
2122
2127
 
2123
2128
  2. If ``--status`` is specified, print the status of the job and exit with
2124
- returncode 0 if the job succeeded, or 1 otherwise. At most one job_id can
2125
- be specified.
2129
+ returncode 0 if the job succeeded. At most one job_id can
2130
+ be specified. Other possible return codes:
2131
+
2132
+ - 100: job failed.
2133
+ - 101: job not finished.
2134
+ - 102: job not found.
2135
+ - 103: job was cancelled by the user.
2126
2136
 
2127
2137
  3. If ``--sync-down`` is specified, the logs of the job will be downloaded
2128
2138
  from the cluster and saved to the local machine under
2129
- ``~/sky_logs``. Mulitple job_ids can be specified.
2139
+ ``~/sky_logs``. Multiple job_ids can be specified.
2140
+
2141
+ 4. If the job fails or fetching the logs fails, the command will exit with
2142
+ a non-zero return code.
2130
2143
  """
2131
2144
  if sync_down and status:
2132
2145
  raise click.UsageError(
@@ -2174,17 +2187,18 @@ def logs(
2174
2187
  # it will return {None: None}.
2175
2188
  if job_id is None:
2176
2189
  click.secho(f'No job found on cluster {cluster!r}.', fg='red')
2177
- sys.exit(1)
2190
+ sys.exit(exceptions.JobExitCode.NOT_FOUND)
2178
2191
  job_status = list(job_statuses.values())[0]
2179
2192
  job_status_str = job_status.value if job_status is not None else 'None'
2180
2193
  click.echo(f'Job {job_id}: {job_status_str}')
2181
2194
  if job_status == job_lib.JobStatus.SUCCEEDED:
2182
2195
  return
2183
2196
  else:
2197
+ returncode = exceptions.JobExitCode.from_job_status(job_status)
2184
2198
  if job_status is None:
2185
2199
  id_str = '' if job_id is None else f'{job_id} '
2186
2200
  click.secho(f'Job {id_str}not found', fg='red')
2187
- sys.exit(1)
2201
+ sys.exit(returncode)
2188
2202
 
2189
2203
  job_str = f'job {job_id}'
2190
2204
  if job_id is None:
@@ -2194,7 +2208,8 @@ def logs(
2194
2208
  f'{colorama.Style.RESET_ALL}')
2195
2209
 
2196
2210
  # Stream logs from the server.
2197
- sdk.tail_logs(cluster, job_id, follow, tail=tail)
2211
+ returncode = sdk.tail_logs(cluster, job_id, follow, tail=tail)
2212
+ sys.exit(returncode)
2198
2213
 
2199
2214
 
2200
2215
  @cli.command()
@@ -3019,7 +3034,7 @@ def _down_or_stop_clusters(
3019
3034
  # with the termination.
3020
3035
  hint_or_raise(controller_name, purge)
3021
3036
  except (exceptions.ClusterOwnerIdentityMismatchError,
3022
- RuntimeError) as e:
3037
+ exceptions.NotSupportedError, RuntimeError) as e:
3023
3038
  if purge:
3024
3039
  click.echo(common_utils.format_exception(e))
3025
3040
  else:
@@ -3729,6 +3744,7 @@ def storage_delete(names: List[str], all: bool, yes: bool, async_call: bool): #
3729
3744
  if not storages:
3730
3745
  click.echo('No storage(s) to delete.')
3731
3746
  return
3747
+ names = [storage['name'] for storage in storages]
3732
3748
  else:
3733
3749
  names = _get_glob_storages(names)
3734
3750
  if names:
@@ -3893,10 +3909,11 @@ def jobs_launch(
3893
3909
  'sky.jobs.launch')
3894
3910
  if not async_call and not detach_run:
3895
3911
  job_id = job_id_handle[0]
3896
- managed_jobs.tail_logs(name=None,
3897
- job_id=job_id,
3898
- follow=True,
3899
- controller=False)
3912
+ returncode = managed_jobs.tail_logs(name=None,
3913
+ job_id=job_id,
3914
+ follow=True,
3915
+ controller=False)
3916
+ sys.exit(returncode)
3900
3917
 
3901
3918
 
3902
3919
  @jobs.command('queue', cls=_DocumentedCodeCommand)
@@ -4127,11 +4144,12 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
4127
4144
  logger.info(f'{fore.CYAN}Job {job} logs{controller_str}: '
4128
4145
  f'{log_local_path}{style.RESET_ALL}')
4129
4146
  else:
4130
- managed_jobs.tail_logs(name=name,
4131
- job_id=job_id,
4132
- follow=follow,
4133
- controller=controller,
4134
- refresh=refresh)
4147
+ returncode = managed_jobs.tail_logs(name=name,
4148
+ job_id=job_id,
4149
+ follow=follow,
4150
+ controller=controller,
4151
+ refresh=refresh)
4152
+ sys.exit(returncode)
4135
4153
  except exceptions.ClusterNotUpError:
4136
4154
  with ux_utils.print_exception_no_traceback():
4137
4155
  raise
@@ -1227,11 +1227,15 @@ def launch(
1227
1227
  clusters=[handle.get_cluster_name()])
1228
1228
  # job_id will be None if no job was submitted (e.g. no entrypoint
1229
1229
  # provided)
1230
+ returncode = 0
1230
1231
  if not detach_run and job_id is not None:
1231
- sdk.tail_logs(handle.get_cluster_name(), job_id, follow=True)
1232
+ returncode = sdk.tail_logs(handle.get_cluster_name(),
1233
+ job_id,
1234
+ follow=True)
1232
1235
  click.secho(
1233
1236
  ux_utils.command_hint_messages(ux_utils.CommandHintType.CLUSTER_JOB,
1234
1237
  job_id, handle.get_cluster_name()))
1238
+ sys.exit(returncode)
1235
1239
 
1236
1240
 
1237
1241
  @cli.command(cls=_DocumentedCodeCommand)
@@ -1377,7 +1381,8 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
1377
1381
  job_id_handle = _async_call_or_wait(request_id, async_call, 'sky.exec')
1378
1382
  if not async_call and not detach_run:
1379
1383
  job_id, _ = job_id_handle
1380
- sdk.tail_logs(cluster, job_id, follow=True)
1384
+ returncode = sdk.tail_logs(cluster, job_id, follow=True)
1385
+ sys.exit(returncode)
1381
1386
 
1382
1387
 
1383
1388
  def _handle_jobs_queue_request(
@@ -2121,12 +2126,20 @@ def logs(
2121
2126
  one job_id can be provided.
2122
2127
 
2123
2128
  2. If ``--status`` is specified, print the status of the job and exit with
2124
- returncode 0 if the job succeeded, or 1 otherwise. At most one job_id can
2125
- be specified.
2129
+ returncode 0 if the job succeeded. At most one job_id can
2130
+ be specified. Other possible return codes:
2131
+
2132
+ - 100: job failed.
2133
+ - 101: job not finished.
2134
+ - 102: job not found.
2135
+ - 103: job was cancelled by the user.
2126
2136
 
2127
2137
  3. If ``--sync-down`` is specified, the logs of the job will be downloaded
2128
2138
  from the cluster and saved to the local machine under
2129
- ``~/sky_logs``. Mulitple job_ids can be specified.
2139
+ ``~/sky_logs``. Multiple job_ids can be specified.
2140
+
2141
+ 4. If the job fails or fetching the logs fails, the command will exit with
2142
+ a non-zero return code.
2130
2143
  """
2131
2144
  if sync_down and status:
2132
2145
  raise click.UsageError(
@@ -2174,17 +2187,18 @@ def logs(
2174
2187
  # it will return {None: None}.
2175
2188
  if job_id is None:
2176
2189
  click.secho(f'No job found on cluster {cluster!r}.', fg='red')
2177
- sys.exit(1)
2190
+ sys.exit(exceptions.JobExitCode.NOT_FOUND)
2178
2191
  job_status = list(job_statuses.values())[0]
2179
2192
  job_status_str = job_status.value if job_status is not None else 'None'
2180
2193
  click.echo(f'Job {job_id}: {job_status_str}')
2181
2194
  if job_status == job_lib.JobStatus.SUCCEEDED:
2182
2195
  return
2183
2196
  else:
2197
+ returncode = exceptions.JobExitCode.from_job_status(job_status)
2184
2198
  if job_status is None:
2185
2199
  id_str = '' if job_id is None else f'{job_id} '
2186
2200
  click.secho(f'Job {id_str}not found', fg='red')
2187
- sys.exit(1)
2201
+ sys.exit(returncode)
2188
2202
 
2189
2203
  job_str = f'job {job_id}'
2190
2204
  if job_id is None:
@@ -2194,7 +2208,8 @@ def logs(
2194
2208
  f'{colorama.Style.RESET_ALL}')
2195
2209
 
2196
2210
  # Stream logs from the server.
2197
- sdk.tail_logs(cluster, job_id, follow, tail=tail)
2211
+ returncode = sdk.tail_logs(cluster, job_id, follow, tail=tail)
2212
+ sys.exit(returncode)
2198
2213
 
2199
2214
 
2200
2215
  @cli.command()
@@ -3019,7 +3034,7 @@ def _down_or_stop_clusters(
3019
3034
  # with the termination.
3020
3035
  hint_or_raise(controller_name, purge)
3021
3036
  except (exceptions.ClusterOwnerIdentityMismatchError,
3022
- RuntimeError) as e:
3037
+ exceptions.NotSupportedError, RuntimeError) as e:
3023
3038
  if purge:
3024
3039
  click.echo(common_utils.format_exception(e))
3025
3040
  else:
@@ -3729,6 +3744,7 @@ def storage_delete(names: List[str], all: bool, yes: bool, async_call: bool): #
3729
3744
  if not storages:
3730
3745
  click.echo('No storage(s) to delete.')
3731
3746
  return
3747
+ names = [storage['name'] for storage in storages]
3732
3748
  else:
3733
3749
  names = _get_glob_storages(names)
3734
3750
  if names:
@@ -3893,10 +3909,11 @@ def jobs_launch(
3893
3909
  'sky.jobs.launch')
3894
3910
  if not async_call and not detach_run:
3895
3911
  job_id = job_id_handle[0]
3896
- managed_jobs.tail_logs(name=None,
3897
- job_id=job_id,
3898
- follow=True,
3899
- controller=False)
3912
+ returncode = managed_jobs.tail_logs(name=None,
3913
+ job_id=job_id,
3914
+ follow=True,
3915
+ controller=False)
3916
+ sys.exit(returncode)
3900
3917
 
3901
3918
 
3902
3919
  @jobs.command('queue', cls=_DocumentedCodeCommand)
@@ -4127,11 +4144,12 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
4127
4144
  logger.info(f'{fore.CYAN}Job {job} logs{controller_str}: '
4128
4145
  f'{log_local_path}{style.RESET_ALL}')
4129
4146
  else:
4130
- managed_jobs.tail_logs(name=name,
4131
- job_id=job_id,
4132
- follow=follow,
4133
- controller=controller,
4134
- refresh=refresh)
4147
+ returncode = managed_jobs.tail_logs(name=name,
4148
+ job_id=job_id,
4149
+ follow=follow,
4150
+ controller=controller,
4151
+ refresh=refresh)
4152
+ sys.exit(returncode)
4135
4153
  except exceptions.ClusterNotUpError:
4136
4154
  with ux_utils.print_exception_no_traceback():
4137
4155
  raise