skypilot-nightly 1.0.0.dev20250905__py3-none-any.whl → 1.0.0.dev20251210__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.
Files changed (429) hide show
  1. sky/__init__.py +12 -2
  2. sky/adaptors/aws.py +27 -22
  3. sky/adaptors/common.py +25 -2
  4. sky/adaptors/coreweave.py +278 -0
  5. sky/adaptors/do.py +8 -2
  6. sky/adaptors/gcp.py +11 -0
  7. sky/adaptors/ibm.py +5 -2
  8. sky/adaptors/kubernetes.py +64 -0
  9. sky/adaptors/nebius.py +3 -1
  10. sky/adaptors/primeintellect.py +1 -0
  11. sky/adaptors/seeweb.py +183 -0
  12. sky/adaptors/shadeform.py +89 -0
  13. sky/adaptors/slurm.py +478 -0
  14. sky/admin_policy.py +20 -0
  15. sky/authentication.py +157 -263
  16. sky/backends/__init__.py +3 -2
  17. sky/backends/backend.py +11 -3
  18. sky/backends/backend_utils.py +630 -185
  19. sky/backends/cloud_vm_ray_backend.py +1111 -928
  20. sky/backends/local_docker_backend.py +9 -5
  21. sky/backends/task_codegen.py +971 -0
  22. sky/backends/wheel_utils.py +18 -0
  23. sky/catalog/__init__.py +8 -3
  24. sky/catalog/aws_catalog.py +4 -0
  25. sky/catalog/common.py +19 -1
  26. sky/catalog/data_fetchers/fetch_aws.py +102 -80
  27. sky/catalog/data_fetchers/fetch_gcp.py +30 -3
  28. sky/catalog/data_fetchers/fetch_nebius.py +9 -6
  29. sky/catalog/data_fetchers/fetch_runpod.py +698 -0
  30. sky/catalog/data_fetchers/fetch_seeweb.py +329 -0
  31. sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
  32. sky/catalog/kubernetes_catalog.py +36 -32
  33. sky/catalog/primeintellect_catalog.py +95 -0
  34. sky/catalog/runpod_catalog.py +5 -1
  35. sky/catalog/seeweb_catalog.py +184 -0
  36. sky/catalog/shadeform_catalog.py +165 -0
  37. sky/catalog/slurm_catalog.py +243 -0
  38. sky/check.py +87 -46
  39. sky/client/cli/command.py +1004 -434
  40. sky/client/cli/flags.py +4 -2
  41. sky/{volumes/utils.py → client/cli/table_utils.py} +111 -13
  42. sky/client/cli/utils.py +79 -0
  43. sky/client/common.py +12 -2
  44. sky/client/sdk.py +188 -65
  45. sky/client/sdk_async.py +34 -33
  46. sky/cloud_stores.py +82 -3
  47. sky/clouds/__init__.py +8 -0
  48. sky/clouds/aws.py +337 -129
  49. sky/clouds/azure.py +24 -18
  50. sky/clouds/cloud.py +47 -13
  51. sky/clouds/cudo.py +16 -13
  52. sky/clouds/do.py +9 -7
  53. sky/clouds/fluidstack.py +12 -5
  54. sky/clouds/gcp.py +14 -7
  55. sky/clouds/hyperbolic.py +12 -5
  56. sky/clouds/ibm.py +12 -5
  57. sky/clouds/kubernetes.py +80 -45
  58. sky/clouds/lambda_cloud.py +12 -5
  59. sky/clouds/nebius.py +23 -9
  60. sky/clouds/oci.py +19 -12
  61. sky/clouds/paperspace.py +4 -1
  62. sky/clouds/primeintellect.py +317 -0
  63. sky/clouds/runpod.py +85 -24
  64. sky/clouds/scp.py +12 -8
  65. sky/clouds/seeweb.py +477 -0
  66. sky/clouds/shadeform.py +400 -0
  67. sky/clouds/slurm.py +578 -0
  68. sky/clouds/ssh.py +6 -3
  69. sky/clouds/utils/scp_utils.py +61 -50
  70. sky/clouds/vast.py +43 -27
  71. sky/clouds/vsphere.py +14 -16
  72. sky/core.py +296 -195
  73. sky/dashboard/out/404.html +1 -1
  74. sky/dashboard/out/_next/static/KYAhEFa3FTfq4JyKVgo-s/_buildManifest.js +1 -0
  75. sky/dashboard/out/_next/static/chunks/1141-9c810f01ff4f398a.js +11 -0
  76. sky/dashboard/out/_next/static/chunks/1871-7e202677c42f43fe.js +6 -0
  77. sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
  78. sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
  79. sky/dashboard/out/_next/static/chunks/2755.edd818326d489a1d.js +26 -0
  80. sky/dashboard/out/_next/static/chunks/3294.ddda8c6c6f9f24dc.js +1 -0
  81. sky/dashboard/out/_next/static/chunks/3785.7e245f318f9d1121.js +1 -0
  82. sky/dashboard/out/_next/static/chunks/{6601-06114c982db410b6.js → 3800-b589397dc09c5b4e.js} +1 -1
  83. sky/dashboard/out/_next/static/chunks/3850-fd5696f3bbbaddae.js +1 -0
  84. sky/dashboard/out/_next/static/chunks/4725.172ede95d1b21022.js +1 -0
  85. sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +15 -0
  86. sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
  87. sky/dashboard/out/_next/static/chunks/6856-da20c5fd999f319c.js +1 -0
  88. sky/dashboard/out/_next/static/chunks/6990-09cbf02d3cd518c3.js +1 -0
  89. sky/dashboard/out/_next/static/chunks/7359-c8d04e06886000b3.js +30 -0
  90. sky/dashboard/out/_next/static/chunks/7615-019513abc55b3b47.js +1 -0
  91. sky/dashboard/out/_next/static/chunks/8640.5b9475a2d18c5416.js +16 -0
  92. sky/dashboard/out/_next/static/chunks/8969-452f9d5cbdd2dc73.js +1 -0
  93. sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
  94. sky/dashboard/out/_next/static/chunks/9353-8369df1cf105221c.js +1 -0
  95. sky/dashboard/out/_next/static/chunks/9360.a536cf6b1fa42355.js +31 -0
  96. sky/dashboard/out/_next/static/chunks/9847.3aaca6bb33455140.js +30 -0
  97. sky/dashboard/out/_next/static/chunks/pages/_app-68b647e26f9d2793.js +34 -0
  98. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-33f525539665fdfd.js +16 -0
  99. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-a7565f586ef86467.js +1 -0
  100. sky/dashboard/out/_next/static/chunks/pages/clusters-9e5d47818b9bdadd.js +1 -0
  101. sky/dashboard/out/_next/static/chunks/pages/{config-dfb9bf07b13045f4.js → config-718cdc365de82689.js} +1 -1
  102. sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-6563820e094f68ca.js → [context]-12c559ec4d81fdbd.js} +1 -1
  103. sky/dashboard/out/_next/static/chunks/pages/{infra-aabba60d57826e0f.js → infra-d187cd0413d72475.js} +1 -1
  104. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-895847b6cf200b04.js +16 -0
  105. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-8d0f4655400b4eb9.js +21 -0
  106. sky/dashboard/out/_next/static/chunks/pages/jobs-e5a98f17f8513a96.js +1 -0
  107. sky/dashboard/out/_next/static/chunks/pages/plugins/[...slug]-4f46050ca065d8f8.js +1 -0
  108. sky/dashboard/out/_next/static/chunks/pages/users-2f7646eb77785a2c.js +1 -0
  109. sky/dashboard/out/_next/static/chunks/pages/volumes-ef19d49c6d0e8500.js +1 -0
  110. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-af76bb06dbb3954f.js → [name]-96e0f298308da7e2.js} +1 -1
  111. sky/dashboard/out/_next/static/chunks/pages/{workspaces-7598c33a746cdc91.js → workspaces-cb4da3abe08ebf19.js} +1 -1
  112. sky/dashboard/out/_next/static/chunks/webpack-fba3de387ff6bb08.js +1 -0
  113. sky/dashboard/out/_next/static/css/c5a4cfd2600fc715.css +3 -0
  114. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  115. sky/dashboard/out/clusters/[cluster].html +1 -1
  116. sky/dashboard/out/clusters.html +1 -1
  117. sky/dashboard/out/config.html +1 -1
  118. sky/dashboard/out/index.html +1 -1
  119. sky/dashboard/out/infra/[context].html +1 -1
  120. sky/dashboard/out/infra.html +1 -1
  121. sky/dashboard/out/jobs/[job].html +1 -1
  122. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  123. sky/dashboard/out/jobs.html +1 -1
  124. sky/dashboard/out/plugins/[...slug].html +1 -0
  125. sky/dashboard/out/users.html +1 -1
  126. sky/dashboard/out/volumes.html +1 -1
  127. sky/dashboard/out/workspace/new.html +1 -1
  128. sky/dashboard/out/workspaces/[name].html +1 -1
  129. sky/dashboard/out/workspaces.html +1 -1
  130. sky/data/data_utils.py +92 -1
  131. sky/data/mounting_utils.py +177 -30
  132. sky/data/storage.py +200 -19
  133. sky/data/storage_utils.py +10 -45
  134. sky/exceptions.py +18 -7
  135. sky/execution.py +74 -31
  136. sky/global_user_state.py +605 -191
  137. sky/jobs/__init__.py +2 -0
  138. sky/jobs/client/sdk.py +101 -4
  139. sky/jobs/client/sdk_async.py +31 -5
  140. sky/jobs/constants.py +15 -8
  141. sky/jobs/controller.py +726 -284
  142. sky/jobs/file_content_utils.py +128 -0
  143. sky/jobs/log_gc.py +193 -0
  144. sky/jobs/recovery_strategy.py +250 -100
  145. sky/jobs/scheduler.py +271 -173
  146. sky/jobs/server/core.py +367 -114
  147. sky/jobs/server/server.py +81 -35
  148. sky/jobs/server/utils.py +89 -35
  149. sky/jobs/state.py +1498 -620
  150. sky/jobs/utils.py +771 -306
  151. sky/logs/agent.py +40 -5
  152. sky/logs/aws.py +9 -19
  153. sky/metrics/utils.py +282 -39
  154. sky/models.py +2 -0
  155. sky/optimizer.py +7 -6
  156. sky/provision/__init__.py +38 -1
  157. sky/provision/aws/config.py +34 -13
  158. sky/provision/aws/instance.py +5 -2
  159. sky/provision/azure/instance.py +5 -3
  160. sky/provision/common.py +22 -0
  161. sky/provision/cudo/instance.py +4 -3
  162. sky/provision/do/instance.py +4 -3
  163. sky/provision/docker_utils.py +112 -28
  164. sky/provision/fluidstack/instance.py +6 -5
  165. sky/provision/gcp/config.py +6 -1
  166. sky/provision/gcp/instance.py +4 -2
  167. sky/provision/hyperbolic/instance.py +4 -2
  168. sky/provision/instance_setup.py +66 -20
  169. sky/provision/kubernetes/__init__.py +2 -0
  170. sky/provision/kubernetes/config.py +7 -44
  171. sky/provision/kubernetes/constants.py +0 -1
  172. sky/provision/kubernetes/instance.py +609 -213
  173. sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +1 -2
  174. sky/provision/kubernetes/network.py +12 -8
  175. sky/provision/kubernetes/network_utils.py +8 -25
  176. sky/provision/kubernetes/utils.py +422 -422
  177. sky/provision/kubernetes/volume.py +150 -18
  178. sky/provision/lambda_cloud/instance.py +16 -13
  179. sky/provision/nebius/instance.py +6 -2
  180. sky/provision/nebius/utils.py +103 -86
  181. sky/provision/oci/instance.py +4 -2
  182. sky/provision/paperspace/instance.py +4 -3
  183. sky/provision/primeintellect/__init__.py +10 -0
  184. sky/provision/primeintellect/config.py +11 -0
  185. sky/provision/primeintellect/instance.py +454 -0
  186. sky/provision/primeintellect/utils.py +398 -0
  187. sky/provision/provisioner.py +45 -15
  188. sky/provision/runpod/__init__.py +2 -0
  189. sky/provision/runpod/instance.py +4 -3
  190. sky/provision/runpod/volume.py +69 -13
  191. sky/provision/scp/instance.py +307 -130
  192. sky/provision/seeweb/__init__.py +11 -0
  193. sky/provision/seeweb/config.py +13 -0
  194. sky/provision/seeweb/instance.py +812 -0
  195. sky/provision/shadeform/__init__.py +11 -0
  196. sky/provision/shadeform/config.py +12 -0
  197. sky/provision/shadeform/instance.py +351 -0
  198. sky/provision/shadeform/shadeform_utils.py +83 -0
  199. sky/provision/slurm/__init__.py +12 -0
  200. sky/provision/slurm/config.py +13 -0
  201. sky/provision/slurm/instance.py +572 -0
  202. sky/provision/slurm/utils.py +583 -0
  203. sky/provision/vast/instance.py +9 -4
  204. sky/provision/vast/utils.py +10 -6
  205. sky/provision/volume.py +164 -0
  206. sky/provision/vsphere/common/ssl_helper.py +1 -1
  207. sky/provision/vsphere/common/vapiconnect.py +2 -1
  208. sky/provision/vsphere/common/vim_utils.py +3 -2
  209. sky/provision/vsphere/instance.py +8 -6
  210. sky/provision/vsphere/vsphere_utils.py +8 -1
  211. sky/resources.py +11 -3
  212. sky/schemas/api/responses.py +107 -6
  213. sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py +34 -0
  214. sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
  215. sky/schemas/db/global_user_state/010_save_ssh_key.py +66 -0
  216. sky/schemas/db/global_user_state/011_is_ephemeral.py +34 -0
  217. sky/schemas/db/kv_cache/001_initial_schema.py +29 -0
  218. sky/schemas/db/serve_state/002_yaml_content.py +34 -0
  219. sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
  220. sky/schemas/db/spot_jobs/002_cluster_pool.py +3 -3
  221. sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
  222. sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
  223. sky/schemas/db/spot_jobs/006_controller_pid_started_at.py +34 -0
  224. sky/schemas/db/spot_jobs/007_config_file_content.py +34 -0
  225. sky/schemas/generated/jobsv1_pb2.py +86 -0
  226. sky/schemas/generated/jobsv1_pb2.pyi +254 -0
  227. sky/schemas/generated/jobsv1_pb2_grpc.py +542 -0
  228. sky/schemas/generated/managed_jobsv1_pb2.py +76 -0
  229. sky/schemas/generated/managed_jobsv1_pb2.pyi +278 -0
  230. sky/schemas/generated/managed_jobsv1_pb2_grpc.py +278 -0
  231. sky/schemas/generated/servev1_pb2.py +58 -0
  232. sky/schemas/generated/servev1_pb2.pyi +115 -0
  233. sky/schemas/generated/servev1_pb2_grpc.py +322 -0
  234. sky/serve/autoscalers.py +2 -0
  235. sky/serve/client/impl.py +55 -21
  236. sky/serve/constants.py +4 -3
  237. sky/serve/controller.py +17 -11
  238. sky/serve/load_balancing_policies.py +1 -1
  239. sky/serve/replica_managers.py +219 -142
  240. sky/serve/serve_rpc_utils.py +179 -0
  241. sky/serve/serve_state.py +63 -54
  242. sky/serve/serve_utils.py +145 -109
  243. sky/serve/server/core.py +46 -25
  244. sky/serve/server/impl.py +311 -162
  245. sky/serve/server/server.py +21 -19
  246. sky/serve/service.py +84 -68
  247. sky/serve/service_spec.py +45 -7
  248. sky/server/auth/loopback.py +38 -0
  249. sky/server/auth/oauth2_proxy.py +12 -7
  250. sky/server/common.py +47 -24
  251. sky/server/config.py +62 -28
  252. sky/server/constants.py +9 -1
  253. sky/server/daemons.py +109 -38
  254. sky/server/metrics.py +76 -96
  255. sky/server/middleware_utils.py +166 -0
  256. sky/server/plugins.py +222 -0
  257. sky/server/requests/executor.py +384 -145
  258. sky/server/requests/payloads.py +83 -19
  259. sky/server/requests/preconditions.py +15 -13
  260. sky/server/requests/request_names.py +123 -0
  261. sky/server/requests/requests.py +511 -157
  262. sky/server/requests/serializers/decoders.py +48 -17
  263. sky/server/requests/serializers/encoders.py +102 -20
  264. sky/server/requests/serializers/return_value_serializers.py +60 -0
  265. sky/server/requests/threads.py +117 -0
  266. sky/server/rest.py +116 -24
  267. sky/server/server.py +497 -179
  268. sky/server/server_utils.py +30 -0
  269. sky/server/stream_utils.py +219 -45
  270. sky/server/uvicorn.py +30 -19
  271. sky/setup_files/MANIFEST.in +6 -1
  272. sky/setup_files/alembic.ini +8 -0
  273. sky/setup_files/dependencies.py +64 -19
  274. sky/setup_files/setup.py +44 -44
  275. sky/sky_logging.py +13 -5
  276. sky/skylet/attempt_skylet.py +116 -24
  277. sky/skylet/configs.py +3 -1
  278. sky/skylet/constants.py +139 -29
  279. sky/skylet/events.py +74 -14
  280. sky/skylet/executor/__init__.py +1 -0
  281. sky/skylet/executor/slurm.py +189 -0
  282. sky/skylet/job_lib.py +143 -105
  283. sky/skylet/log_lib.py +252 -8
  284. sky/skylet/log_lib.pyi +47 -7
  285. sky/skylet/providers/ibm/node_provider.py +12 -8
  286. sky/skylet/providers/ibm/vpc_provider.py +13 -12
  287. sky/skylet/runtime_utils.py +21 -0
  288. sky/skylet/services.py +524 -0
  289. sky/skylet/skylet.py +27 -2
  290. sky/skylet/subprocess_daemon.py +104 -28
  291. sky/skypilot_config.py +99 -79
  292. sky/ssh_node_pools/constants.py +12 -0
  293. sky/ssh_node_pools/core.py +40 -3
  294. sky/ssh_node_pools/deploy/__init__.py +4 -0
  295. sky/ssh_node_pools/deploy/deploy.py +952 -0
  296. sky/ssh_node_pools/deploy/tunnel_utils.py +199 -0
  297. sky/ssh_node_pools/deploy/utils.py +173 -0
  298. sky/ssh_node_pools/server.py +20 -21
  299. sky/{utils/kubernetes/ssh_utils.py → ssh_node_pools/utils.py} +9 -6
  300. sky/task.py +221 -104
  301. sky/templates/aws-ray.yml.j2 +1 -0
  302. sky/templates/azure-ray.yml.j2 +1 -0
  303. sky/templates/cudo-ray.yml.j2 +1 -0
  304. sky/templates/do-ray.yml.j2 +1 -0
  305. sky/templates/fluidstack-ray.yml.j2 +1 -0
  306. sky/templates/gcp-ray.yml.j2 +1 -0
  307. sky/templates/hyperbolic-ray.yml.j2 +1 -0
  308. sky/templates/ibm-ray.yml.j2 +2 -1
  309. sky/templates/jobs-controller.yaml.j2 +3 -0
  310. sky/templates/kubernetes-ray.yml.j2 +204 -55
  311. sky/templates/lambda-ray.yml.j2 +1 -0
  312. sky/templates/nebius-ray.yml.j2 +3 -0
  313. sky/templates/oci-ray.yml.j2 +1 -0
  314. sky/templates/paperspace-ray.yml.j2 +1 -0
  315. sky/templates/primeintellect-ray.yml.j2 +72 -0
  316. sky/templates/runpod-ray.yml.j2 +1 -0
  317. sky/templates/scp-ray.yml.j2 +1 -0
  318. sky/templates/seeweb-ray.yml.j2 +171 -0
  319. sky/templates/shadeform-ray.yml.j2 +73 -0
  320. sky/templates/slurm-ray.yml.j2 +85 -0
  321. sky/templates/vast-ray.yml.j2 +2 -0
  322. sky/templates/vsphere-ray.yml.j2 +1 -0
  323. sky/templates/websocket_proxy.py +188 -43
  324. sky/usage/usage_lib.py +16 -4
  325. sky/users/model.conf +1 -1
  326. sky/users/permission.py +84 -44
  327. sky/users/rbac.py +31 -3
  328. sky/utils/accelerator_registry.py +6 -3
  329. sky/utils/admin_policy_utils.py +18 -5
  330. sky/utils/annotations.py +128 -6
  331. sky/utils/asyncio_utils.py +78 -0
  332. sky/utils/atomic.py +1 -1
  333. sky/utils/auth_utils.py +153 -0
  334. sky/utils/cli_utils/status_utils.py +12 -7
  335. sky/utils/cluster_utils.py +28 -6
  336. sky/utils/command_runner.py +283 -30
  337. sky/utils/command_runner.pyi +63 -7
  338. sky/utils/common.py +3 -1
  339. sky/utils/common_utils.py +55 -7
  340. sky/utils/config_utils.py +1 -14
  341. sky/utils/context.py +127 -40
  342. sky/utils/context_utils.py +73 -18
  343. sky/utils/controller_utils.py +229 -70
  344. sky/utils/db/db_utils.py +95 -18
  345. sky/utils/db/kv_cache.py +149 -0
  346. sky/utils/db/migration_utils.py +24 -7
  347. sky/utils/env_options.py +4 -0
  348. sky/utils/git.py +559 -1
  349. sky/utils/kubernetes/create_cluster.sh +15 -30
  350. sky/utils/kubernetes/delete_cluster.sh +10 -7
  351. sky/utils/kubernetes/generate_kind_config.py +6 -66
  352. sky/utils/kubernetes/gpu_labeler.py +13 -3
  353. sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +2 -1
  354. sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +16 -16
  355. sky/utils/kubernetes/kubernetes_deploy_utils.py +187 -260
  356. sky/utils/kubernetes/rsync_helper.sh +11 -3
  357. sky/utils/kubernetes/ssh-tunnel.sh +7 -376
  358. sky/utils/kubernetes_enums.py +7 -15
  359. sky/utils/lock_events.py +4 -4
  360. sky/utils/locks.py +128 -31
  361. sky/utils/log_utils.py +0 -319
  362. sky/utils/resource_checker.py +13 -10
  363. sky/utils/resources_utils.py +53 -29
  364. sky/utils/rich_utils.py +8 -4
  365. sky/utils/schemas.py +138 -52
  366. sky/utils/subprocess_utils.py +17 -4
  367. sky/utils/thread_utils.py +91 -0
  368. sky/utils/timeline.py +2 -1
  369. sky/utils/ux_utils.py +35 -1
  370. sky/utils/volume.py +88 -4
  371. sky/utils/yaml_utils.py +9 -0
  372. sky/volumes/client/sdk.py +48 -10
  373. sky/volumes/server/core.py +59 -22
  374. sky/volumes/server/server.py +46 -17
  375. sky/volumes/volume.py +54 -42
  376. sky/workspaces/core.py +57 -21
  377. sky/workspaces/server.py +13 -12
  378. sky_templates/README.md +3 -0
  379. sky_templates/__init__.py +3 -0
  380. sky_templates/ray/__init__.py +0 -0
  381. sky_templates/ray/start_cluster +183 -0
  382. sky_templates/ray/stop_cluster +75 -0
  383. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/METADATA +343 -65
  384. skypilot_nightly-1.0.0.dev20251210.dist-info/RECORD +629 -0
  385. skypilot_nightly-1.0.0.dev20251210.dist-info/top_level.txt +2 -0
  386. sky/client/cli/git.py +0 -549
  387. sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
  388. sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js +0 -1
  389. sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js +0 -40
  390. sky/dashboard/out/_next/static/chunks/3015-86cabed5d4669ad0.js +0 -1
  391. sky/dashboard/out/_next/static/chunks/3294.c80326aec9bfed40.js +0 -6
  392. sky/dashboard/out/_next/static/chunks/3785.4872a2f3aa489880.js +0 -1
  393. sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -1
  394. sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -21
  395. sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -10
  396. sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -1
  397. sky/dashboard/out/_next/static/chunks/5339.3fda4a4010ff4e06.js +0 -51
  398. sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
  399. sky/dashboard/out/_next/static/chunks/649.b9d7f7d10c1b8c53.js +0 -45
  400. sky/dashboard/out/_next/static/chunks/6856-dca7962af4814e1b.js +0 -1
  401. sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -1
  402. sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -6
  403. sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -18
  404. sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -36
  405. sky/dashboard/out/_next/static/chunks/8969-0be3036bf86f8256.js +0 -1
  406. sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
  407. sky/dashboard/out/_next/static/chunks/9037-fa1737818d0a0969.js +0 -6
  408. sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -34
  409. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
  410. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js +0 -16
  411. sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -1
  412. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -11
  413. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -16
  414. sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js +0 -1
  415. sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -1
  416. sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -1
  417. sky/dashboard/out/_next/static/chunks/webpack-4fe903277b57b523.js +0 -1
  418. sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
  419. sky/dashboard/out/_next/static/mS-4qZPSkRuA1u-g2wQhg/_buildManifest.js +0 -1
  420. sky/templates/kubernetes-ssh-jump.yml.j2 +0 -94
  421. sky/utils/kubernetes/cleanup-tunnel.sh +0 -62
  422. sky/utils/kubernetes/deploy_remote_cluster.py +0 -1299
  423. sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -191
  424. skypilot_nightly-1.0.0.dev20250905.dist-info/RECORD +0 -547
  425. skypilot_nightly-1.0.0.dev20250905.dist-info/top_level.txt +0 -1
  426. /sky/dashboard/out/_next/static/{mS-4qZPSkRuA1u-g2wQhg → KYAhEFa3FTfq4JyKVgo-s}/_ssgManifest.js +0 -0
  427. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/WHEEL +0 -0
  428. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/entry_points.txt +0 -0
  429. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250905
