skypilot-nightly 1.0.0.dev20250425__py3-none-any.whl → 1.0.0.dev20250427__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 (30) hide show
  1. sky/__init__.py +2 -2
  2. sky/cli.py +1 -1
  3. sky/client/cli.py +1 -1
  4. sky/client/sdk.py +7 -4
  5. sky/clouds/gcp.py +23 -10
  6. sky/clouds/runpod.py +14 -5
  7. sky/clouds/service_catalog/runpod_catalog.py +0 -10
  8. sky/dashboard/out/404.html +1 -1
  9. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  10. sky/dashboard/out/clusters/[cluster].html +1 -1
  11. sky/dashboard/out/clusters.html +1 -1
  12. sky/dashboard/out/index.html +1 -1
  13. sky/dashboard/out/jobs/[job].html +1 -1
  14. sky/dashboard/out/jobs.html +1 -1
  15. sky/exceptions.py +5 -0
  16. sky/jobs/server/core.py +31 -3
  17. sky/provision/aws/instance.py +4 -1
  18. sky/provision/kubernetes/instance.py +4 -1
  19. sky/provision/runpod/instance.py +17 -14
  20. sky/provision/runpod/utils.py +4 -2
  21. sky/server/common.py +25 -4
  22. sky/templates/runpod-ray.yml.j2 +1 -0
  23. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/METADATA +1 -1
  24. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/RECORD +30 -30
  25. /sky/dashboard/out/_next/static/{hTtTTWqHyRidxVG24ujEi → kTfCjujxwqIQ4b7YvP7Uq}/_buildManifest.js +0 -0
  26. /sky/dashboard/out/_next/static/{hTtTTWqHyRidxVG24ujEi → kTfCjujxwqIQ4b7YvP7Uq}/_ssgManifest.js +0 -0
  27. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/WHEEL +0 -0
  28. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/entry_points.txt +0 -0
  29. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/licenses/LICENSE +0 -0
  30. {skypilot_nightly-1.0.0.dev20250425.dist-info → skypilot_nightly-1.0.0.dev20250427.dist-info}/top_level.txt +0 -0
sky/__init__.py CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = 'e9e27ba0f154b7c292791c4e1290a5a55338e20b'
8
+ _SKYPILOT_COMMIT_SHA = '966b4b5f431d8912d7fecd151b5e069bca0b9f13'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20250425'
38
+ __version__ = '1.0.0.dev20250427'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
sky/cli.py CHANGED
@@ -5910,7 +5910,7 @@ def api_info():
5910
5910
  api_server_info = sdk.api_info()
5911
5911
  user_name = os.getenv(constants.USER_ENV_VAR, getpass.getuser())
5912
5912
  user_hash = common_utils.get_user_hash()
