skypilot-nightly 1.0.0.dev20251009__py3-none-any.whl → 1.0.0.dev20251107__py3-none-any.whl

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.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (231) hide show
  1. sky/__init__.py +6 -2
  2. sky/adaptors/aws.py +25 -7
  3. sky/adaptors/coreweave.py +278 -0
  4. sky/adaptors/kubernetes.py +64 -0
  5. sky/adaptors/shadeform.py +89 -0
  6. sky/admin_policy.py +20 -0
  7. sky/authentication.py +59 -149
  8. sky/backends/backend_utils.py +104 -63
  9. sky/backends/cloud_vm_ray_backend.py +84 -39
  10. sky/catalog/data_fetchers/fetch_runpod.py +698 -0
  11. sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
  12. sky/catalog/kubernetes_catalog.py +24 -28
  13. sky/catalog/runpod_catalog.py +5 -1
  14. sky/catalog/shadeform_catalog.py +165 -0
  15. sky/check.py +25 -13
  16. sky/client/cli/command.py +335 -86
  17. sky/client/cli/flags.py +4 -2
  18. sky/client/cli/table_utils.py +17 -9
  19. sky/client/sdk.py +59 -12
  20. sky/cloud_stores.py +73 -0
  21. sky/clouds/__init__.py +2 -0
  22. sky/clouds/aws.py +71 -16
  23. sky/clouds/azure.py +12 -5
  24. sky/clouds/cloud.py +19 -9
  25. sky/clouds/cudo.py +12 -5
  26. sky/clouds/do.py +4 -1
  27. sky/clouds/fluidstack.py +12 -5
  28. sky/clouds/gcp.py +12 -5
  29. sky/clouds/hyperbolic.py +12 -5
  30. sky/clouds/ibm.py +12 -5
  31. sky/clouds/kubernetes.py +62 -25
  32. sky/clouds/lambda_cloud.py +12 -5
  33. sky/clouds/nebius.py +12 -5
  34. sky/clouds/oci.py +12 -5
  35. sky/clouds/paperspace.py +4 -1
  36. sky/clouds/primeintellect.py +4 -1
  37. sky/clouds/runpod.py +12 -5
  38. sky/clouds/scp.py +12 -5
  39. sky/clouds/seeweb.py +4 -1
  40. sky/clouds/shadeform.py +400 -0
  41. sky/clouds/ssh.py +4 -2
  42. sky/clouds/vast.py +12 -5
  43. sky/clouds/vsphere.py +4 -1
  44. sky/core.py +12 -11
  45. sky/dashboard/out/404.html +1 -1
  46. sky/dashboard/out/_next/static/chunks/1141-e6aa9ab418717c59.js +11 -0
  47. sky/dashboard/out/_next/static/chunks/{1871-49141c317f3a9020.js → 1871-74503c8e80fd253b.js} +1 -1
  48. sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
  49. sky/dashboard/out/_next/static/chunks/2755.fff53c4a3fcae910.js +26 -0
  50. sky/dashboard/out/_next/static/chunks/3294.72362fa129305b19.js +1 -0
  51. sky/dashboard/out/_next/static/chunks/{3785.a19328ba41517b8b.js → 3785.ad6adaa2a0fa9768.js} +1 -1
  52. sky/dashboard/out/_next/static/chunks/{4725.10f7a9a5d3ea8208.js → 4725.a830b5c9e7867c92.js} +1 -1
  53. sky/dashboard/out/_next/static/chunks/6856-ef8ba11f96d8c4a3.js +1 -0
  54. sky/dashboard/out/_next/static/chunks/6990-32b6e2d3822301fa.js +1 -0
  55. sky/dashboard/out/_next/static/chunks/7615-3301e838e5f25772.js +1 -0
  56. sky/dashboard/out/_next/static/chunks/8969-1e4613c651bf4051.js +1 -0
  57. sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
  58. sky/dashboard/out/_next/static/chunks/9353-cff34f7e773b2e2b.js +1 -0
  59. sky/dashboard/out/_next/static/chunks/9360.7310982cf5a0dc79.js +31 -0
  60. sky/dashboard/out/_next/static/chunks/pages/{_app-ce361c6959bc2001.js → _app-bde01e4a2beec258.js} +1 -1
  61. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-c736ead69c2d86ec.js +16 -0
  62. sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-477555ab7c0b13d8.js → [cluster]-a37d2063af475a1c.js} +1 -1
  63. sky/dashboard/out/_next/static/chunks/pages/{clusters-2f61f65487f6d8ff.js → clusters-d44859594e6f8064.js} +1 -1
  64. sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-553b8b5cb65e100b.js → [context]-c0b5935149902e6f.js} +1 -1
  65. sky/dashboard/out/_next/static/chunks/pages/{infra-910a22500c50596f.js → infra-aed0ea19df7cf961.js} +1 -1
  66. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-5796e8d6aea291a0.js +16 -0
  67. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/{[pool]-bc979970c247d8f3.js → [pool]-6edeb7d06032adfc.js} +2 -2
  68. sky/dashboard/out/_next/static/chunks/pages/{jobs-a35a9dc3c5ccd657.js → jobs-479dde13399cf270.js} +1 -1
  69. sky/dashboard/out/_next/static/chunks/pages/{users-98d2ed979084162a.js → users-5ab3b907622cf0fe.js} +1 -1
  70. sky/dashboard/out/_next/static/chunks/pages/{volumes-835d14ba94808f79.js → volumes-b84b948ff357c43e.js} +1 -1
  71. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-e8688c35c06f0ac5.js → [name]-c5a3eeee1c218af1.js} +1 -1
  72. sky/dashboard/out/_next/static/chunks/pages/{workspaces-69c80d677d3c2949.js → workspaces-22b23febb3e89ce1.js} +1 -1
  73. sky/dashboard/out/_next/static/chunks/webpack-2679be77fc08a2f8.js +1 -0
  74. sky/dashboard/out/_next/static/css/0748ce22df867032.css +3 -0
  75. sky/dashboard/out/_next/static/zB0ed6ge_W1MDszVHhijS/_buildManifest.js +1 -0
  76. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  77. sky/dashboard/out/clusters/[cluster].html +1 -1
  78. sky/dashboard/out/clusters.html +1 -1
  79. sky/dashboard/out/config.html +1 -1
  80. sky/dashboard/out/index.html +1 -1
  81. sky/dashboard/out/infra/[context].html +1 -1
  82. sky/dashboard/out/infra.html +1 -1
  83. sky/dashboard/out/jobs/[job].html +1 -1
  84. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  85. sky/dashboard/out/jobs.html +1 -1
  86. sky/dashboard/out/users.html +1 -1
  87. sky/dashboard/out/volumes.html +1 -1
  88. sky/dashboard/out/workspace/new.html +1 -1
  89. sky/dashboard/out/workspaces/[name].html +1 -1
  90. sky/dashboard/out/workspaces.html +1 -1
  91. sky/data/data_utils.py +92 -1
  92. sky/data/mounting_utils.py +143 -19
  93. sky/data/storage.py +168 -11
  94. sky/exceptions.py +13 -1
  95. sky/execution.py +13 -0
  96. sky/global_user_state.py +189 -113
  97. sky/jobs/client/sdk.py +32 -10
  98. sky/jobs/client/sdk_async.py +9 -3
  99. sky/jobs/constants.py +3 -1
  100. sky/jobs/controller.py +164 -192
  101. sky/jobs/file_content_utils.py +80 -0
  102. sky/jobs/log_gc.py +201 -0
  103. sky/jobs/recovery_strategy.py +59 -82
  104. sky/jobs/scheduler.py +20 -9
  105. sky/jobs/server/core.py +105 -23
  106. sky/jobs/server/server.py +40 -28
  107. sky/jobs/server/utils.py +32 -11
  108. sky/jobs/state.py +588 -110
  109. sky/jobs/utils.py +442 -209
  110. sky/logs/agent.py +1 -1
  111. sky/metrics/utils.py +45 -6
  112. sky/optimizer.py +1 -1
  113. sky/provision/__init__.py +7 -0
  114. sky/provision/aws/instance.py +2 -1
  115. sky/provision/azure/instance.py +2 -1
  116. sky/provision/common.py +2 -0
  117. sky/provision/cudo/instance.py +2 -1
  118. sky/provision/do/instance.py +2 -1
  119. sky/provision/fluidstack/instance.py +4 -3
  120. sky/provision/gcp/instance.py +2 -1
  121. sky/provision/hyperbolic/instance.py +2 -1
  122. sky/provision/instance_setup.py +10 -2
  123. sky/provision/kubernetes/constants.py +0 -1
  124. sky/provision/kubernetes/instance.py +222 -89
  125. sky/provision/kubernetes/network.py +12 -8
  126. sky/provision/kubernetes/utils.py +114 -53
  127. sky/provision/kubernetes/volume.py +5 -4
  128. sky/provision/lambda_cloud/instance.py +2 -1
  129. sky/provision/nebius/instance.py +2 -1
  130. sky/provision/oci/instance.py +2 -1
  131. sky/provision/paperspace/instance.py +2 -1
  132. sky/provision/provisioner.py +11 -2
  133. sky/provision/runpod/instance.py +2 -1
  134. sky/provision/scp/instance.py +2 -1
  135. sky/provision/seeweb/instance.py +3 -3
  136. sky/provision/shadeform/__init__.py +11 -0
  137. sky/provision/shadeform/config.py +12 -0
  138. sky/provision/shadeform/instance.py +351 -0
  139. sky/provision/shadeform/shadeform_utils.py +83 -0
  140. sky/provision/vast/instance.py +2 -1
  141. sky/provision/vsphere/instance.py +2 -1
  142. sky/resources.py +1 -1
  143. sky/schemas/api/responses.py +9 -5
  144. sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
  145. sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
  146. sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
  147. sky/schemas/generated/jobsv1_pb2.py +52 -52
  148. sky/schemas/generated/jobsv1_pb2.pyi +4 -2
  149. sky/schemas/generated/managed_jobsv1_pb2.py +39 -35
  150. sky/schemas/generated/managed_jobsv1_pb2.pyi +21 -5
  151. sky/serve/client/impl.py +11 -3
  152. sky/serve/replica_managers.py +5 -2
  153. sky/serve/serve_utils.py +9 -2
  154. sky/serve/server/impl.py +7 -2
  155. sky/serve/server/server.py +18 -15
  156. sky/serve/service.py +2 -2
  157. sky/server/auth/oauth2_proxy.py +2 -5
  158. sky/server/common.py +31 -28
  159. sky/server/constants.py +5 -1
  160. sky/server/daemons.py +27 -19
  161. sky/server/requests/executor.py +138 -74
  162. sky/server/requests/payloads.py +9 -1
  163. sky/server/requests/preconditions.py +13 -10
  164. sky/server/requests/request_names.py +120 -0
  165. sky/server/requests/requests.py +485 -153
  166. sky/server/requests/serializers/decoders.py +26 -13
  167. sky/server/requests/serializers/encoders.py +56 -11
  168. sky/server/requests/threads.py +106 -0
  169. sky/server/rest.py +70 -18
  170. sky/server/server.py +283 -104
  171. sky/server/stream_utils.py +233 -59
  172. sky/server/uvicorn.py +18 -17
  173. sky/setup_files/alembic.ini +4 -0
  174. sky/setup_files/dependencies.py +32 -13
  175. sky/sky_logging.py +0 -2
  176. sky/skylet/constants.py +30 -7
  177. sky/skylet/events.py +7 -0
  178. sky/skylet/log_lib.py +8 -2
  179. sky/skylet/log_lib.pyi +1 -1
  180. sky/skylet/services.py +26 -13
  181. sky/skylet/subprocess_daemon.py +103 -29
  182. sky/skypilot_config.py +87 -75
  183. sky/ssh_node_pools/server.py +9 -8
  184. sky/task.py +67 -54
  185. sky/templates/kubernetes-ray.yml.j2 +8 -1
  186. sky/templates/nebius-ray.yml.j2 +1 -0
  187. sky/templates/shadeform-ray.yml.j2 +72 -0
  188. sky/templates/websocket_proxy.py +142 -12
  189. sky/users/permission.py +8 -1
  190. sky/utils/admin_policy_utils.py +16 -3
  191. sky/utils/asyncio_utils.py +78 -0
  192. sky/utils/auth_utils.py +153 -0
  193. sky/utils/cli_utils/status_utils.py +8 -2
  194. sky/utils/command_runner.py +11 -0
  195. sky/utils/common.py +3 -1
  196. sky/utils/common_utils.py +7 -4
  197. sky/utils/context.py +57 -51
  198. sky/utils/context_utils.py +30 -12
  199. sky/utils/controller_utils.py +35 -8
  200. sky/utils/db/db_utils.py +37 -10
  201. sky/utils/db/migration_utils.py +8 -4
  202. sky/utils/locks.py +24 -6
  203. sky/utils/resource_checker.py +4 -1
  204. sky/utils/resources_utils.py +53 -29
  205. sky/utils/schemas.py +23 -4
  206. sky/utils/subprocess_utils.py +17 -4
  207. sky/volumes/server/server.py +7 -6
  208. sky/workspaces/server.py +13 -12
  209. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/METADATA +306 -55
  210. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/RECORD +215 -195
  211. sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js +0 -1
  212. sky/dashboard/out/_next/static/chunks/1141-3b40c39626f99c89.js +0 -11
  213. sky/dashboard/out/_next/static/chunks/2755.97300e1362fe7c98.js +0 -26
  214. sky/dashboard/out/_next/static/chunks/3015-8d748834fcc60b46.js +0 -1
  215. sky/dashboard/out/_next/static/chunks/3294.1fafbf42b3bcebff.js +0 -1
  216. sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
  217. sky/dashboard/out/_next/static/chunks/6856-5fdc9b851a18acdb.js +0 -1
  218. sky/dashboard/out/_next/static/chunks/6990-f6818c84ed8f1c86.js +0 -1
  219. sky/dashboard/out/_next/static/chunks/8969-66237729cdf9749e.js +0 -1
  220. sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
  221. sky/dashboard/out/_next/static/chunks/9360.71e83b2ddc844ec2.js +0 -31
  222. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-8f058b0346db2aff.js +0 -16
  223. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-4f7079dcab6ed653.js +0 -16
  224. sky/dashboard/out/_next/static/chunks/webpack-6a5ddd0184bfa22c.js +0 -1
  225. sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
  226. sky/dashboard/out/_next/static/hIViZcQBkn0HE8SpaSsUU/_buildManifest.js +0 -1
  227. /sky/dashboard/out/_next/static/{hIViZcQBkn0HE8SpaSsUU → zB0ed6ge_W1MDszVHhijS}/_ssgManifest.js +0 -0
  228. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/WHEEL +0 -0
  229. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/entry_points.txt +0 -0
  230. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/licenses/LICENSE +0 -0
  231. {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20251009
3
+ Version: 1.0.0.dev20251107
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -44,6 +44,7 @@ Requires-Dist: psutil
44
44
  Requires-Dist: pulp
45
45
  Requires-Dist: pyyaml!=5.4.*,>3.13
46
46
  Requires-Dist: ijson
47
+ Requires-Dist: orjson
47
48
  Requires-Dist: requests
48
49
  Requires-Dist: uvicorn[standard]<0.36.0,>=0.33.0
49
50
  Requires-Dist: fastapi
@@ -66,13 +67,22 @@ Requires-Dist: gitpython
66
67
  Requires-Dist: types-paramiko
67
68
  Requires-Dist: alembic
68
69
  Requires-Dist: aiohttp
69
- Requires-Dist: aiosqlite
70
70
  Requires-Dist: anyio
71
71
  Provides-Extra: aws
72
72
  Requires-Dist: awscli>=1.27.10; extra == "aws"
73
73
  Requires-Dist: botocore>=1.29.10; extra == "aws"
74
74
  Requires-Dist: boto3>=1.26.1; extra == "aws"
75
75
  Requires-Dist: colorama<0.4.5; extra == "aws"
76
+ Requires-Dist: casbin; extra == "aws"
77
+ Requires-Dist: sqlalchemy_adapter; extra == "aws"
78
+ Requires-Dist: passlib; extra == "aws"
79
+ Requires-Dist: pyjwt; extra == "aws"
80
+ Requires-Dist: aiohttp; extra == "aws"
81
+ Requires-Dist: anyio; extra == "aws"
82
+ Requires-Dist: grpcio>=1.63.0; extra == "aws"
83
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "aws"
84
+ Requires-Dist: aiosqlite; extra == "aws"
85
+ Requires-Dist: greenlet; extra == "aws"
76
86
  Provides-Extra: azure
77
87
  Requires-Dist: azure-cli>=2.65.0; extra == "azure"
78
88
  Requires-Dist: azure-core>=1.31.0; extra == "azure"
@@ -82,56 +92,251 @@ Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "azure"
82
92
  Requires-Dist: azure-storage-blob>=12.23.1; extra == "azure"
83
93
  Requires-Dist: msgraph-sdk; extra == "azure"
84
94
  Requires-Dist: msrestazure; extra == "azure"
95
+ Requires-Dist: casbin; extra == "azure"
96
+ Requires-Dist: sqlalchemy_adapter; extra == "azure"
97
+ Requires-Dist: passlib; extra == "azure"
98
+ Requires-Dist: pyjwt; extra == "azure"
99
+ Requires-Dist: aiohttp; extra == "azure"
100
+ Requires-Dist: anyio; extra == "azure"
101
+ Requires-Dist: grpcio>=1.63.0; extra == "azure"
102
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "azure"
103
+ Requires-Dist: aiosqlite; extra == "azure"
104
+ Requires-Dist: greenlet; extra == "azure"
85
105
  Provides-Extra: gcp
86
106
  Requires-Dist: google-api-python-client>=2.69.0; extra == "gcp"
87
107
  Requires-Dist: google-cloud-storage; extra == "gcp"
88
108
  Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "gcp"
109
+ Requires-Dist: casbin; extra == "gcp"
110
+ Requires-Dist: sqlalchemy_adapter; extra == "gcp"
111
+ Requires-Dist: passlib; extra == "gcp"
112
+ Requires-Dist: pyjwt; extra == "gcp"
113
+ Requires-Dist: aiohttp; extra == "gcp"
114
+ Requires-Dist: anyio; extra == "gcp"
115
+ Requires-Dist: grpcio>=1.63.0; extra == "gcp"
116
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "gcp"
117
+ Requires-Dist: aiosqlite; extra == "gcp"
118
+ Requires-Dist: greenlet; extra == "gcp"
89
119
  Provides-Extra: ibm
90
120
  Requires-Dist: ibm-cloud-sdk-core; extra == "ibm"
91
121
  Requires-Dist: ibm-vpc; extra == "ibm"
92
122
  Requires-Dist: ibm-platform-services>=0.48.0; extra == "ibm"
93
123
  Requires-Dist: ibm-cos-sdk; extra == "ibm"
94
124
  Requires-Dist: ray[default]>=2.6.1; extra == "ibm"
125
+ Requires-Dist: casbin; extra == "ibm"
126
+ Requires-Dist: sqlalchemy_adapter; extra == "ibm"
127
+ Requires-Dist: passlib; extra == "ibm"
128
+ Requires-Dist: pyjwt; extra == "ibm"
129
+ Requires-Dist: aiohttp; extra == "ibm"
130
+ Requires-Dist: anyio; extra == "ibm"
131
+ Requires-Dist: grpcio>=1.63.0; extra == "ibm"
132
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "ibm"
133
+ Requires-Dist: aiosqlite; extra == "ibm"
134
+ Requires-Dist: greenlet; extra == "ibm"
95
135
  Provides-Extra: docker
96
136
  Requires-Dist: docker; extra == "docker"
97
137
  Requires-Dist: ray[default]>=2.6.1; extra == "docker"
138
+ Requires-Dist: casbin; extra == "docker"
139
+ Requires-Dist: sqlalchemy_adapter; extra == "docker"
140
+ Requires-Dist: passlib; extra == "docker"
141
+ Requires-Dist: pyjwt; extra == "docker"
142
+ Requires-Dist: aiohttp; extra == "docker"
143
+ Requires-Dist: anyio; extra == "docker"
144
+ Requires-Dist: grpcio>=1.63.0; extra == "docker"
145
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "docker"
146
+ Requires-Dist: aiosqlite; extra == "docker"
147
+ Requires-Dist: greenlet; extra == "docker"
98
148
  Provides-Extra: lambda
149
+ Requires-Dist: casbin; extra == "lambda"
150
+ Requires-Dist: sqlalchemy_adapter; extra == "lambda"
151
+ Requires-Dist: passlib; extra == "lambda"
152
+ Requires-Dist: pyjwt; extra == "lambda"
153
+ Requires-Dist: aiohttp; extra == "lambda"
154
+ Requires-Dist: anyio; extra == "lambda"
155
+ Requires-Dist: grpcio>=1.63.0; extra == "lambda"
156
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "lambda"
157
+ Requires-Dist: aiosqlite; extra == "lambda"
158
+ Requires-Dist: greenlet; extra == "lambda"
99
159
  Provides-Extra: cloudflare
100
160
  Requires-Dist: awscli>=1.27.10; extra == "cloudflare"
101
161
  Requires-Dist: botocore>=1.29.10; extra == "cloudflare"
102
162
  Requires-Dist: boto3>=1.26.1; extra == "cloudflare"
103
163
  Requires-Dist: colorama<0.4.5; extra == "cloudflare"
164
+ Requires-Dist: casbin; extra == "cloudflare"
165
+ Requires-Dist: sqlalchemy_adapter; extra == "cloudflare"
166
+ Requires-Dist: passlib; extra == "cloudflare"
167
+ Requires-Dist: pyjwt; extra == "cloudflare"
168
+ Requires-Dist: aiohttp; extra == "cloudflare"
169
+ Requires-Dist: anyio; extra == "cloudflare"
170
+ Requires-Dist: grpcio>=1.63.0; extra == "cloudflare"
171
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "cloudflare"
172
+ Requires-Dist: aiosqlite; extra == "cloudflare"
173
+ Requires-Dist: greenlet; extra == "cloudflare"
174
+ Provides-Extra: coreweave
175
+ Requires-Dist: awscli>=1.27.10; extra == "coreweave"
176
+ Requires-Dist: botocore>=1.29.10; extra == "coreweave"
177
+ Requires-Dist: boto3>=1.26.1; extra == "coreweave"
178
+ Requires-Dist: colorama<0.4.5; extra == "coreweave"
179
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "coreweave"
180
+ Requires-Dist: websockets; extra == "coreweave"
181
+ Requires-Dist: python-dateutil; extra == "coreweave"
182
+ Requires-Dist: casbin; extra == "coreweave"
183
+ Requires-Dist: sqlalchemy_adapter; extra == "coreweave"
184
+ Requires-Dist: passlib; extra == "coreweave"
185
+ Requires-Dist: pyjwt; extra == "coreweave"
186
+ Requires-Dist: aiohttp; extra == "coreweave"
187
+ Requires-Dist: anyio; extra == "coreweave"
188
+ Requires-Dist: grpcio>=1.63.0; extra == "coreweave"
189
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "coreweave"
190
+ Requires-Dist: aiosqlite; extra == "coreweave"
191
+ Requires-Dist: greenlet; extra == "coreweave"
104
192
  Provides-Extra: scp
105
193
  Requires-Dist: ray[default]>=2.6.1; extra == "scp"
194
+ Requires-Dist: casbin; extra == "scp"
195
+ Requires-Dist: sqlalchemy_adapter; extra == "scp"
196
+ Requires-Dist: passlib; extra == "scp"
197
+ Requires-Dist: pyjwt; extra == "scp"
198
+ Requires-Dist: aiohttp; extra == "scp"
199
+ Requires-Dist: anyio; extra == "scp"
200
+ Requires-Dist: grpcio>=1.63.0; extra == "scp"
201
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "scp"
202
+ Requires-Dist: aiosqlite; extra == "scp"
203
+ Requires-Dist: greenlet; extra == "scp"
106
204
  Provides-Extra: oci
107
205
  Requires-Dist: oci; extra == "oci"
206
+ Requires-Dist: casbin; extra == "oci"
207
+ Requires-Dist: sqlalchemy_adapter; extra == "oci"
208
+ Requires-Dist: passlib; extra == "oci"
209
+ Requires-Dist: pyjwt; extra == "oci"
210
+ Requires-Dist: aiohttp; extra == "oci"
211
+ Requires-Dist: anyio; extra == "oci"
212
+ Requires-Dist: grpcio>=1.63.0; extra == "oci"
213
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "oci"
214
+ Requires-Dist: aiosqlite; extra == "oci"
215
+ Requires-Dist: greenlet; extra == "oci"
108
216
  Provides-Extra: kubernetes
109
217
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "kubernetes"
110
218
  Requires-Dist: websockets; extra == "kubernetes"
111
219
  Requires-Dist: python-dateutil; extra == "kubernetes"
220
+ Requires-Dist: casbin; extra == "kubernetes"
221
+ Requires-Dist: sqlalchemy_adapter; extra == "kubernetes"
222
+ Requires-Dist: passlib; extra == "kubernetes"
223
+ Requires-Dist: pyjwt; extra == "kubernetes"
224
+ Requires-Dist: aiohttp; extra == "kubernetes"
225
+ Requires-Dist: anyio; extra == "kubernetes"
226
+ Requires-Dist: grpcio>=1.63.0; extra == "kubernetes"
227
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "kubernetes"
228
+ Requires-Dist: aiosqlite; extra == "kubernetes"
229
+ Requires-Dist: greenlet; extra == "kubernetes"
112
230
  Provides-Extra: ssh
113
231
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "ssh"
114
232
  Requires-Dist: websockets; extra == "ssh"
115
233
  Requires-Dist: python-dateutil; extra == "ssh"
116
- Provides-Extra: remote
117
- Requires-Dist: grpcio>=1.63.0; extra == "remote"
118
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
234
+ Requires-Dist: casbin; extra == "ssh"
235
+ Requires-Dist: sqlalchemy_adapter; extra == "ssh"
236
+ Requires-Dist: passlib; extra == "ssh"
237
+ Requires-Dist: pyjwt; extra == "ssh"
238
+ Requires-Dist: aiohttp; extra == "ssh"
239
+ Requires-Dist: anyio; extra == "ssh"
240
+ Requires-Dist: grpcio>=1.63.0; extra == "ssh"
241
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "ssh"
242
+ Requires-Dist: aiosqlite; extra == "ssh"
243
+ Requires-Dist: greenlet; extra == "ssh"
119
244
  Provides-Extra: runpod
120
245
  Requires-Dist: runpod>=1.6.1; extra == "runpod"
121
246
  Requires-Dist: tomli; python_version < "3.11" and extra == "runpod"
247
+ Requires-Dist: casbin; extra == "runpod"
248
+ Requires-Dist: sqlalchemy_adapter; extra == "runpod"
249
+ Requires-Dist: passlib; extra == "runpod"
250
+ Requires-Dist: pyjwt; extra == "runpod"
251
+ Requires-Dist: aiohttp; extra == "runpod"
252
+ Requires-Dist: anyio; extra == "runpod"
253
+ Requires-Dist: grpcio>=1.63.0; extra == "runpod"
254
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "runpod"
255
+ Requires-Dist: aiosqlite; extra == "runpod"
256
+ Requires-Dist: greenlet; extra == "runpod"
122
257
  Provides-Extra: fluidstack
258
+ Requires-Dist: casbin; extra == "fluidstack"
259
+ Requires-Dist: sqlalchemy_adapter; extra == "fluidstack"
260
+ Requires-Dist: passlib; extra == "fluidstack"
261
+ Requires-Dist: pyjwt; extra == "fluidstack"
262
+ Requires-Dist: aiohttp; extra == "fluidstack"
263
+ Requires-Dist: anyio; extra == "fluidstack"
264
+ Requires-Dist: grpcio>=1.63.0; extra == "fluidstack"
265
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "fluidstack"
266
+ Requires-Dist: aiosqlite; extra == "fluidstack"
267
+ Requires-Dist: greenlet; extra == "fluidstack"
123
268
  Provides-Extra: cudo
124
269
  Requires-Dist: cudo-compute>=0.1.10; extra == "cudo"
270
+ Requires-Dist: casbin; extra == "cudo"
271
+ Requires-Dist: sqlalchemy_adapter; extra == "cudo"
272
+ Requires-Dist: passlib; extra == "cudo"
273
+ Requires-Dist: pyjwt; extra == "cudo"
274
+ Requires-Dist: aiohttp; extra == "cudo"
275
+ Requires-Dist: anyio; extra == "cudo"
276
+ Requires-Dist: grpcio>=1.63.0; extra == "cudo"
277
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "cudo"
278
+ Requires-Dist: aiosqlite; extra == "cudo"
279
+ Requires-Dist: greenlet; extra == "cudo"
125
280
  Provides-Extra: paperspace
281
+ Requires-Dist: casbin; extra == "paperspace"
282
+ Requires-Dist: sqlalchemy_adapter; extra == "paperspace"
283
+ Requires-Dist: passlib; extra == "paperspace"
284
+ Requires-Dist: pyjwt; extra == "paperspace"
285
+ Requires-Dist: aiohttp; extra == "paperspace"
286
+ Requires-Dist: anyio; extra == "paperspace"
287
+ Requires-Dist: grpcio>=1.63.0; extra == "paperspace"
288
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "paperspace"
289
+ Requires-Dist: aiosqlite; extra == "paperspace"
290
+ Requires-Dist: greenlet; extra == "paperspace"
126
291
  Provides-Extra: primeintellect
292
+ Requires-Dist: casbin; extra == "primeintellect"
293
+ Requires-Dist: sqlalchemy_adapter; extra == "primeintellect"
294
+ Requires-Dist: passlib; extra == "primeintellect"
295
+ Requires-Dist: pyjwt; extra == "primeintellect"
296
+ Requires-Dist: aiohttp; extra == "primeintellect"
297
+ Requires-Dist: anyio; extra == "primeintellect"
298
+ Requires-Dist: grpcio>=1.63.0; extra == "primeintellect"
299
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "primeintellect"
300
+ Requires-Dist: aiosqlite; extra == "primeintellect"
301
+ Requires-Dist: greenlet; extra == "primeintellect"
127
302
  Provides-Extra: do
128
303
  Requires-Dist: pydo>=0.3.0; extra == "do"
129
304
  Requires-Dist: azure-core>=1.24.0; extra == "do"
130
305
  Requires-Dist: azure-common; extra == "do"
306
+ Requires-Dist: casbin; extra == "do"
307
+ Requires-Dist: sqlalchemy_adapter; extra == "do"
308
+ Requires-Dist: passlib; extra == "do"
309
+ Requires-Dist: pyjwt; extra == "do"
310
+ Requires-Dist: aiohttp; extra == "do"
311
+ Requires-Dist: anyio; extra == "do"
312
+ Requires-Dist: grpcio>=1.63.0; extra == "do"
313
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "do"
314
+ Requires-Dist: aiosqlite; extra == "do"
315
+ Requires-Dist: greenlet; extra == "do"
131
316
  Provides-Extra: vast
132
317
  Requires-Dist: vastai-sdk>=0.1.12; extra == "vast"
318
+ Requires-Dist: casbin; extra == "vast"
319
+ Requires-Dist: sqlalchemy_adapter; extra == "vast"
320
+ Requires-Dist: passlib; extra == "vast"
321
+ Requires-Dist: pyjwt; extra == "vast"
322
+ Requires-Dist: aiohttp; extra == "vast"
323
+ Requires-Dist: anyio; extra == "vast"
324
+ Requires-Dist: grpcio>=1.63.0; extra == "vast"
325
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "vast"
326
+ Requires-Dist: aiosqlite; extra == "vast"
327
+ Requires-Dist: greenlet; extra == "vast"
133
328
  Provides-Extra: vsphere
134
329
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "vsphere"
330
+ Requires-Dist: casbin; extra == "vsphere"
331
+ Requires-Dist: sqlalchemy_adapter; extra == "vsphere"
332
+ Requires-Dist: passlib; extra == "vsphere"
333
+ Requires-Dist: pyjwt; extra == "vsphere"
334
+ Requires-Dist: aiohttp; extra == "vsphere"
335
+ Requires-Dist: anyio; extra == "vsphere"
336
+ Requires-Dist: grpcio>=1.63.0; extra == "vsphere"
337
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "vsphere"
338
+ Requires-Dist: aiosqlite; extra == "vsphere"
339
+ Requires-Dist: greenlet; extra == "vsphere"
135
340
  Provides-Extra: nebius
136
341
  Requires-Dist: nebius>=0.2.47; extra == "nebius"
137
342
  Requires-Dist: grpcio>=1.63.0; extra == "nebius"
@@ -140,66 +345,110 @@ Requires-Dist: awscli>=1.27.10; extra == "nebius"
140
345
  Requires-Dist: botocore>=1.29.10; extra == "nebius"
141
346
  Requires-Dist: boto3>=1.26.1; extra == "nebius"
142
347
  Requires-Dist: colorama<0.4.5; extra == "nebius"
348
+ Requires-Dist: casbin; extra == "nebius"
349
+ Requires-Dist: sqlalchemy_adapter; extra == "nebius"
350
+ Requires-Dist: passlib; extra == "nebius"
351
+ Requires-Dist: pyjwt; extra == "nebius"
352
+ Requires-Dist: aiohttp; extra == "nebius"
353
+ Requires-Dist: anyio; extra == "nebius"
354
+ Requires-Dist: grpcio>=1.63.0; extra == "nebius"
355
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "nebius"
356
+ Requires-Dist: aiosqlite; extra == "nebius"
357
+ Requires-Dist: greenlet; extra == "nebius"
143
358
  Provides-Extra: hyperbolic
359
+ Requires-Dist: casbin; extra == "hyperbolic"
360
+ Requires-Dist: sqlalchemy_adapter; extra == "hyperbolic"
361
+ Requires-Dist: passlib; extra == "hyperbolic"
362
+ Requires-Dist: pyjwt; extra == "hyperbolic"
363
+ Requires-Dist: aiohttp; extra == "hyperbolic"
364
+ Requires-Dist: anyio; extra == "hyperbolic"
365
+ Requires-Dist: grpcio>=1.63.0; extra == "hyperbolic"
366
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "hyperbolic"
367
+ Requires-Dist: aiosqlite; extra == "hyperbolic"
368
+ Requires-Dist: greenlet; extra == "hyperbolic"
144
369
  Provides-Extra: seeweb
145
370
  Requires-Dist: ecsapi>=0.2.0; extra == "seeweb"
146
- Provides-Extra: server
147
- Requires-Dist: casbin; extra == "server"
148
- Requires-Dist: sqlalchemy_adapter; extra == "server"
149
- Requires-Dist: passlib; extra == "server"
150
- Requires-Dist: pyjwt; extra == "server"
151
- Requires-Dist: aiohttp; extra == "server"
152
- Requires-Dist: anyio; extra == "server"
153
- Requires-Dist: grpcio>=1.63.0; extra == "server"
154
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
155
- Requires-Dist: aiosqlite; extra == "server"
156
- Requires-Dist: greenlet; extra == "server"
371
+ Requires-Dist: casbin; extra == "seeweb"
372
+ Requires-Dist: sqlalchemy_adapter; extra == "seeweb"
373
+ Requires-Dist: passlib; extra == "seeweb"
374
+ Requires-Dist: pyjwt; extra == "seeweb"
375
+ Requires-Dist: aiohttp; extra == "seeweb"
376
+ Requires-Dist: anyio; extra == "seeweb"
377
+ Requires-Dist: grpcio>=1.63.0; extra == "seeweb"
378
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "seeweb"
379
+ Requires-Dist: aiosqlite; extra == "seeweb"
380
+ Requires-Dist: greenlet; extra == "seeweb"
381
+ Provides-Extra: shadeform
382
+ Requires-Dist: casbin; extra == "shadeform"
383
+ Requires-Dist: sqlalchemy_adapter; extra == "shadeform"
384
+ Requires-Dist: passlib; extra == "shadeform"
385
+ Requires-Dist: pyjwt; extra == "shadeform"
386
+ Requires-Dist: aiohttp; extra == "shadeform"
387
+ Requires-Dist: anyio; extra == "shadeform"
388
+ Requires-Dist: grpcio>=1.63.0; extra == "shadeform"
389
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "shadeform"
390
+ Requires-Dist: aiosqlite; extra == "shadeform"
391
+ Requires-Dist: greenlet; extra == "shadeform"
157
392
  Provides-Extra: all
158
- Requires-Dist: nebius>=0.2.47; extra == "all"
159
- Requires-Dist: websockets; extra == "all"
393
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
394
+ Requires-Dist: anyio; extra == "all"
395
+ Requires-Dist: sqlalchemy_adapter; extra == "all"
396
+ Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
397
+ Requires-Dist: azure-identity>=1.19.0; extra == "all"
398
+ Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
160
399
  Requires-Dist: azure-core>=1.31.0; extra == "all"
161
- Requires-Dist: msgraph-sdk; extra == "all"
400
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
401
+ Requires-Dist: grpcio>=1.63.0; extra == "all"
402
+ Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
403
+ Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
404
+ Requires-Dist: botocore>=1.29.10; extra == "all"
405
+ Requires-Dist: azure-cli>=2.65.0; extra == "all"
406
+ Requires-Dist: greenlet; extra == "all"
407
+ Requires-Dist: aiosqlite; extra == "all"
408
+ Requires-Dist: colorama<0.4.5; extra == "all"
162
409
  Requires-Dist: ibm-cloud-sdk-core; extra == "all"
163
- Requires-Dist: google-cloud-storage; extra == "all"
164
- Requires-Dist: casbin; extra == "all"
165
- Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
166
- Requires-Dist: ecsapi>=0.2.0; extra == "all"
410
+ Requires-Dist: boto3>=1.26.1; extra == "all"
167
411
  Requires-Dist: awscli>=1.27.10; extra == "all"
168
- Requires-Dist: sqlalchemy_adapter; extra == "all"
412
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
413
+ Requires-Dist: nebius>=0.2.47; extra == "all"
414
+ Requires-Dist: pyjwt; extra == "all"
415
+ Requires-Dist: google-cloud-storage; extra == "all"
169
416
  Requires-Dist: msrestazure; extra == "all"
170
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
171
- Requires-Dist: ibm-vpc; extra == "all"
172
- Requires-Dist: ray[default]>=2.6.1; extra == "all"
173
- Requires-Dist: anyio; extra == "all"
174
417
  Requires-Dist: runpod>=1.6.1; extra == "all"
175
- Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
176
- Requires-Dist: greenlet; extra == "all"
418
+ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
419
+ Requires-Dist: casbin; extra == "all"
420
+ Requires-Dist: tomli; python_version < "3.11" and extra == "all"
421
+ Requires-Dist: oci; extra == "all"
422
+ Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
423
+ Requires-Dist: ibm-vpc; extra == "all"
177
424
  Requires-Dist: ibm-cos-sdk; extra == "all"
178
- Requires-Dist: docker; extra == "all"
179
- Requires-Dist: azure-common; extra == "all"
425
+ Requires-Dist: msgraph-sdk; extra == "all"
426
+ Requires-Dist: pydo>=0.3.0; extra == "all"
180
427
  Requires-Dist: python-dateutil; extra == "all"
181
- Requires-Dist: tomli; python_version < "3.11" and extra == "all"
182
- Requires-Dist: pyjwt; extra == "all"
183
- Requires-Dist: botocore>=1.29.10; extra == "all"
184
428
  Requires-Dist: azure-core>=1.24.0; extra == "all"
185
- Requires-Dist: colorama<0.4.5; extra == "all"
186
- Requires-Dist: passlib; extra == "all"
187
- Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
188
- Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
189
429
  Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
190
- Requires-Dist: aiosqlite; extra == "all"
430
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
191
431
  Requires-Dist: aiohttp; extra == "all"
192
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
193
- Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
194
- Requires-Dist: boto3>=1.26.1; extra == "all"
195
- Requires-Dist: pydo>=0.3.0; extra == "all"
196
- Requires-Dist: azure-cli>=2.65.0; extra == "all"
197
- Requires-Dist: azure-identity>=1.19.0; extra == "all"
198
- Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
199
- Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
432
+ Requires-Dist: ecsapi>=0.2.0; extra == "all"
200
433
  Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
201
- Requires-Dist: grpcio>=1.63.0; extra == "all"
202
- Requires-Dist: oci; extra == "all"
434
+ Requires-Dist: websockets; extra == "all"
435
+ Requires-Dist: docker; extra == "all"
436
+ Requires-Dist: passlib; extra == "all"
437
+ Requires-Dist: azure-common; extra == "all"
438
+ Provides-Extra: remote
439
+ Requires-Dist: grpcio>=1.63.0; extra == "remote"
440
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
441
+ Provides-Extra: server
442
+ Requires-Dist: casbin; extra == "server"
443
+ Requires-Dist: sqlalchemy_adapter; extra == "server"
444
+ Requires-Dist: passlib; extra == "server"
445
+ Requires-Dist: pyjwt; extra == "server"
446
+ Requires-Dist: aiohttp; extra == "server"
447
+ Requires-Dist: anyio; extra == "server"
448
+ Requires-Dist: grpcio>=1.63.0; extra == "server"
449
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
450
+ Requires-Dist: aiosqlite; extra == "server"
451
+ Requires-Dist: greenlet; extra == "server"
203
452
  Dynamic: author
204
453
  Dynamic: classifier
205
454
  Dynamic: description
@@ -249,10 +498,13 @@ Dynamic: summary
249
498
  ----
250
499
 
251
500
  :fire: *News* :fire:
501
+ - [Oct 2025] Run **RL training for LLMs** with SkyRL on your Kubernetes or clouds: [**example**](./llm/skyrl/)
502
+ - [Oct 2025] Train and serve [Andrej Karpathy's](https://x.com/karpathy/status/1977755427569111362) **nanochat** - the best ChatGPT that $100 can buy: [**example**](./llm/nanochat)
503
+ - [Oct 2025] Run large-scale **LLM training with TorchTitan** on any AI infra: [**example**](./examples/training/torchtitan)
504
+ - [Sep 2025] Scaling AI infrastructure at Abridge - **10x faster development** with SkyPilot: [**blog**](https://blog.skypilot.co/abridge/)
505
+ - [Sep 2025] Network and Storage Benchmarks for LLM training on the cloud: [**blog**](https://maknee.github.io/blog/2025/Network-And-Storage-Training-Skypilot/)
252
506
  - [Aug 2025] Serve and finetune **OpenAI GPT-OSS models** (gpt-oss-120b, gpt-oss-20b) with one command on any infra: [**serve**](./llm/gpt-oss/) + [**LoRA and full finetuning**](./llm/gpt-oss-finetuning/)
253
- - [Jul 2025] Run large-scale **LLM training with TorchTitan** on any cloud: [**example**](./llm/torchtitan/)
254
507
  - [Jul 2025] Run distributed **RL training for LLMs** with Verl (PPO, GRPO) on any cloud: [**example**](./llm/verl/)
255
- - [Jul 2025] 🎉 SkyPilot v0.10.0 released! [**blog post**](https://blog.skypilot.co/announcing-skypilot-0.10.0/), [**release notes**](https://github.com/skypilot-org/skypilot/releases/tag/v0.10.0)
256
508
  - [Jul 2025] Finetune **Llama4** on any distributed cluster/cloud: [**example**](./llm/llama-4-finetuning/)
257
509
  - [Jul 2025] Two-part blog series, `The Evolution of AI Job Orchestration`: (1) [Running AI jobs on GPU Neoclouds](https://blog.skypilot.co/ai-job-orchestration-pt1-gpu-neoclouds/), (2) [The AI-Native Control Plane & Orchestration that Finally Works for ML](https://blog.skypilot.co/ai-job-orchestration-pt2-ai-control-plane/)
258
510
  - [Apr 2025] Spin up **Qwen3** on your cluster/cloud: [**example**](./llm/qwen/)
@@ -310,9 +562,8 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,
310
562
  <img src="docs/source/_static/intro.gif" alt="SkyPilot">
311
563
  </p>
312
564
 
313
- Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Nebius, Lambda Cloud, RunPod, Fluidstack,
314
- Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai,
315
- VMware vSphere, Seeweb.
565
+ Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, CoreWeave, Nebius, Lambda Cloud, RunPod, Fluidstack,
566
+ Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Seeweb, Prime Intellect.
316
567
  <p align="center">
317
568
  <img alt="SkyPilot" src="https://raw.githubusercontent.com/skypilot-org/skypilot/master/docs/source/images/cloud-logos-light.png" width=85%>
318
569
  </p>