3
+ Version: 1.0.0.dev20251210
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -43,9 +43,11 @@ Requires-Dist: packaging
43
43
  Requires-Dist: psutil
44
44
  Requires-Dist: pulp
45
45
  Requires-Dist: pyyaml!=5.4.*,>3.13
46
+ Requires-Dist: ijson
47
+ Requires-Dist: orjson
46
48
  Requires-Dist: requests
49
+ Requires-Dist: uvicorn[standard]<0.36.0,>=0.33.0
47
50
  Requires-Dist: fastapi
48
- Requires-Dist: uvicorn[standard]
49
51
  Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<3,>2
50
52
  Requires-Dist: python-multipart
51
53
  Requires-Dist: aiofiles
@@ -53,23 +55,35 @@ Requires-Dist: httpx
53
55
  Requires-Dist: setproctitle
54
56
  Requires-Dist: sqlalchemy
55
57
  Requires-Dist: psycopg2-binary
58
+ Requires-Dist: aiosqlite
59
+ Requires-Dist: asyncpg
56
60
  Requires-Dist: casbin
57
61
  Requires-Dist: sqlalchemy_adapter
58
62
  Requires-Dist: prometheus_client>=0.8.0
59
63
  Requires-Dist: passlib
60
- Requires-Dist: bcrypt
64
+ Requires-Dist: bcrypt==4.0.1
61
65
  Requires-Dist: pyjwt