5913
- dashboard_url = f'{url}/dashboard'
5913
+ dashboard_url = server_common.get_dashboard_url(url)
5914
5914
  click.echo(f'Using SkyPilot API server: {url} Dashboard: {dashboard_url}\n'
5915
5915
  f'{ux_utils.INDENT_SYMBOL}Status: {api_server_info["status"]}, '
5916
5916
  f'commit: {api_server_info["commit"]}, '
sky/client/cli.py CHANGED
@@ -5910,7 +5910,7 @@ def api_info():
5910
5910
  api_server_info = sdk.api_info()
5911
5911
  user_name = os.getenv(constants.USER_ENV_VAR, getpass.getuser())
5912
5912
  user_hash = common_utils.get_user_hash()
5913
- dashboard_url = f'{url}/dashboard'
5913
+ dashboard_url = server_common.get_dashboard_url(url)
5914
5914
  click.echo(f'Using SkyPilot API server: {url} Dashboard: {dashboard_url}\n'
5915
5915
  f'{ux_utils.INDENT_SYMBOL}Status: {api_server_info["status"]}, '
5916
5916
  f'commit: {api_server_info["commit"]}, '
sky/client/sdk.py CHANGED
@@ -301,7 +301,7 @@ def validate(
301
301
  def dashboard() -> None:
302
302
  """Starts the dashboard for SkyPilot."""
303
303
  api_server_url = server_common.get_server_url()
304
- url = f'{api_server_url}/dashboard'
304
+ url = server_common.get_dashboard_url(api_server_url)
305
305
  logger.info(f'Opening dashboard in browser: {url}')
306
306
  webbrowser.open(url)
307
307
 
@@ -1725,9 +1725,11 @@ def api_start(
1725
1725
  if foreground:
1726
1726
  # Explain why current process exited
1727
1727
  logger.info('API server is already running:')
1728
- dashboard_msg = f'Dashboard: {server_common.get_server_url(host)}/dashboard'
1728
+ api_server_url = server_common.get_server_url(host)
1729
+ dashboard_url = server_common.get_dashboard_url(api_server_url)
1730
+ dashboard_msg = f'Dashboard: {dashboard_url}'
1729
1731
  logger.info(f'{ux_utils.INDENT_SYMBOL}SkyPilot API server: '
1730
- f'{server_common.get_server_url(host)} {dashboard_msg}\n'
1732
+ f'{api_server_url} {dashboard_msg}\n'
1731
1733
  f'{ux_utils.INDENT_LAST_SYMBOL}'
1732
1734
  f'View API server logs at: {constants.API_SERVER_LOGS}')
1733
1735
 
@@ -1835,7 +1837,8 @@ def api_login(endpoint: Optional[str] = None) -> None:
1835
1837
  config = skypilot_config.get_user_config()
1836
1838
  config.set_nested(('api_server', 'endpoint'), endpoint)
1837
1839
  common_utils.dump_yaml(str(config_path), dict(config))
1838
- dashboard_msg = f'Dashboard: {endpoint}/dashboard'
1840
+ dashboard_url = server_common.get_dashboard_url(endpoint)
1841
+ dashboard_msg = f'Dashboard: {dashboard_url}'
1839
1842
  click.secho(
1840
1843
  f'Logged in to SkyPilot API server at {endpoint}.'
1841
1844
  f' {dashboard_msg}',
sky/clouds/gcp.py CHANGED
@@ -479,7 +479,7 @@ class GCP(clouds.Cloud):
479
479
  'custom_resources': None,
480
480
  'use_spot': r.use_spot,
481
481
  'gcp_project_id': self.get_project_id(dryrun),
482
- **GCP._get_disk_specs(_failover_disk_tier()),
482
+ **GCP._get_disk_specs(r.instance_type, _failover_disk_tier()),
483
483
  }
484
484
  accelerators = r.accelerators
485
485
  if accelerators is not None:
@@ -1015,20 +1015,23 @@ class GCP(clouds.Cloud):
1015
1015
  if disk_tier != resources_utils.DiskTier.ULTRA or instance_type is None:
1016
1016
  return True, ''
1017
1017
  # Ultra disk tier (pd-extreme) only support m2, m3 and part of n2
1018
- # instance types, so we failover to lower tiers for other instance
1019
- # types. Reference:
1018
+ # instance types. For a3 instances, we map the ULTRA tier to
1019
+ # hyperdisk-balanced. For all other instance types, we failover to
1020
+ # lower tiers. Reference:
1020
1021
  # https://cloud.google.com/compute/docs/disks/extreme-persistent-disk#machine_shape_support # pylint: disable=line-too-long
1021
1022
  series = instance_type.split('-')[0]
1022
- if series in ['m2', 'm3', 'n2']:
1023
+ if series in ['m2', 'm3', 'n2', 'a3']:
1023
1024
  if series == 'n2':
1024
1025
  num_cpus = int(instance_type.split('-')[2])
1025
1026
  if num_cpus < 64:
1026
1027
  return False, ('n2 series with less than 64 vCPUs are '
1027
1028
  'not supported with pd-extreme.')
1028
1029
  return True, ''
1029
- return False, (f'{series} series is not supported with pd-extreme. '
1030
- 'Only m2, m3 series and n2 series with 64 or more vCPUs '
1031
- 'are supported.')
1030
+ return False, (f'{series} series is not supported with pd-extreme '
1031
+ 'or hyperdisk-balanced. Only m2, m3 series and n2 '
1032
+ 'series with 64 or more vCPUs are supported with '
1033
+ 'pd-extreme. Also, only a3 is supported with '
1034
+ 'hyperdisk-balanced.')
1032
1035
 
1033
1036
  @classmethod
1034
1037
  def check_disk_tier_enabled(cls, instance_type: Optional[str],
@@ -1039,7 +1042,7 @@ class GCP(clouds.Cloud):
1039
1042
  raise exceptions.NotSupportedError(msg)
1040
1043
 
1041
1044
  @classmethod
1042
- def _get_disk_type(cls,
1045
+ def _get_disk_type(cls, instance_type: Optional[str],
1043
1046
  disk_tier: Optional[resources_utils.DiskTier]) -> str:
1044
1047
  tier = cls._translate_disk_tier(disk_tier)
1045
1048
  tier2name = {
@@ -1048,13 +1051,23 @@ class GCP(clouds.Cloud):
1048
1051
  resources_utils.DiskTier.MEDIUM: 'pd-balanced',
1049
1052
  resources_utils.DiskTier.LOW: 'pd-standard',
1050
1053
  }
1054
+
1055
+ # Remap series-specific disk types
1056
+ series = instance_type.split('-')[0] # type: ignore
1057
+ if series == 'a3':
1058
+ tier2name[resources_utils.DiskTier.LOW] = tier2name[
1059
+ resources_utils.DiskTier.MEDIUM]
1060
+ tier2name[resources_utils.DiskTier.ULTRA] = 'hyperdisk-balanced'
1061
+
1051
1062
  return tier2name[tier]
1052
1063
 
1053
1064
  @classmethod
1054
1065
  def _get_disk_specs(
1055
- cls,
1066
+ cls, instance_type: Optional[str],
1056
1067
  disk_tier: Optional[resources_utils.DiskTier]) -> Dict[str, Any]:
1057
- specs: Dict[str, Any] = {'disk_tier': cls._get_disk_type(disk_tier)}
1068
+ specs: Dict[str, Any] = {
1069
+ 'disk_tier': cls._get_disk_type(instance_type, disk_tier)
1070
+ }
1058
1071
  if disk_tier == resources_utils.DiskTier.ULTRA:
1059
1072
  # Only pd-extreme supports custom iops.
1060
1073
  # see https://cloud.google.com/compute/docs/disks#disk-types
sky/clouds/runpod.py CHANGED
@@ -67,13 +67,18 @@ class RunPod(clouds.Cloud):
67
67
  accelerators: Optional[Dict[str, int]],
68
68
  use_spot: bool, region: Optional[str],
69
69
  zone: Optional[str]) -> List[clouds.Region]:
70
- assert zone is None, 'RunPod does not support zones.'
71
- del accelerators, zone # unused
70
+ del accelerators # unused
72
71
  regions = service_catalog.get_region_zones_for_instance_type(
73
72
  instance_type, use_spot, 'runpod')
74
73
 
75
74
  if region is not None:
76
75
  regions = [r for r in regions if r.name == region]
76
+
77
+ if zone is not None:
78
+ for r in regions:
79
+ assert r.zones is not None, r
80
+ r.set_zones([z for z in r.zones if z.name == zone])
81
+ regions = [r for r in regions if r.zones]
77
82
  return regions
78
83
 
79
84
  @classmethod
@@ -93,7 +98,7 @@ class RunPod(clouds.Cloud):
93
98
  instance_type: str,
94
99
  accelerators: Optional[Dict[str, int]] = None,
95
100
  use_spot: bool = False,
96
- ) -> Iterator[None]:
101
+ ) -> Iterator[Optional[List['clouds.Zone']]]:
97
102
  del num_nodes # unused
98
103
  regions = cls.regions_with_offering(instance_type,
99
104
  accelerators,
@@ -101,7 +106,7 @@ class RunPod(clouds.Cloud):
101
106
  region=region,
102
107
  zone=None)
103
108
  for r in regions:
104
- assert r.zones is None, r
109
+ assert r
105
110
  yield r.zones
106
111
 
107
112
  def instance_type_to_hourly_cost(self,
@@ -158,7 +163,10 @@ class RunPod(clouds.Cloud):
158
163
  zones: Optional[List['clouds.Zone']],
159
164
  num_nodes: int,
160
165
  dryrun: bool = False) -> Dict[str, Optional[str]]:
161
- del zones, dryrun, cluster_name # unused
166
+ del dryrun, cluster_name # unused
167
+ assert zones is not None, (region, zones)
168
+
169
+ zone_names = [zone.name for zone in zones]
162
170
 
163
171
  r = resources
164
172
  acc_dict = self.get_accelerators_from_instance_type(r.instance_type)
@@ -187,6 +195,7 @@ class RunPod(clouds.Cloud):
187
195
  'instance_type': instance_type,
188
196
  'custom_resources': custom_resources,
189
197
  'region': region.name,
198
+ 'availability_zone': ','.join(zone_names),
190
199
  'image_id': image_id,
191
200
  'use_spot': use_spot,
192
201
  'bid_per_gpu': str(hourly_cost),
@@ -8,7 +8,6 @@ import typing
8
8
  from typing import Dict, List, Optional, Tuple, Union
9
9
 
10
10
  from sky.clouds.service_catalog import common
11
- from sky.utils import ux_utils
12
11
 
13
12
  if typing.TYPE_CHECKING:
14
13
  from sky.clouds import cloud
@@ -23,9 +22,6 @@ def instance_type_exists(instance_type: str) -> bool:
23
22
  def validate_region_zone(
24
23
  region: Optional[str],
25
24
  zone: Optional[str]) -> Tuple[Optional[str], Optional[str]]:
26
- if zone is not None:
27
- with ux_utils.print_exception_no_traceback():
28
- raise ValueError('RunPod does not support zones.')
29
25
  return common.validate_region_zone_impl('runpod', _df, region, zone)
30
26
 
31
27
 
@@ -34,9 +30,6 @@ def get_hourly_cost(instance_type: str,
34
30
  region: Optional[str] = None,
35
31
  zone: Optional[str] = None) -> float:
36
32
  """Returns the cost, or the cheapest cost among all zones for spot."""
37
- if zone is not None:
38
- with ux_utils.print_exception_no_traceback():
39
- raise ValueError('RunPod does not support zones.')
40
33
  return common.get_hourly_cost_impl(_df, instance_type, use_spot, region,
41
34
  zone)
42
35
 
@@ -69,9 +62,6 @@ def get_instance_type_for_accelerator(
69
62
  region: Optional[str] = None,
70
63
  zone: Optional[str] = None) -> Tuple[Optional[List[str]], List[str]]:
71
64
  """Returns a list of instance types that have the given accelerator."""
72
- if zone is not None:
73
- with ux_utils.print_exception_no_traceback():
74
- raise ValueError('RunPod does not support zones.')
75
65
  return common.get_instance_type_for_accelerator_impl(df=_df,
76
66
  acc_name=acc_name,
77
67
  acc_count=acc_count,
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-6ac338bc2239cb45.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-6ac338bc2239cb45.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-f9f039532ca8cbc4.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-1c519e1afc523dc9.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-1c519e1afc523dc9.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"hTtTTWqHyRidxVG24ujEi","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-9e60713e0c441abc.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-2db3ee3fba33dd9e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-a75029b67aab6a2e.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/jobs">Managed Jobs</a></div><div class="flex items-center space-x-2"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-9 rounded-md px-3 text-sky-blue hover:text-sky-blue-bright" title="Refresh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div class="relative"><div class="flex flex-col space-y-1 mb-1"><div class="flex flex-wrap items-center text-sm mb-1"><span class="mr-2 text-sm font-medium">Statuses:</span><div class="flex flex-wrap gap-2 items-center"></div></div></div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&amp;_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">ID</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Name</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Submitted</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Duration</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Recoveries</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Details</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&amp;:has([role=checkbox])]:pr-0">Logs</th></tr></thead><tbody class="[&amp;_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&amp;:has([role=checkbox])]:pr-0 text-center py-6" colSpan="12"><div class="flex flex-col items-center space-y-4"><p class="text-gray-500">No active jobs</p></div></td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"kTfCjujxwqIQ4b7YvP7Uq","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
sky/exceptions.py CHANGED
@@ -293,6 +293,11 @@ class ClusterDoesNotExist(ValueError):
293
293
  pass
294
294
 
295
295
 
296
+ class CachedClusterUnavailable(Exception):
297
+ """Raised when a cached cluster record is unavailable."""
298
+ pass
299
+
300
+
296
301
  class NotSupportedError(Exception):
297
302
  """Raised when a feature is not supported."""
298
303
  pass
sky/jobs/server/core.py CHANGED
@@ -14,6 +14,7 @@ from sky import backends
14
14
  from sky import core
15
15
  from sky import exceptions
16
16
  from sky import execution
17
+ from sky import global_user_state
17
18
  from sky import provision as provision_lib
18
19
  from sky import sky_logging
19
20
  from sky import task as task_lib
@@ -64,6 +65,8 @@ def launch(
64
65
  ValueError: cluster does not exist. Or, the entrypoint is not a valid
65
66
  chain dag.
66
67
  sky.exceptions.NotSupportedError: the feature is not supported.
68
+ sky.exceptions.CachedClusterUnavailable: cached jobs controller cluster
69
+ is unavailable
67
70
 
68
71
  Returns:
69
72
  job_id: Optional[int]; the job ID of the submitted job. None if the
@@ -103,6 +106,31 @@ def launch(
103
106
  with rich_utils.safe_status(
104
107
  ux_utils.spinner_message('Initializing managed job')):
105
108
 
109
+ # Check whether cached jobs controller cluster is accessible
110
+ cluster_name = (
111
+ controller_utils.Controllers.JOBS_CONTROLLER.value.cluster_name)
112
+ record = global_user_state.get_cluster_from_name(cluster_name)
113
+ if record is not None:
114
+ # there is a cached jobs controller cluster
115
+ try:
116
+ # TODO: do something with returned status?
117
+ _, _ = backend_utils.refresh_cluster_status_handle(
118
+ cluster_name=cluster_name,
119
+ force_refresh_statuses=set(status_lib.ClusterStatus),
120
+ acquire_per_cluster_status_lock=False)
121
+ except (exceptions.ClusterOwnerIdentityMismatchError,
122
+ exceptions.CloudUserIdentityError,
123
+ exceptions.ClusterStatusFetchingError) as e:
124
+ # we weren't able to refresh the cluster for its status.
125
+ with ux_utils.print_exception_no_traceback():
126
+ raise exceptions.CachedClusterUnavailable(
127
+ f'Cached jobs controller cluster '
128
+ f'{cluster_name} cannot be refreshed. Please check if '
129
+ 'the cluster is accessible. If the cluster was '
130
+ 'removed, consider removing the cluster from SkyPilot '
131
+ f'with:\n\n`sky down {cluster_name} --purge`\n\n'
132
+ f'Reason: {common_utils.format_exception(e)}')
133
+
106
134
  local_to_controller_file_mounts = {}
107
135
 
108
136
  if storage_lib.get_cached_enabled_storage_cloud_names_or_refresh():
@@ -142,11 +170,11 @@ def launch(
142
170
  remote_user_config_path = f'{prefix}/{dag.name}-{dag_uuid}.config_yaml'
143
171
  remote_env_file_path = f'{prefix}/{dag.name}-{dag_uuid}.env'
144
172
  controller_resources = controller_utils.get_controller_resources(
145
- controller=controller_utils.Controllers.JOBS_CONTROLLER,
173
+ controller=controller,
146
174
  task_resources=sum([list(t.resources) for t in dag.tasks], []))
147
175
  controller_idle_minutes_to_autostop, controller_down = (
148
176
  controller_utils.get_controller_autostop_config(
149
- controller=controller_utils.Controllers.JOBS_CONTROLLER))
177
+ controller=controller))
150
178
 
151
179
  vars_to_fill = {
152
180
  'remote_user_yaml_path': remote_user_yaml_path,
@@ -162,7 +190,7 @@ def launch(
162
190
  'dashboard_setup_cmd': managed_job_constants.DASHBOARD_SETUP_CMD,
163
191
  'dashboard_user_id': common.SERVER_ID,
164
192
  **controller_utils.shared_controller_vars_to_fill(
165
- controller_utils.Controllers.JOBS_CONTROLLER,
193
+ controller,
166
194
  remote_user_config_path=remote_user_config_path,
167
195
  local_user_config=mutated_user_config,
168
196
  ),
@@ -799,6 +799,7 @@ def open_ports(
799
799
  range(existing_rule['FromPort'], existing_rule['ToPort'] + 1))
800
800
  elif existing_rule['IpProtocol'] == '-1':
801
801
  # For AWS, IpProtocol = -1 means all traffic
802
+ all_traffic_allowed: bool = False
802
803
  for group_pairs in existing_rule['UserIdGroupPairs']:
803
804
  if group_pairs['GroupId'] != sg.id:
804
805
  # We skip the port opening when the rule allows access from
@@ -807,8 +808,10 @@ def open_ports(
807
808
  # The security group created by SkyPilot allows all traffic
808
809
  # from the same security group, which should not be skipped.
809
810
  existing_ports.add(-1)
811
+ all_traffic_allowed = True
810
812
  break
811
- break
813
+ if all_traffic_allowed:
814
+ break
812
815
 
813
816
  ports_to_open = []
814
817
  # Do not need to open any ports when all traffic is already allowed.
@@ -934,11 +934,14 @@ def _terminate_node(namespace: str, context: Optional[str], pod_name: str,
934
934
  # Note - delete pod after all other resources are deleted.
935
935
  # This is to ensure there are no leftover resources if this down is run
936
936
  # from within the pod, e.g., for autodown.
937
+ # Note - some misbehaving pods may not terminate gracefully if they have
938
+ # open file descriptors. We force delete pods to avoid this.
937
939
  _delete_k8s_resource_with_retry(
938
940
  delete_func=lambda: kubernetes.core_api(context).delete_namespaced_pod(
939
941
  name=pod_name,
940
942
  namespace=namespace,
941
- _request_timeout=config_lib.DELETION_TIMEOUT),
943
+ _request_timeout=config_lib.DELETION_TIMEOUT,
944
+ grace_period_seconds=0),
942
945
  resource_type='pod',
943
946
  resource_name=pod_name)
944
947
 
@@ -70,13 +70,14 @@ def run_instances(region: str, cluster_name_on_cloud: str,
70
70
  f'Cluster {cluster_name_on_cloud} has no head node.')
71
71
  logger.info(f'Cluster {cluster_name_on_cloud} already has '
72
72
  f'{len(exist_instances)} nodes, no need to start more.')
73
- return common.ProvisionRecord(provider_name='runpod',
74
- cluster_name=cluster_name_on_cloud,
75
- region=region,
76
- zone=None,
77
- head_instance_id=head_instance_id,
78
- resumed_instance_ids=[],
79
- created_instance_ids=[])
73
+ return common.ProvisionRecord(
74
+ provider_name='runpod',
75
+ cluster_name=cluster_name_on_cloud,
76
+ region=region,
77
+ zone=config.provider_config['availability_zone'],
78
+ head_instance_id=head_instance_id,
79
+ resumed_instance_ids=[],
80
+ created_instance_ids=[])
80
81
 
81
82
  created_instance_ids = []
82
83
  for _ in range(to_start_count):
@@ -87,6 +88,7 @@ def run_instances(region: str, cluster_name_on_cloud: str,
87
88
  node_type=node_type,
88
89
  instance_type=config.node_config['InstanceType'],
89
90
  region=region,
91
+ zone=config.provider_config['availability_zone'],
90
92
  disk_size=config.node_config['DiskSize'],
91
93
  image_name=config.node_config['ImageId'],
92
94
  ports=config.ports_to_open_on_launch,
@@ -118,13 +120,14 @@ def run_instances(region: str, cluster_name_on_cloud: str,
118
120
 
119
121
  time.sleep(POLL_INTERVAL)
120
122
  assert head_instance_id is not None, 'head_instance_id should not be None'
121
- return common.ProvisionRecord(provider_name='runpod',
122
- cluster_name=cluster_name_on_cloud,
123
- region=region,
124
- zone=None,
125
- head_instance_id=head_instance_id,
126
- resumed_instance_ids=[],
127
- created_instance_ids=created_instance_ids)
123
+ return common.ProvisionRecord(
124
+ provider_name='runpod',
125
+ cluster_name=cluster_name_on_cloud,
126
+ region=region,
127
+ zone=config.provider_config['availability_zone'],
128
+ head_instance_id=head_instance_id,
129
+ resumed_instance_ids=[],
130
+ created_instance_ids=created_instance_ids)
128
131
 
129
132
 
130
133
  def wait_instances(region: str, cluster_name_on_cloud: str,
@@ -264,8 +264,9 @@ def _create_template_for_docker_login(
264
264
 
265
265
 
266
266
  def launch(cluster_name: str, node_type: str, instance_type: str, region: str,
267
- disk_size: int, image_name: str, ports: Optional[List[int]],
268
- public_key: str, preemptible: Optional[bool], bid_per_gpu: float,
267
+ zone: str, disk_size: int, image_name: str,
268
+ ports: Optional[List[int]], public_key: str,
269
+ preemptible: Optional[bool], bid_per_gpu: float,
269
270
  docker_login_config: Optional[Dict[str, str]]) -> str:
270
271
  """Launches an instance with the given parameters.
271
272
 
@@ -332,6 +333,7 @@ def launch(cluster_name: str, node_type: str, instance_type: str, region: str,
332
333
  'min_memory_in_gb': gpu_specs['memoryInGb'] * gpu_quantity,
333
334
  'gpu_count': gpu_quantity,
334
335
  'country_code': region,
336
+ 'data_center_id': zone,
335
337
  'ports': ports_str,
336
338
  'support_public_ip': True,
337
339
  'docker_args': docker_args,
sky/server/common.py CHANGED
@@ -13,6 +13,7 @@ import sys
13
13
  import time
14
14
  import typing
15
15
  from typing import Any, Dict, Optional
16
+ from urllib import parse
16
17
  import uuid
17
18
 
18
19
  import colorama
@@ -150,6 +151,23 @@ def get_server_url(host: Optional[str] = None) -> str:
150
151
  return url.rstrip('/')
151
152
 
152
153
 
154
+ @annotations.lru_cache(scope='global')
155
+ def get_dashboard_url(server_url: str) -> str:
156
+ # The server_url may include username or password with the
157
+ # format of https://username:password@example.com:8080/path
158
+ # We need to remove the username and password and only
159
+ # return `https://example.com:8080/path`
160
+ parsed = parse.urlparse(server_url)
161
+ # Reconstruct the URL without credentials but keeping the scheme
162
+ dashboard_url = f'{parsed.scheme}://{parsed.hostname}'
163
+ if parsed.port:
164
+ dashboard_url = f'{dashboard_url}:{parsed.port}'
165
+ if parsed.path:
166
+ dashboard_url = f'{dashboard_url}{parsed.path}'
167
+ dashboard_url = dashboard_url.rstrip('/')
168
+ return f'{dashboard_url}/dashboard'
169
+
170
+
153
171
  @annotations.lru_cache(scope='global')
154
172
  def is_api_server_local():
155
173
  return get_server_url() in AVAILABLE_LOCAL_API_SERVER_URLS
@@ -314,8 +332,9 @@ def _start_api_server(deploy: bool = False,
314
332
  else:
315
333
  break
316
334
 
317
- dashboard_msg = (f'Dashboard: {get_server_url(host)}/dashboard')
318
- api_server_info = get_api_server_status(get_server_url(host))
335
+ server_url = get_server_url(host)
336
+ dashboard_msg = (f'Dashboard: {get_dashboard_url(server_url)}')
337
+ api_server_info = get_api_server_status(server_url)
319
338
  if api_server_info.version == _DEV_VERSION:
320
339
  dashboard_msg += (
321
340
  f'\n{colorama.Style.RESET_ALL}{ux_utils.INDENT_SYMBOL}'
@@ -323,11 +342,13 @@ def _start_api_server(deploy: bool = False,
323
342
  if not os.path.isdir(server_constants.DASHBOARD_DIR):
324
343
  dashboard_msg += (
325
344
  'Dashboard is not built, '
326
- 'to build: npm --prefix sky/dashboard run build')
345
+ 'to build: npm --prefix sky/dashboard install '
346
+ '&& npm --prefix sky/dashboard run build')
327
347
  else:
328
348
  dashboard_msg += (
329
349
  'Dashboard may be stale when installed from source, '
330
- 'to rebuild: npm --prefix sky/dashboard run build')
350
+ 'to rebuild: npm --prefix sky/dashboard install '
351
+ '&& npm --prefix sky/dashboard run build')
331
352
  dashboard_msg += f'{colorama.Style.RESET_ALL}'
332
353
  logger.info(
333
354
  ux_utils.finishing_message(
@@ -9,6 +9,7 @@ provider:
9
9
  type: external
10
10
  module: sky.provision.runpod
11
11
  region: "{{region}}"
12
+ availability_zone: "{{availability_zone}}"
12
13
  disable_launch_config_check: true
13
14
  # For RunPod, we directly set the image id for the docker as runtime environment
14
15
  # support, thus we need to avoid the DockerInitializer detects the docker field
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250425
3
+ Version: 1.0.0.dev20250427
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,12 +1,12 @@
1
- sky/__init__.py,sha256=VrEo4Ets-aqVc_PrmYSDD--DzjMLu6fOMyuoAB105cg,6428
1
+ sky/__init__.py,sha256=unsbiR0GXKLYfaHG3BOqHm3jvU-vSsgC6IEkk6Fa6ak,6428
2
2
  sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
3
3
  sky/authentication.py,sha256=ND011K_-Ud1dVZF37A9KrwYir_ihJXcHc7iDWmuBc8Q,22872
4
4
  sky/check.py,sha256=PPNQnaaZBA9_aogJpN4gnG4XWnTqkd74c-rBYDkDRDY,16101
5
- sky/cli.py,sha256=fjiwc4joOwWTjrS-qifWFH3eiqj_0uaXTSngZpWrp94,229301
5
+ sky/cli.py,sha256=dtPi6u4oo5gcgn36fCxnrrUKj9t5DKcZGSoqKi0eOoo,229319
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=2D1AhdZ1hyD6bBdLyF0t8UJS4ObkgYMwEteWC9_6ysc,47900
8
8
  sky/dag.py,sha256=8x-VMtjvSi0lYBemCMPLYq5ONljhoABjWzMKjmmdjSo,3369
9
- sky/exceptions.py,sha256=0PwVqsSz_ei48q7RSzrF1zVQmYrZ5vRfkYUpufZw1Yc,16960
9
+ sky/exceptions.py,sha256=Vg0xhBglpB-LJKwJ060_1aWff2KN12wNi_H6SdvwRG8,17076
10
10
  sky/execution.py,sha256=IWNUmPVpHGOMb_2D9p9o6iM4BDsALxKvs2N_TH2Zf9w,28731
11
11
  sky/global_user_state.py,sha256=7HADn0mY-0omf5RbpmAZ88bjySzqKcmiD1MEmkrCoNU,33754
12
12
  sky/models.py,sha256=bGMSATMkSMr_Kp6SCoiJVVeebwSdZuzjw_jrJzVWAAc,1603
@@ -43,9 +43,9 @@ sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
44
44
  sky/benchmark/benchmark_utils.py,sha256=7rf-iHt6RXZ_pnBBWOMwcdodHQW69x27xNyx0yVog1U,26385
45
45
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
46
- sky/client/cli.py,sha256=fjiwc4joOwWTjrS-qifWFH3eiqj_0uaXTSngZpWrp94,229301
46
+ sky/client/cli.py,sha256=dtPi6u4oo5gcgn36fCxnrrUKj9t5DKcZGSoqKi0eOoo,229319
47
47
  sky/client/common.py,sha256=E_5cjxd8fWRB7fU1yfIbiyQf-IyVhpD5KkB7Fl3cQEI,15215
48
- sky/client/sdk.py,sha256=j7DlaRudq7PpIkXX0UVj5iJBS9l2LTJ68Vgnd5mMdrM,71163
48
+ sky/client/sdk.py,sha256=r_HyEuCUQvPwRWTnXJ7OUy6kzoSUxccJno7ToJ2mCMM,71315
49
49
  sky/clouds/__init__.py,sha256=OW6mJ-9hpJSBORCgt2LippLQEYZHNfnBW1mooRNNvxo,1416
50
50
  sky/clouds/aws.py,sha256=knUiTLsdVTF5Gc7YONkuF58HjOlzqwsuJrD22Q1nIB4,54583
51
51
  sky/clouds/azure.py,sha256=Zpo6ftWz_B30mX7N-An7JVO-8v7aU3f9cw1iH9phvwE,32251
@@ -53,14 +53,14 @@ sky/clouds/cloud.py,sha256=22sfoOyGYjsBj88RHp-eHHs6aqi0xDb8q_9o_v6SIFM,36690
53
53
  sky/clouds/cudo.py,sha256=_UkLEtwJsfDMKlmJfML5W3rA8VArba4x8YGIdnvgZoM,13226
54
54
  sky/clouds/do.py,sha256=-jVrq5qXxaOROT2R2U0XoYiMfLT0J1wGNodzjzcTUSI,11586
55
55
  sky/clouds/fluidstack.py,sha256=jIqW1MLe55MVME1PATZm8e6_FsiTnJawW7OdytPW0aM,12666
56
- sky/clouds/gcp.py,sha256=IDYae-KrwBnTJUvsmakbQz0pdmn8lEbLtFoMVg5MAaM,57315
56
+ sky/clouds/gcp.py,sha256=nFcrFFt5WeF9kOTQtdIHkpM9xTRrYuqB9-TiYLjGloA,57976
57
57
  sky/clouds/ibm.py,sha256=XtuPN8QgrwJdb1qb_b-7KwAE2tf_N9wh9eEfi2tcg-s,22013
58
58
  sky/clouds/kubernetes.py,sha256=K2O44w3LsIb6SqJFYyDmWd7HpK4K-cGHgrZ2BacdJJE,36754
59
59
  sky/clouds/lambda_cloud.py,sha256=H32vd30OfjXriH9SibVATrJZfZcCBTiWAXHfliGeMZk,12804
60
60
  sky/clouds/nebius.py,sha256=5n_LTFZjhsCTOFIC7pTvpOdpYuRlxx2VFiS2NXa8cMk,15086
61
61
  sky/clouds/oci.py,sha256=mZrtMGoU9uTv4eJcbc1bWTIp67fGioDB_YzVOb-bdVo,27622
62
62
  sky/clouds/paperspace.py,sha256=s_sZcGqmABEqzu0MTus8__NuHo5hIUvq2FqVZCRkTzE,11070
63
- sky/clouds/runpod.py,sha256=P486CMN-Mt3R-7jMVd3XIGjLWYy0X5B74dK_IgAp2Cg,12149
63
+ sky/clouds/runpod.py,sha256=nKNM9BogkiK67fgvYy2RZVuPTsKSxiIPEoejLIkjF7k,12467
64
64
  sky/clouds/scp.py,sha256=6OucFxDIOZFA1Z_QZwGqblW4zdBljhUjhamssvchu_0,15971
65
65
  sky/clouds/vast.py,sha256=1AZaM71dI837oeuMZEXN4muHsH3CKRLjBAPcPy1QqV4,11296
66
66
  sky/clouds/vsphere.py,sha256=yRLQESpuSOdfs4KaVTMSQJqf_3mr4VysGqSo1zs1ZtU,12453
@@ -80,7 +80,7 @@ sky/clouds/service_catalog/lambda_catalog.py,sha256=2R-ccu63BbdvO6X80MtxiniA-jLe
80
80
  sky/clouds/service_catalog/nebius_catalog.py,sha256=SEPyR9kCvirp6astnEUOfEMru48uyX_EIC6nbL1YBUA,4507
81
81
  sky/clouds/service_catalog/oci_catalog.py,sha256=cyA6ZqwHGOKuPxUl_dKmFGdeWdQGMrvl_-o2MtyF998,8580
82
82
  sky/clouds/service_catalog/paperspace_catalog.py,sha256=MOlfoGRChjEwMzu4nRAho8DrIwwUJ3QlRzrMA1RLqvE,3789
83
- sky/clouds/service_catalog/runpod_catalog.py,sha256=oWYVgSMiK3DxBE5AgROyExIq9kCTaOr3hDLSc31kqTU,4205
83
+ sky/clouds/service_catalog/runpod_catalog.py,sha256=BJ7CXEciTDpF3Jmbf0g5EHeRgb_plQF7T8vv9AskhD0,3748
84
84
  sky/clouds/service_catalog/scp_catalog.py,sha256=nrtD0hAZd1rUDsFuHI1hrBgAVSE5YprdWoYSXQooIqU,5195
85
85
  sky/clouds/service_catalog/vast_catalog.py,sha256=3QfbFx7b2UIjrMbvjPyhuc7ppaKC3hYQJbITZC5DRPA,4204
86
86
  sky/clouds/service_catalog/vsphere_catalog.py,sha256=OV3Czi3vwRSW4lqVPHxU_GND0ox322gmhv3kb11Q8AM,4412
@@ -101,11 +101,11 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
101
101
  sky/clouds/utils/gcp_utils.py,sha256=YtuS4EoAMvcRnGPgE_WLENPOPWIdvhp7dLceTw_zfas,7114
102
102
  sky/clouds/utils/oci_utils.py,sha256=0YxhgZdeIHQUI1AZ86YuswsZg5HdVCIVfSTRJsSHYI0,6396
103
103
  sky/clouds/utils/scp_utils.py,sha256=MqawUhhFHHxVnn29nOI4gJ_nF665ich4Po7bsy1afsA,15948
104
- sky/dashboard/out/404.html,sha256=mJSAqioj8wok9kxfY8AX8aWF1SAWns7pqrKSOpyRkds,2296
105
- sky/dashboard/out/clusters.html,sha256=pTQFp7Q1AoXGLwP5yAjlPlzjal4hxrae9CLLSVY4gDs,11739
104
+ sky/dashboard/out/404.html,sha256=hgQ4jMf0diP11Wv0E1ta79YhrR7eIm5dsL2VokzQ5r8,2296
105
+ sky/dashboard/out/clusters.html,sha256=ec1tlCWuSoHtb9jaRom26FiIWkwYQu17-A9h_Qx9CNQ,11739
106
106
  sky/dashboard/out/favicon.ico,sha256=TOQ3bobTJzBo24JY6SBgVR3uoYxKd9XMtP9IL_bWS1k,42245
107
- sky/dashboard/out/index.html,sha256=0rYE6peTCESfpLS3rW5kjKblnRXt3asWtW9kRMWsw2g,1407
108
- sky/dashboard/out/jobs.html,sha256=UXLiC0-mB5mWfD4O6fRAI2ZEWw-RjVFV1-3IPIktL7w,12829
107
+ sky/dashboard/out/index.html,sha256=NgQXMGqWL161ecPBrGowjoNXkNKs7EBzuyd8c4ikNvE,1407
108
+ sky/dashboard/out/jobs.html,sha256=9FpWmND2SWONrAMFBNLQol5JlFAmKdZcIZRea9qdXcc,12829
109
109
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
110
110
  sky/dashboard/out/_next/static/chunks/236-2db3ee3fba33dd9e.js,sha256=c6zARNqhT9VG1xQb_IXT_tuCvfGsglNIWWn93eCDkZo,24840
111
111
  sky/dashboard/out/_next/static/chunks/312-c3c8845990db8ffc.js,sha256=H8yGnoxM_IYM2kU-A7mESi4aV4Ph3PxbIdnM2v5Kd3M,25150
@@ -128,11 +128,11 @@ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-f383db7389368ea7.
128
128
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-6ac338bc2239cb45.js,sha256=ciMtxEIartNtC_Y66ZBfZj0todScMGOZ4XchdgesEwo,8913
129
129
  sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-1c519e1afc523dc9.js,sha256=oMjs5t_YqMrm-nDMPyazBuKyCKocY-Hp1pgWQ4_ncDc,13420
130
130
  sky/dashboard/out/_next/static/css/c6933bbb2ce7f4dd.css,sha256=V9pn7LZ7uXLy3EQjFl-5MydGktBkn2yM4SWccJF9Sm0,31944
131
- sky/dashboard/out/_next/static/hTtTTWqHyRidxVG24ujEi/_buildManifest.js,sha256=7uuHw3t0SwdYow3LY25GpA5209nWYOYSjxRWmQ5if60,1048
132
- sky/dashboard/out/_next/static/hTtTTWqHyRidxVG24ujEi/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
133
- sky/dashboard/out/clusters/[cluster].html,sha256=NEpq3j_TbNa6A6X4jIMn-G13Uh6TnOARkg_7IeEzrgI,1984
134
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=pbRWYGD-4njCD-lDRXBuIKsnyhvNdDFLIVmb3biTDvA,1653
135
- sky/dashboard/out/jobs/[job].html,sha256=QvZzBM-UA24qH7JRmG3wtkhptKRUCVtrRNq4T_lFXq8,1621
131
+ sky/dashboard/out/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_buildManifest.js,sha256=7uuHw3t0SwdYow3LY25GpA5209nWYOYSjxRWmQ5if60,1048
132
+ sky/dashboard/out/_next/static/kTfCjujxwqIQ4b7YvP7Uq/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
133
+ sky/dashboard/out/clusters/[cluster].html,sha256=NCnh4GrQqtCNyf8SdixY831WKr49RplKCbS5xL8xqAw,1984
134
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=5Omrivv7LHwu7Ja61S6z0QtDV8GAi2DYJJ-JBDbKj2k,1653
135
+ sky/dashboard/out/jobs/[job].html,sha256=ln_pOA4mP1XWfFYYJgrK3J27rDrQ0945a-QaDKAq_eQ,1621
136
136
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
137
137
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
138
138
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
@@ -153,7 +153,7 @@ sky/jobs/dashboard/dashboard.py,sha256=JKg8cCH_Y0sf3MoDTx85BghVEXWpp8ItPLshp09-_
153
153
  sky/jobs/dashboard/static/favicon.ico,sha256=uYlvgxSM7gjBmXpZ8wydvZUPAbJiiix-rc2Xe5mma9s,15086
154
154
  sky/jobs/dashboard/templates/index.html,sha256=NrlTDiEHJDt7sViwWgXUSxVCyVl_IEukE5jdvN8WhtQ,33132
155
155
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
156
- sky/jobs/server/core.py,sha256=PqWvCo_5BTi6ZnSSqTSFxpYc9oRYFw__9_G9LZFpYF4,25338
156
+ sky/jobs/server/core.py,sha256=YU5r5FTy-jE9n6ZlPbicWQm1PLysoYASyXhFLZwxJmA,26852
157
157
  sky/jobs/server/dashboard_utils.py,sha256=2Mbx40W1pQqPEPHsSDbHeaF0j5cgyKy-_A9Owdwp_AQ,2315
158
158
  sky/jobs/server/server.py,sha256=LqBWzYVMMJ6rRcGeDsqCQco6pG_CcDCAHzmVbt57IQM,8618
159
159
  sky/provision/__init__.py,sha256=LzOo5LjkRXwSf29dUqN14YbjzQu3liXLQcmweTeZ4dE,6457
@@ -166,7 +166,7 @@ sky/provision/metadata_utils.py,sha256=LrxeV4wD2QPzNdXV_npj8q-pr35FatxBBjF_jSbpO
166
166
  sky/provision/provisioner.py,sha256=xsdwfHxTmcHMAH-dyt0UsVHEgbweAlRImwVUQj7SZok,29953
167
167
  sky/provision/aws/__init__.py,sha256=mxq8PeWJqUtalDozTNpbtENErRZ1ktEs8uf2aG9UUgU,731
168
168
  sky/provision/aws/config.py,sha256=2PifaPQpD-2Kxqd6843sCUIjEhJR3lI3cJRXE1ox_ls,26728
169
- sky/provision/aws/instance.py,sha256=TObnNcylnAfPhgiA1prSD2sQKbUoUsBA986r9nKStTU,41434
169
+ sky/provision/aws/instance.py,sha256=DuX4LcoEO-WXTquAWUjRg3IwdhXuqdCpQYfaGDuAUSc,41567
170
170
  sky/provision/aws/utils.py,sha256=LrjeQ09zA7GoMv9Nt8TlL2A3VqqChsgJ9bL-Q5VLaao,3401
171
171
  sky/provision/azure/__init__.py,sha256=87cgk1_Ws7n9rqaDDPv-HpfrkVeSQMdFQnhnXwyx9g4,548
172
172
  sky/provision/azure/azure-config-template.json,sha256=jrjAgOtpe0e6FSg3vsVqHKQqJe0w-HeWOFT1HuwzS2c,4712
@@ -196,7 +196,7 @@ sky/provision/gcp/mig_utils.py,sha256=oFpcFZoapHMILSE4iIm8V5bxP1RhbMHRF7cciqq8qA
196
196
  sky/provision/kubernetes/__init__.py,sha256=y6yVfii81WYG3ROxv4hiIj-ydinS5-xGxLvXnARVQoI,719
197
197
  sky/provision/kubernetes/config.py,sha256=-6ddvMro9LZ-y7K-hUPo8GdUGZ-01YyBzTAdkKblGXY,29623
198
198
  sky/provision/kubernetes/constants.py,sha256=dZCUV8FOO9Gct80sdqeubKnxeW3CGl-u5mxKeIb-B0M,411
199
- sky/provision/kubernetes/instance.py,sha256=Cf6er0uH8knqMxJXuGXiK9EKF5oBN6hiW_OM2vDsT1w,50323
199
+ sky/provision/kubernetes/instance.py,sha256=h3qat0-kvcFSVT8rOUgKTQBBM4jYzWmhH8T9OuFR8lo,50501
200
200
  sky/provision/kubernetes/network.py,sha256=AtcOM8wPs_-UlQJhGEQGP6Lh4HIgdx63Y0iWEhP5jyc,12673
201
201
  sky/provision/kubernetes/network_utils.py,sha256=6uck1aBkgtm-gGBitU3_hEUp8j14ZuG_4Xo70ReZYXs,11654
202
202
  sky/provision/kubernetes/utils.py,sha256=SBlC0u5gRwOURYEPefBUZ83uuZWJZABxvBm1otp3TnI,128678
@@ -220,8 +220,8 @@ sky/provision/paperspace/instance.py,sha256=LkvamrI1COmNPzPV6w_axoCvILnHQrVnl7Go
220
220
  sky/provision/paperspace/utils.py,sha256=FhJZz0O5tCbdaJ5WE6zTdVXvW6msalMaAc3xOR3imIw,9736
221
221
  sky/provision/runpod/__init__.py,sha256=6HYvHI27EaLrX1SS0vWVhdLu5HDBeZCdvAeDJuwM5pk,556
222
222
  sky/provision/runpod/config.py,sha256=9ulZJVL7nHuxhTdoj8D7lNn7SdicJ5zc6FIcHIG9tcg,321
223
- sky/provision/runpod/instance.py,sha256=kUaD3nRMcBipCQwspSHaQ_WnIDnZJIVNrSk7_7ruWJg,10364
224
- sky/provision/runpod/utils.py,sha256=XPpJOczboUi2iWZWi7c6J5rUrB1O9THSDJ-6643LMdE,13020
223
+ sky/provision/runpod/instance.py,sha256=tWE6J2G4uDGXGk3utcU-njETslu7rI57lWjgk3K7IbM,10218
224
+ sky/provision/runpod/utils.py,sha256=5iBey_PtPd_9KZ20_ijorylytYc2IN0ZLWj8XxeJv-M,13074
225
225
  sky/provision/runpod/api/__init__.py,sha256=eJwjPeQZ5B7chf4-Bl4YeI2Uo9aLX4M1rr2NmPk89_E,112
226
226
  sky/provision/runpod/api/commands.py,sha256=oh77PS0H0wZudHV8II9ceRuaFQ8FN4NJ4S3-6_PeqPM,4238
227
227
  sky/provision/runpod/api/pods.py,sha256=GMwxgNr9NnHPfyh2Y9b8S_vLhrLY4h7LybFBBQNAyfw,4948
@@ -262,7 +262,7 @@ sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
262
262
  sky/serve/server/core.py,sha256=6l_XddW5ZWfdRdzyfQdB8rtBcU90VN_yXRM85tz0hsc,41499
263
263
  sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
264
264
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
265
- sky/server/common.py,sha256=k5Be_Co9gI892iDvhYj6D__X-8_-RuEij5WlNiKDKJ4,27233
265
+ sky/server/common.py,sha256=zoix59ERQNh-sYRXGJ8_y1zCy9oZs9e1FQT9VP6x2p0,28137
266
266
  sky/server/constants.py,sha256=Ha3A4X0kPh0FrdlM5u34Wi7OxhScPUwHqRi4-ye347Y,1112
267
267
  sky/server/server.py,sha256=j2SHlmfkZv4hHHQUB_iXSAJN7tNjJgRIQDRTWWkH_hk,46935
268
268
  sky/server/stream_utils.py,sha256=4JMHgtoXPpCT8JwtqyUcDQ9IdZFir9om0JaCRr8rvbQ,5849
@@ -331,7 +331,7 @@ sky/templates/local-ray.yml.j2,sha256=FNHeyHF6nW9nU9QLIZceUWfvrFTTcO51KqhTnYCEFa
331
331
  sky/templates/nebius-ray.yml.j2,sha256=Hjyzjb47ryGWuoUCLluz7JktZfJ3RdB644X3DpXHJL8,3678
332
332
  sky/templates/oci-ray.yml.j2,sha256=pm1_sLC9r-mMj4NHGH1ogKqxG2-M6bu2NPWb6Z58zsU,4777
333
333
  sky/templates/paperspace-ray.yml.j2,sha256=oNjsBtDqGlLLWR7d0rsE-WNKNkbPK7LKiMMTkY1b6UI,4236
334
- sky/templates/runpod-ray.yml.j2,sha256=M-ypI029BWEU3w4dWm546xih4YloY0e-HwSdPDqDPQQ,4525
334
+ sky/templates/runpod-ray.yml.j2,sha256=nrjxH_WtORM72hfZ2sU_8PLF_UtxgGaHyC1HGcLyc10,4570
335
335
  sky/templates/scp-ray.yml.j2,sha256=zZtXXiJUeADhN2S1LCMtqp0aEGYlDDtDSpTDHuu8jDg,5816
336
336
  sky/templates/sky-serve-controller.yaml.j2,sha256=W4i1-OGRU2WDvauLC4EDXcYrNxj7mzRFSvSqzAKfehc,2020
337
337
  sky/templates/skypilot-server-kubernetes-proxy.sh,sha256=n5swq5LauF9dnhDWMYqFFHkXeJ44Zjmg1RVbF60jNbE,1079
@@ -385,9 +385,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488
385
385
  sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=HPVgNt-wbCVPd9dpDFiA7t2mzQLpjXHJ61eiwRbEr-c,10378
386
386
  sky/utils/kubernetes/rsync_helper.sh,sha256=eaQOyvDq_RmcRHBqB9tH6LyDuYC310IVp97C5nqrTQg,1793
387
387
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
388
- skypilot_nightly-1.0.0.dev20250425.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
389
- skypilot_nightly-1.0.0.dev20250425.dist-info/METADATA,sha256=G9KA9aIoCuWd3DGn5Rg-4IeFD1U48KITV5u8pYN-f_I,18691
390
- skypilot_nightly-1.0.0.dev20250425.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
391
- skypilot_nightly-1.0.0.dev20250425.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
392
- skypilot_nightly-1.0.0.dev20250425.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
393
- skypilot_nightly-1.0.0.dev20250425.dist-info/RECORD,,
388
+ skypilot_nightly-1.0.0.dev20250427.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
389
+ skypilot_nightly-1.0.0.dev20250427.dist-info/METADATA,sha256=oAuc88XOyRnuENlrEf2xZi7YKkdEdm-YbPOr4hYq5mI,18691
390
+ skypilot_nightly-1.0.0.dev20250427.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
391
+ skypilot_nightly-1.0.0.dev20250427.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
392
+ skypilot_nightly-1.0.0.dev20250427.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
393
+ skypilot_nightly-1.0.0.dev20250427.dist-info/RECORD,,