62
66
  Requires-Dist: gitpython
67
+ Requires-Dist: paramiko
63
68
  Requires-Dist: types-paramiko
64
69
  Requires-Dist: alembic
65
70
  Requires-Dist: aiohttp
66
- Requires-Dist: aiosqlite
67
71
  Requires-Dist: anyio
68
72
  Provides-Extra: aws
69
73
  Requires-Dist: awscli>=1.27.10; extra == "aws"
70
74
  Requires-Dist: botocore>=1.29.10; extra == "aws"
71
75
  Requires-Dist: boto3>=1.26.1; extra == "aws"
72
76
  Requires-Dist: colorama<0.4.5; extra == "aws"
77
+ Requires-Dist: casbin; extra == "aws"
78
+ Requires-Dist: sqlalchemy_adapter; extra == "aws"
79
+ Requires-Dist: passlib; extra == "aws"
80
+ Requires-Dist: pyjwt; extra == "aws"
81
+ Requires-Dist: aiohttp; extra == "aws"
82
+ Requires-Dist: anyio; extra == "aws"
83
+ Requires-Dist: grpcio>=1.63.0; extra == "aws"
84
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "aws"
85
+ Requires-Dist: aiosqlite; extra == "aws"
86
+ Requires-Dist: greenlet; extra == "aws"
73
87
  Provides-Extra: azure
74
88
  Requires-Dist: azure-cli>=2.65.0; extra == "azure"
75
89
  Requires-Dist: azure-core>=1.31.0; extra == "azure"
@@ -79,114 +93,374 @@ Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "azure"
79
93
  Requires-Dist: azure-storage-blob>=12.23.1; extra == "azure"
80
94
  Requires-Dist: msgraph-sdk; extra == "azure"
81
95
  Requires-Dist: msrestazure; extra == "azure"
96
+ Requires-Dist: casbin; extra == "azure"
97
+ Requires-Dist: sqlalchemy_adapter; extra == "azure"
98
+ Requires-Dist: passlib; extra == "azure"
99
+ Requires-Dist: pyjwt; extra == "azure"
100
+ Requires-Dist: aiohttp; extra == "azure"
101
+ Requires-Dist: anyio; extra == "azure"
102
+ Requires-Dist: grpcio>=1.63.0; extra == "azure"
103
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "azure"
104
+ Requires-Dist: aiosqlite; extra == "azure"
105
+ Requires-Dist: greenlet; extra == "azure"
82
106
  Provides-Extra: gcp
83
107
  Requires-Dist: google-api-python-client>=2.69.0; extra == "gcp"
84
108
  Requires-Dist: google-cloud-storage; extra == "gcp"
85
109
  Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "gcp"
110
+ Requires-Dist: casbin; extra == "gcp"
111
+ Requires-Dist: sqlalchemy_adapter; extra == "gcp"
112
+ Requires-Dist: passlib; extra == "gcp"
113
+ Requires-Dist: pyjwt; extra == "gcp"
114
+ Requires-Dist: aiohttp; extra == "gcp"
115
+ Requires-Dist: anyio; extra == "gcp"
116
+ Requires-Dist: grpcio>=1.63.0; extra == "gcp"
117
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "gcp"
118
+ Requires-Dist: aiosqlite; extra == "gcp"
119
+ Requires-Dist: greenlet; extra == "gcp"
86
120
  Provides-Extra: ibm
87
121
  Requires-Dist: ibm-cloud-sdk-core; extra == "ibm"
88
122
  Requires-Dist: ibm-vpc; extra == "ibm"
89
123
  Requires-Dist: ibm-platform-services>=0.48.0; extra == "ibm"
90
124
  Requires-Dist: ibm-cos-sdk; extra == "ibm"
91
- Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "ibm"
125
+ Requires-Dist: ray[default]>=2.6.1; extra == "ibm"
126
+ Requires-Dist: casbin; extra == "ibm"
127
+ Requires-Dist: sqlalchemy_adapter; extra == "ibm"
128
+ Requires-Dist: passlib; extra == "ibm"
129
+ Requires-Dist: pyjwt; extra == "ibm"
130
+ Requires-Dist: aiohttp; extra == "ibm"
131
+ Requires-Dist: anyio; extra == "ibm"
132
+ Requires-Dist: grpcio>=1.63.0; extra == "ibm"
133
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "ibm"
134
+ Requires-Dist: aiosqlite; extra == "ibm"
135
+ Requires-Dist: greenlet; extra == "ibm"
92
136
  Provides-Extra: docker
93
137
  Requires-Dist: docker; extra == "docker"
94
- Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "docker"
138
+ Requires-Dist: ray[default]>=2.6.1; extra == "docker"
139
+ Requires-Dist: casbin; extra == "docker"
140
+ Requires-Dist: sqlalchemy_adapter; extra == "docker"
141
+ Requires-Dist: passlib; extra == "docker"
142
+ Requires-Dist: pyjwt; extra == "docker"
143
+ Requires-Dist: aiohttp; extra == "docker"
144
+ Requires-Dist: anyio; extra == "docker"
145
+ Requires-Dist: grpcio>=1.63.0; extra == "docker"
146
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "docker"
147
+ Requires-Dist: aiosqlite; extra == "docker"
148
+ Requires-Dist: greenlet; extra == "docker"
95
149
  Provides-Extra: lambda
150
+ Requires-Dist: casbin; extra == "lambda"
151
+ Requires-Dist: sqlalchemy_adapter; extra == "lambda"
152
+ Requires-Dist: passlib; extra == "lambda"
153
+ Requires-Dist: pyjwt; extra == "lambda"
154
+ Requires-Dist: aiohttp; extra == "lambda"
155
+ Requires-Dist: anyio; extra == "lambda"
156
+ Requires-Dist: grpcio>=1.63.0; extra == "lambda"
157
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "lambda"
158
+ Requires-Dist: aiosqlite; extra == "lambda"
159
+ Requires-Dist: greenlet; extra == "lambda"
96
160
  Provides-Extra: cloudflare
97
161
  Requires-Dist: awscli>=1.27.10; extra == "cloudflare"
98
162
  Requires-Dist: botocore>=1.29.10; extra == "cloudflare"
99
163
  Requires-Dist: boto3>=1.26.1; extra == "cloudflare"
100
164
  Requires-Dist: colorama<0.4.5; extra == "cloudflare"
165
+ Requires-Dist: casbin; extra == "cloudflare"
166
+ Requires-Dist: sqlalchemy_adapter; extra == "cloudflare"
167
+ Requires-Dist: passlib; extra == "cloudflare"
168
+ Requires-Dist: pyjwt; extra == "cloudflare"
169
+ Requires-Dist: aiohttp; extra == "cloudflare"
170
+ Requires-Dist: anyio; extra == "cloudflare"
171
+ Requires-Dist: grpcio>=1.63.0; extra == "cloudflare"
172
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "cloudflare"
173
+ Requires-Dist: aiosqlite; extra == "cloudflare"
174
+ Requires-Dist: greenlet; extra == "cloudflare"
175
+ Provides-Extra: coreweave
176
+ Requires-Dist: awscli>=1.27.10; extra == "coreweave"
177
+ Requires-Dist: botocore>=1.29.10; extra == "coreweave"
178
+ Requires-Dist: boto3>=1.26.1; extra == "coreweave"
179
+ Requires-Dist: colorama<0.4.5; extra == "coreweave"
180
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "coreweave"
181
+ Requires-Dist: websockets; extra == "coreweave"
182
+ Requires-Dist: python-dateutil; extra == "coreweave"
183
+ Requires-Dist: casbin; extra == "coreweave"
184
+ Requires-Dist: sqlalchemy_adapter; extra == "coreweave"
185
+ Requires-Dist: passlib; extra == "coreweave"
186
+ Requires-Dist: pyjwt; extra == "coreweave"
187
+ Requires-Dist: aiohttp; extra == "coreweave"
188
+ Requires-Dist: anyio; extra == "coreweave"
189
+ Requires-Dist: grpcio>=1.63.0; extra == "coreweave"
190
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "coreweave"
191
+ Requires-Dist: aiosqlite; extra == "coreweave"
192
+ Requires-Dist: greenlet; extra == "coreweave"
101
193
  Provides-Extra: scp
102
- Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "scp"
194
+ Requires-Dist: ray[default]>=2.6.1; extra == "scp"
195
+ Requires-Dist: casbin; extra == "scp"
196
+ Requires-Dist: sqlalchemy_adapter; extra == "scp"
197
+ Requires-Dist: passlib; extra == "scp"
198
+ Requires-Dist: pyjwt; extra == "scp"
199
+ Requires-Dist: aiohttp; extra == "scp"
200
+ Requires-Dist: anyio; extra == "scp"
201
+ Requires-Dist: grpcio>=1.63.0; extra == "scp"
202
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "scp"
203
+ Requires-Dist: aiosqlite; extra == "scp"
204
+ Requires-Dist: greenlet; extra == "scp"
103
205
  Provides-Extra: oci
104
206
  Requires-Dist: oci; extra == "oci"
207
+ Requires-Dist: casbin; extra == "oci"
208
+ Requires-Dist: sqlalchemy_adapter; extra == "oci"
209
+ Requires-Dist: passlib; extra == "oci"
210
+ Requires-Dist: pyjwt; extra == "oci"
211
+ Requires-Dist: aiohttp; extra == "oci"
212
+ Requires-Dist: anyio; extra == "oci"
213
+ Requires-Dist: grpcio>=1.63.0; extra == "oci"
214
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "oci"
215
+ Requires-Dist: aiosqlite; extra == "oci"
216
+ Requires-Dist: greenlet; extra == "oci"
105
217
  Provides-Extra: kubernetes
106
218
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "kubernetes"
107
219
  Requires-Dist: websockets; extra == "kubernetes"
108
220
  Requires-Dist: python-dateutil; extra == "kubernetes"
221
+ Requires-Dist: casbin; extra == "kubernetes"
222
+ Requires-Dist: sqlalchemy_adapter; extra == "kubernetes"
223
+ Requires-Dist: passlib; extra == "kubernetes"
224
+ Requires-Dist: pyjwt; extra == "kubernetes"
225
+ Requires-Dist: aiohttp; extra == "kubernetes"
226
+ Requires-Dist: anyio; extra == "kubernetes"
227
+ Requires-Dist: grpcio>=1.63.0; extra == "kubernetes"
228
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "kubernetes"
229
+ Requires-Dist: aiosqlite; extra == "kubernetes"
230
+ Requires-Dist: greenlet; extra == "kubernetes"
109
231
  Provides-Extra: ssh
110
232
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "ssh"
111
233
  Requires-Dist: websockets; extra == "ssh"
112
234
  Requires-Dist: python-dateutil; extra == "ssh"
113
- Provides-Extra: remote
114
- Requires-Dist: grpcio>=1.63.0; extra == "remote"
115
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
235
+ Requires-Dist: casbin; extra == "ssh"
236
+ Requires-Dist: sqlalchemy_adapter; extra == "ssh"
237
+ Requires-Dist: passlib; extra == "ssh"
238
+ Requires-Dist: pyjwt; extra == "ssh"
239
+ Requires-Dist: aiohttp; extra == "ssh"
240
+ Requires-Dist: anyio; extra == "ssh"
241
+ Requires-Dist: grpcio>=1.63.0; extra == "ssh"
242
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "ssh"
243
+ Requires-Dist: aiosqlite; extra == "ssh"
244
+ Requires-Dist: greenlet; extra == "ssh"
116
245
  Provides-Extra: runpod
117
246
  Requires-Dist: runpod>=1.6.1; extra == "runpod"
247
+ Requires-Dist: tomli; extra == "runpod"
248
+ Requires-Dist: casbin; extra == "runpod"
249
+ Requires-Dist: sqlalchemy_adapter; extra == "runpod"
250
+ Requires-Dist: passlib; extra == "runpod"
251
+ Requires-Dist: pyjwt; extra == "runpod"
252
+ Requires-Dist: aiohttp; extra == "runpod"
253
+ Requires-Dist: anyio; extra == "runpod"
254
+ Requires-Dist: grpcio>=1.63.0; extra == "runpod"
255
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "runpod"
256
+ Requires-Dist: aiosqlite; extra == "runpod"
257
+ Requires-Dist: greenlet; extra == "runpod"
118
258
  Provides-Extra: fluidstack
259
+ Requires-Dist: casbin; extra == "fluidstack"
260
+ Requires-Dist: sqlalchemy_adapter; extra == "fluidstack"
261
+ Requires-Dist: passlib; extra == "fluidstack"
262
+ Requires-Dist: pyjwt; extra == "fluidstack"
263
+ Requires-Dist: aiohttp; extra == "fluidstack"
264
+ Requires-Dist: anyio; extra == "fluidstack"
265
+ Requires-Dist: grpcio>=1.63.0; extra == "fluidstack"
266
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "fluidstack"
267
+ Requires-Dist: aiosqlite; extra == "fluidstack"
268
+ Requires-Dist: greenlet; extra == "fluidstack"
119
269
  Provides-Extra: cudo
120
270
  Requires-Dist: cudo-compute>=0.1.10; extra == "cudo"
271
+ Requires-Dist: casbin; extra == "cudo"
272
+ Requires-Dist: sqlalchemy_adapter; extra == "cudo"
273
+ Requires-Dist: passlib; extra == "cudo"
274
+ Requires-Dist: pyjwt; extra == "cudo"
275
+ Requires-Dist: aiohttp; extra == "cudo"
276
+ Requires-Dist: anyio; extra == "cudo"
277
+ Requires-Dist: grpcio>=1.63.0; extra == "cudo"
278
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "cudo"
279
+ Requires-Dist: aiosqlite; extra == "cudo"
280
+ Requires-Dist: greenlet; extra == "cudo"
121
281
  Provides-Extra: paperspace
282
+ Requires-Dist: casbin; extra == "paperspace"
283
+ Requires-Dist: sqlalchemy_adapter; extra == "paperspace"
284
+ Requires-Dist: passlib; extra == "paperspace"
285
+ Requires-Dist: pyjwt; extra == "paperspace"
286
+ Requires-Dist: aiohttp; extra == "paperspace"
287
+ Requires-Dist: anyio; extra == "paperspace"
288
+ Requires-Dist: grpcio>=1.63.0; extra == "paperspace"
289
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "paperspace"
290
+ Requires-Dist: aiosqlite; extra == "paperspace"
291
+ Requires-Dist: greenlet; extra == "paperspace"
292
+ Provides-Extra: primeintellect
293
+ Requires-Dist: casbin; extra == "primeintellect"
294
+ Requires-Dist: sqlalchemy_adapter; extra == "primeintellect"
295
+ Requires-Dist: passlib; extra == "primeintellect"
296
+ Requires-Dist: pyjwt; extra == "primeintellect"
297
+ Requires-Dist: aiohttp; extra == "primeintellect"
298
+ Requires-Dist: anyio; extra == "primeintellect"
299
+ Requires-Dist: grpcio>=1.63.0; extra == "primeintellect"
300
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "primeintellect"
301
+ Requires-Dist: aiosqlite; extra == "primeintellect"
302
+ Requires-Dist: greenlet; extra == "primeintellect"
122
303
  Provides-Extra: do
123
304
  Requires-Dist: pydo>=0.3.0; extra == "do"
124
305
  Requires-Dist: azure-core>=1.24.0; extra == "do"
125
306
  Requires-Dist: azure-common; extra == "do"
307
+ Requires-Dist: casbin; extra == "do"
308
+ Requires-Dist: sqlalchemy_adapter; extra == "do"
309
+ Requires-Dist: passlib; extra == "do"
310
+ Requires-Dist: pyjwt; extra == "do"
311
+ Requires-Dist: aiohttp; extra == "do"
312
+ Requires-Dist: anyio; extra == "do"
313
+ Requires-Dist: grpcio>=1.63.0; extra == "do"
314
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "do"
315
+ Requires-Dist: aiosqlite; extra == "do"
316
+ Requires-Dist: greenlet; extra == "do"
126
317
  Provides-Extra: vast
127
318
  Requires-Dist: vastai-sdk>=0.1.12; extra == "vast"
319
+ Requires-Dist: casbin; extra == "vast"
320
+ Requires-Dist: sqlalchemy_adapter; extra == "vast"
321
+ Requires-Dist: passlib; extra == "vast"
322
+ Requires-Dist: pyjwt; extra == "vast"
323
+ Requires-Dist: aiohttp; extra == "vast"
324
+ Requires-Dist: anyio; extra == "vast"
325
+ Requires-Dist: grpcio>=1.63.0; extra == "vast"
326
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "vast"
327
+ Requires-Dist: aiosqlite; extra == "vast"
328
+ Requires-Dist: greenlet; extra == "vast"
128
329
  Provides-Extra: vsphere
129
330
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "vsphere"
331
+ Requires-Dist: casbin; extra == "vsphere"
332
+ Requires-Dist: sqlalchemy_adapter; extra == "vsphere"
333
+ Requires-Dist: passlib; extra == "vsphere"
334
+ Requires-Dist: pyjwt; extra == "vsphere"
335
+ Requires-Dist: aiohttp; extra == "vsphere"
336
+ Requires-Dist: anyio; extra == "vsphere"
337
+ Requires-Dist: grpcio>=1.63.0; extra == "vsphere"
338
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "vsphere"
339
+ Requires-Dist: aiosqlite; extra == "vsphere"
340
+ Requires-Dist: greenlet; extra == "vsphere"
130
341
  Provides-Extra: nebius
131
- Requires-Dist: nebius>=0.2.47; extra == "nebius"
342
+ Requires-Dist: nebius>=0.3.12; extra == "nebius"
343
+ Requires-Dist: grpcio>=1.63.0; extra == "nebius"
344
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "nebius"
132
345
  Requires-Dist: awscli>=1.27.10; extra == "nebius"
133
346
  Requires-Dist: botocore>=1.29.10; extra == "nebius"
134
347
  Requires-Dist: boto3>=1.26.1; extra == "nebius"
135
348
  Requires-Dist: colorama<0.4.5; extra == "nebius"
349
+ Requires-Dist: casbin; extra == "nebius"
350
+ Requires-Dist: sqlalchemy_adapter; extra == "nebius"
351
+ Requires-Dist: passlib; extra == "nebius"
352
+ Requires-Dist: pyjwt; extra == "nebius"
353
+ Requires-Dist: aiohttp; extra == "nebius"
354
+ Requires-Dist: anyio; extra == "nebius"
355
+ Requires-Dist: grpcio>=1.63.0; extra == "nebius"
356
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "nebius"
357
+ Requires-Dist: aiosqlite; extra == "nebius"
358
+ Requires-Dist: greenlet; extra == "nebius"
136
359
  Provides-Extra: hyperbolic
137
- Provides-Extra: server
138
- Requires-Dist: casbin; extra == "server"
139
- Requires-Dist: sqlalchemy_adapter; extra == "server"
140
- Requires-Dist: passlib; extra == "server"
141
- Requires-Dist: pyjwt; extra == "server"
142
- Requires-Dist: aiohttp; extra == "server"
143
- Requires-Dist: anyio; extra == "server"
144
- Requires-Dist: grpcio>=1.63.0; extra == "server"
145
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
146
- Requires-Dist: aiosqlite; extra == "server"
360
+ Requires-Dist: casbin; extra == "hyperbolic"
361
+ Requires-Dist: sqlalchemy_adapter; extra == "hyperbolic"
362
+ Requires-Dist: passlib; extra == "hyperbolic"
363
+ Requires-Dist: pyjwt; extra == "hyperbolic"
364
+ Requires-Dist: aiohttp; extra == "hyperbolic"
365
+ Requires-Dist: anyio; extra == "hyperbolic"
366
+ Requires-Dist: grpcio>=1.63.0; extra == "hyperbolic"
367
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "hyperbolic"
368
+ Requires-Dist: aiosqlite; extra == "hyperbolic"
369
+ Requires-Dist: greenlet; extra == "hyperbolic"
370
+ Provides-Extra: seeweb
371
+ Requires-Dist: ecsapi==0.4.0; extra == "seeweb"
372
+ Requires-Dist: casbin; extra == "seeweb"
373
+ Requires-Dist: sqlalchemy_adapter; extra == "seeweb"
374
+ Requires-Dist: passlib; extra == "seeweb"
375
+ Requires-Dist: pyjwt; extra == "seeweb"
376
+ Requires-Dist: aiohttp; extra == "seeweb"
377
+ Requires-Dist: anyio; extra == "seeweb"
378
+ Requires-Dist: grpcio>=1.63.0; extra == "seeweb"
379
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "seeweb"
380
+ Requires-Dist: aiosqlite; extra == "seeweb"
381
+ Requires-Dist: greenlet; extra == "seeweb"
382
+ Provides-Extra: shadeform
383
+ Requires-Dist: casbin; extra == "shadeform"
384
+ Requires-Dist: sqlalchemy_adapter; extra == "shadeform"
385
+ Requires-Dist: passlib; extra == "shadeform"
386
+ Requires-Dist: pyjwt; extra == "shadeform"
387
+ Requires-Dist: aiohttp; extra == "shadeform"
388
+ Requires-Dist: anyio; extra == "shadeform"
389
+ Requires-Dist: grpcio>=1.63.0; extra == "shadeform"
390
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "shadeform"
391
+ Requires-Dist: aiosqlite; extra == "shadeform"
392
+ Requires-Dist: greenlet; extra == "shadeform"
393
+ Provides-Extra: slurm
394
+ Requires-Dist: casbin; extra == "slurm"
395
+ Requires-Dist: sqlalchemy_adapter; extra == "slurm"
396
+ Requires-Dist: passlib; extra == "slurm"
397
+ Requires-Dist: pyjwt; extra == "slurm"
398
+ Requires-Dist: aiohttp; extra == "slurm"
399
+ Requires-Dist: anyio; extra == "slurm"
400
+ Requires-Dist: grpcio>=1.63.0; extra == "slurm"
401
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "slurm"
402
+ Requires-Dist: aiosqlite; extra == "slurm"
403
+ Requires-Dist: greenlet; extra == "slurm"
147
404
  Provides-Extra: all
148
- Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
149
- Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
150
- Requires-Dist: grpcio>=1.63.0; extra == "all"
151
- Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
405
+ Requires-Dist: ibm-cloud-sdk-core; extra == "all"
406
+ Requires-Dist: azure-core>=1.24.0; extra == "all"
407
+ Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
152
408
  Requires-Dist: colorama<0.4.5; extra == "all"
153
- Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
154
409
  Requires-Dist: sqlalchemy_adapter; extra == "all"
155
- Requires-Dist: aiosqlite; extra == "all"
156
- Requires-Dist: ibm-cos-sdk; extra == "all"
157
- Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
158
- Requires-Dist: websockets; extra == "all"
159
- Requires-Dist: awscli>=1.27.10; extra == "all"
160
- Requires-Dist: boto3>=1.26.1; extra == "all"
161
- Requires-Dist: pydo>=0.3.0; extra == "all"
162
- Requires-Dist: google-cloud-storage; extra == "all"
163
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
164
- Requires-Dist: azure-core>=1.24.0; extra == "all"
165
- Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
166
- Requires-Dist: casbin; extra == "all"
167
- Requires-Dist: docker; extra == "all"
168
- Requires-Dist: passlib; extra == "all"
169
- Requires-Dist: ibm-vpc; extra == "all"
410
+ Requires-Dist: msgraph-sdk; extra == "all"
411
+ Requires-Dist: greenlet; extra == "all"
170
412
  Requires-Dist: oci; extra == "all"
171
- Requires-Dist: azure-cli>=2.65.0; extra == "all"
172
- Requires-Dist: nebius>=0.2.47; extra == "all"
173
- Requires-Dist: azure-core>=1.31.0; extra == "all"
413
+ Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
414
+ Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
415
+ Requires-Dist: pyjwt; extra == "all"
174
416
  Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
417
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
418
+ Requires-Dist: runpod>=1.6.1; extra == "all"
419
+ Requires-Dist: docker; extra == "all"
175
420
  Requires-Dist: azure-identity>=1.19.0; extra == "all"
176
- Requires-Dist: botocore>=1.29.10; extra == "all"
177
421
  Requires-Dist: python-dateutil; extra == "all"
178
- Requires-Dist: ibm-cloud-sdk-core; extra == "all"
179
- Requires-Dist: ray[default]!=2.6.0,>=2.2.0; extra == "all"
422
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
423
+ Requires-Dist: azure-core>=1.31.0; extra == "all"
424
+ Requires-Dist: passlib; extra == "all"
425
+ Requires-Dist: awscli>=1.27.10; extra == "all"
426
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
427
+ Requires-Dist: boto3>=1.26.1; extra == "all"
428
+ Requires-Dist: botocore>=1.29.10; extra == "all"
429
+ Requires-Dist: websockets; extra == "all"
430
+ Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
431
+ Requires-Dist: azure-cli>=2.65.0; extra == "all"
180
432
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
181
- Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
182
- Requires-Dist: msgraph-sdk; extra == "all"
183
433
  Requires-Dist: msrestazure; extra == "all"
184
- Requires-Dist: pyjwt; extra == "all"
185
- Requires-Dist: aiohttp; extra == "all"
186
- Requires-Dist: runpod>=1.6.1; extra == "all"
434
+ Requires-Dist: ibm-cos-sdk; extra == "all"
435
+ Requires-Dist: grpcio>=1.63.0; extra == "all"
436
+ Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
187
437
  Requires-Dist: azure-common; extra == "all"
188
- Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
438
+ Requires-Dist: aiohttp; extra == "all"
439
+ Requires-Dist: nebius>=0.3.12; extra == "all"
440
+ Requires-Dist: ibm-vpc; extra == "all"
441
+ Requires-Dist: casbin; extra == "all"
442
+ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
443
+ Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
444
+ Requires-Dist: tomli; extra == "all"
445
+ Requires-Dist: ecsapi==0.4.0; extra == "all"
446
+ Requires-Dist: pydo>=0.3.0; extra == "all"
447
+ Requires-Dist: google-cloud-storage; extra == "all"
189
448
  Requires-Dist: anyio; extra == "all"
449
+ Requires-Dist: aiosqlite; extra == "all"
450
+ Provides-Extra: remote
451
+ Requires-Dist: grpcio>=1.63.0; extra == "remote"
452
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
453
+ Provides-Extra: server
454
+ Requires-Dist: casbin; extra == "server"
455
+ Requires-Dist: sqlalchemy_adapter; extra == "server"
456
+ Requires-Dist: passlib; extra == "server"
457
+ Requires-Dist: pyjwt; extra == "server"
458
+ Requires-Dist: aiohttp; extra == "server"
459
+ Requires-Dist: anyio; extra == "server"
460
+ Requires-Dist: grpcio>=1.63.0; extra == "server"
461
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
462
+ Requires-Dist: aiosqlite; extra == "server"
463
+ Requires-Dist: greenlet; extra == "server"
190
464
  Dynamic: author
191
465
  Dynamic: classifier
192
466
  Dynamic: description
@@ -236,13 +510,18 @@ Dynamic: summary
236
510
  ----
237
511
 
238
512
  :fire: *News* :fire:
513
+ - [Nov 2025] Serve **Kimi K2 Thinking** with reasoning capabilities on your Kubernetes or clouds: [**example**](./llm/kimi-k2-thinking/)
514
+ - [Oct 2025] Run **RL training for LLMs** with SkyRL on your Kubernetes or clouds: [**example**](./llm/skyrl/)
515
+ - [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)
516
+ - [Oct 2025] Run large-scale **LLM training with TorchTitan** on any AI infra: [**example**](./examples/training/torchtitan)
517
+ - [Sep 2025] Scaling AI infrastructure at Abridge - **10x faster development** with SkyPilot: [**blog**](https://blog.skypilot.co/abridge/)
518
+ - [Sep 2025] Network and Storage Benchmarks for LLM training on the cloud: [**blog**](https://maknee.github.io/blog/2025/Network-And-Storage-Training-Skypilot/)
239
519
  - [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/)
240
520
  - [Jul 2025] Run distributed **RL training for LLMs** with Verl (PPO, GRPO) on any cloud: [**example**](./llm/verl/)
241
- - [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)
242
521
  - [Jul 2025] Finetune **Llama4** on any distributed cluster/cloud: [**example**](./llm/llama-4-finetuning/)
243
522
  - [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/)
244
523
  - [Apr 2025] Spin up **Qwen3** on your cluster/cloud: [**example**](./llm/qwen/)
245
- - [Feb 2025] Prepare and serve **Retrieval Augmented Generation (RAG) with DeepSeek-R1**: [**blog post**](https://blog.skypilot.co/deepseek-rag), [**example**](./llm/rag/)
524
+
246
525
 
247
526
 
248
527
  **LLM Finetuning Cookbooks**: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 [**example**](./llm/vicuna-llama-2/) and [**blog**](https://blog.skypilot.co/finetuning-llama2-operational-guide/); Llama 3.1 [**example**](./llm/llama-3_1-finetuning/) and [**blog**](https://blog.skypilot.co/finetune-llama-3_1-on-your-infra/)
@@ -270,7 +549,7 @@ SkyPilot **makes Kubernetes easy for AI & Infra teams**:
270
549
  - Turbocharge your clusters: gang scheduling, multi-cluster, and scaling
271
550
 
272
551
  SkyPilot **unifies multiple clusters, clouds, and hardware**:
273
- - One interface to use reserved GPUs, Kubernetes clusters, or 16+ clouds
552
+ - One interface to use reserved GPUs, Kubernetes clusters, Slurm clusters, or 20+ clouds
274
553
  - [Flexible provisioning](https://docs.skypilot.co/en/latest/examples/auto-failover.html) of GPUs, TPUs, CPUs, with auto-retry
275
554
  - [Team deployment](https://docs.skypilot.co/en/latest/reference/api-server/api-server.html) and resource sharing
276
555
 
@@ -284,21 +563,20 @@ SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code change
284
563
  Install with pip:
285
564
  ```bash
286
565
  # Choose your clouds:
287
- pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp]"
566
+ pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,seeweb,shadeform]"
288
567
  ```
289
568
  To get the latest features and fixes, use the nightly build or [install from source](https://docs.skypilot.co/en/latest/getting-started/installation.html):
290
569
  ```bash
291
570
  # Choose your clouds:
292
- pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp]"
571
+ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,seeweb,shadeform]"
293
572
  ```
294
573
 
295
574
  <p align="center">
296
575
  <img src="docs/source/_static/intro.gif" alt="SkyPilot">
297
576
  </p>
298
577
 
299
- Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Nebius, Lambda Cloud, RunPod, Fluidstack,
300
- Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai,
301
- VMware vSphere.
578
+ Current supported infra: Kubernetes, Slurm, AWS, GCP, Azure, OCI, CoreWeave, Nebius, Lambda Cloud, RunPod, Fluidstack,
579
+ Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Seeweb, Prime Intellect, Shadeform.
302
580
  <p align="center">
303
581
  <img alt="SkyPilot" src="https://raw.githubusercontent.com/skypilot-org/skypilot/master/docs/source/images/cloud-logos-light.png" width=85%>
304
582
  </p>
@@ -315,7 +593,7 @@ You can find our documentation [here](https://docs.skypilot.co/).
315
593
 
316
594
  A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.
317
595
 
318
- Once written in this [**unified interface**](https://docs.skypilot.co/en/latest/reference/yaml-spec.html) (YAML or Python API), the task can be launched on any available infra (Kubernetes, cloud, etc.). This avoids vendor lock-in, and allows easily moving jobs to a different provider.
596
+ Once written in this [**unified interface**](https://docs.skypilot.co/en/latest/reference/yaml-spec.html) (YAML or Python API), the task can be launched on any available infra (Kubernetes, Slurm, cloud, etc.). This avoids vendor lock-in, and allows easily moving jobs to a different provider.
319
597
 
320
598
  Paste the following into a file `my_task.yaml`:
321
599
 
@@ -369,11 +647,11 @@ Latest featured examples:
369
647
 
370
648
  | Task | Examples |
371
649
  |----------|----------|
372
- | Training | [Verl](https://docs.skypilot.co/en/latest/examples/training/verl.html), [Finetune Llama 4](https://docs.skypilot.co/en/latest/examples/training/llama-4-finetuning.html), [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.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) |
650
+ | Training | [Verl](https://docs.skypilot.co/en/latest/examples/training/verl.html), [Finetune Llama 4](https://docs.skypilot.co/en/latest/examples/training/llama-4-finetuning.html), [TorchTitan](https://docs.skypilot.co/en/latest/examples/training/torchtitan.html), [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.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) |
373
651
  | 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) |
374
- | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 4](https://docs.skypilot.co/en/latest/examples/models/llama-4.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), [Kimi-K2](https://docs.skypilot.co/en/latest/examples/models/kimi-k2.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
652
+ | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 4](https://docs.skypilot.co/en/latest/examples/models/llama-4.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), [Kimi-K2](https://docs.skypilot.co/en/latest/examples/models/kimi-k2.html), [Kimi-K2-Thinking](https://docs.skypilot.co/en/latest/examples/models/kimi-k2-thinking.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
375
653
  | 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) |
376
- | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html) |
654
+ | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html), [marimo](https://docs.skypilot.co/en/latest/examples/frameworks/marimo.html) |
377
655
 
378
656
  Source files 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).
379
657