gpu-dev 0.5.24__tar.gz → 0.5.25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/PKG-INFO +1 -1
  2. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/PKG-INFO +1 -1
  3. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/cli.py +15 -0
  4. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/reservations.py +10 -1
  5. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/pyproject.toml +1 -1
  6. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/.github/workflows/no-gitlinks.yml +0 -0
  7. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/.github/workflows/publish.yml +0 -0
  8. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/.gitignore +0 -0
  9. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/CLAUDE.md +0 -0
  10. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/PROGRESS.md +0 -0
  11. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/PR_DESCRIPTION.md +0 -0
  12. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/README.md +0 -0
  13. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/TODO.md +0 -0
  14. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/admin/README.md +0 -0
  15. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/admin/generate_stats.py +0 -0
  16. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/admin/requirements.txt +0 -0
  17. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/README.md +0 -0
  18. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/ZERO_CONFIG_SETUP.md +0 -0
  19. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/SOURCES.txt +0 -0
  20. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/dependency_links.txt +0 -0
  21. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/entry_points.txt +0 -0
  22. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/requires.txt +0 -0
  23. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/top_level.txt +0 -0
  24. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/__init__.py +0 -0
  25. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/auth.py +0 -0
  26. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/config.py +0 -0
  27. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/disks.py +0 -0
  28. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/interactive.py +0 -0
  29. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/name_generator.py +0 -0
  30. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/gpu_dev_cli/ssh_proxy.py +0 -0
  31. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/gpu-dev-cli/minimal-iam-policy.json +0 -0
  32. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/cli-tools/scripts/clear_stale_disk_locks.py +0 -0
  33. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/docs/USER_GUIDE.md +0 -0
  34. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/docs/devgpu-features.html +0 -0
  35. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/docs/docker-mark-blue.svg +0 -0
  36. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/docs/icons8-cursor-ai.svg +0 -0
  37. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/post.md +0 -0
  38. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/setup.cfg +0 -0
  39. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/.claude/skills/deploy.md +0 -0
  40. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/.terraform.lock.hcl +0 -0
  41. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/README.md +0 -0
  42. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/alb.tf +0 -0
  43. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/availability.tf +0 -0
  44. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/backend.tf +0 -0
  45. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/.dockerignore +0 -0
  46. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/Dockerfile +0 -0
  47. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/backup-dotfiles +0 -0
  48. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/bash_profile +0 -0
  49. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/bashrc +0 -0
  50. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/bashrc_ext +0 -0
  51. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/build-with-efa.sh +0 -0
  52. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/dotfiles-shutdown-handler +0 -0
  53. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/list-dotfile-versions +0 -0
  54. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/motd_script +0 -0
  55. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/nproc_wrapper +0 -0
  56. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/profile +0 -0
  57. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/restore-dotfiles +0 -0
  58. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/restore-dotfiles-version +0 -0
  59. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/setup-dotfiles-persistence +0 -0
  60. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/shell_env +0 -0
  61. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/ssh_config +0 -0
  62. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/zprofile +0 -0
  63. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/zshrc +0 -0
  64. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker/zshrc_ext +0 -0
  65. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker-build.tf +0 -0
  66. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker-example/Dockerfile +0 -0
  67. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/docker-example/hello.txt +0 -0
  68. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ecr.tf +0 -0
  69. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/efs.tf +0 -0
  70. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/eks.tf +0 -0
  71. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/expiry.tf +0 -0
  72. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/git-cache.tf +0 -0
  73. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/gpu-dev-pod-irsa.tf +0 -0
  74. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/kubernetes.tf +0 -0
  75. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/availability_updater/index.py +0 -0
  76. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/availability_updater/requirements.txt +0 -0
  77. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/migration/tag_largest_snapshots.py +0 -0
  78. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/reservation_expiry/index.py +0 -0
  79. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/reservation_expiry/requirements.txt +0 -0
  80. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/reservation_processor/buildkit_job.py +0 -0
  81. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/reservation_processor/index.py +0 -0
  82. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/reservation_processor/requirements.txt +0 -0
  83. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/__init__.py +0 -0
  84. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/alb_utils.py +0 -0
  85. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/dns_utils.py +0 -0
  86. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/k8s_client.py +0 -0
  87. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/k8s_resource_tracker.py +0 -0
  88. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/requirements.txt +0 -0
  89. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda/shared/snapshot_utils.py +0 -0
  90. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/lambda.tf +0 -0
  91. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/main.tf +0 -0
  92. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/mig-config.tf +0 -0
  93. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/mig-parted-config.yaml +0 -0
  94. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/migrations/backfill_snapshot_contents.py +0 -0
  95. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/migrations/backfill_snapshot_contents.py.bak +0 -0
  96. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/migrations/check_snapshots.py +0 -0
  97. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/migrations/migrate_disks_to_named.py +0 -0
  98. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/migrations/run_backfill.sh +0 -0
  99. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/monitoring.tf +0 -0
  100. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/outputs.tf +0 -0
  101. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/pyproject.toml +0 -0
  102. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/queue.tf +0 -0
  103. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/route53.tf +0 -0
  104. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/s3-disk-contents.tf +0 -0
  105. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/scripts/CLEANUP_GUIDE.md +0 -0
  106. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/scripts/detect_empty_volumes.sh +0 -0
  107. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/scripts/ec2_avail_probe.sh +0 -0
  108. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/scripts/inspect_user_data.sh +0 -0
  109. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ssh-proxy/Dockerfile +0 -0
  110. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ssh-proxy/proxy.py +0 -0
  111. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ssh-proxy/requirements.txt +0 -0
  112. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ssh-proxy-service.tf +0 -0
  113. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/ssh-proxy.tf +0 -0
  114. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/switch-to.sh +0 -0
  115. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/templates/al2023-cpu-user-data.sh +0 -0
  116. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/templates/al2023-user-data.sh +0 -0
  117. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/templates/user-data-self-managed.sh +0 -0
  118. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/templates/user-data.sh +0 -0
  119. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/terraform-gpu-devservers/variables.tf +0 -0
  120. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/tests/submit/README.md +0 -0
  121. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/tests/submit/fail/run.sh +0 -0
  122. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/tests/submit/multinode/run.sh +0 -0
  123. {gpu_dev-0.5.24 → gpu_dev-0.5.25}/tests/submit/success/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gpu-dev
3
- Version: 0.5.24
3
+ Version: 0.5.25
4
4
  Summary: CLI tool for PyTorch GPU developer server reservations
5
5
  Author: PyTorch Team
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gpu-dev
3
- Version: 0.5.24
3
+ Version: 0.5.25
4
4
  Summary: CLI tool for PyTorch GPU developer server reservations
5
5
  Author: PyTorch Team
6
6
  Requires-Python: >=3.10
@@ -4,6 +4,7 @@ Reserve and manage GPU development servers
4
4
  """
5
5
 
6
6
  import click
7
+ import os
7
8
  from typing import Optional
8
9
  from rich.console import Console
9
10
  from rich.table import Table
@@ -3218,6 +3219,20 @@ def connect(ctx: click.Context, reservation_id: Optional[str]) -> None:
3218
3219
  if "-A" not in ssh_command and "-o ForwardAgent=yes" not in ssh_command:
3219
3220
  ssh_command = ssh_command.replace("ssh ", "ssh -A ", 1)
3220
3221
 
3222
+ # When running from inside a gpu-dev pod (=GPU_DEV_USER_ID env var set) and the
3223
+ # forwarded SSH agent is reachable but empty, the next hop is going to fail with
3224
+ # 'Permission denied (publickey)'. Warn upfront so the user knows to ssh-add on
3225
+ # their laptop instead of debugging an opaque auth failure on the remote side.
3226
+ if os.environ.get("GPU_DEV_USER_ID") and os.environ.get("SSH_AUTH_SOCK"):
3227
+ try:
3228
+ import subprocess as _sp
3229
+ r = _sp.run(["ssh-add", "-L"], capture_output=True, text=True, timeout=3)
3230
+ if r.returncode != 0 or not r.stdout.strip() or "no identities" in r.stdout.lower():
3231
+ rprint("[yellow]⚠️ Forwarded SSH agent is empty — second-hop SSH from a pod will fail auth.[/yellow]")
3232
+ rprint("[yellow] On your laptop: `ssh-add ~/.ssh/id_ed25519` (or your GitHub key), then reconnect to this pod with `gpu-dev connect`.[/yellow]\n")
3233
+ except Exception:
3234
+ pass
3235
+
3221
3236
  # Parse and execute the command, capturing exit code for auth failures
3222
3237
  rprint(f"[dim]Executing: {ssh_command}[/dim]\n")
3223
3238
  result = subprocess.run(ssh_command, shell=True)
@@ -162,11 +162,20 @@ def _generate_ssh_config(hostname: str, pod_name: str) -> str:
162
162
  Returns:
163
163
  SSH config content as string
164
164
  """
165
+ import sys
166
+ # AddKeysToAgent makes SSH stash the IdentityFile into ssh-agent the first time it
167
+ # uses it for this Host, so the next agent-forwarding hop (pod → pod) actually has
168
+ # something to forward. On macOS, UseKeychain persists the passphrase via Keychain
169
+ # so users aren\'t prompted on every shell restart. Linux ssh errors on UseKeychain,
170
+ # so guard it with IgnoreUnknown.
171
+ extra = " AddKeysToAgent yes\n"
172
+ if sys.platform == "darwin":
173
+ extra += " IgnoreUnknown UseKeychain\n UseKeychain yes\n"
165
174
  config_content = f"""Host {pod_name}
166
175
  HostName {hostname}
167
176
  User dev
168
177
  ForwardAgent yes
169
- ProxyCommand gpu-dev-ssh-proxy %h %p
178
+ {extra} ProxyCommand gpu-dev-ssh-proxy %h %p
170
179
  StrictHostKeyChecking no
171
180
  UserKnownHostsFile /dev/null
172
181
  """
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gpu-dev"
7
- version = "0.5.24"
7
+ version = "0.5.25"
8
8
  description = "CLI tool for PyTorch GPU developer server reservations"
9
9
  authors = [{name = "PyTorch Team"}]
10
10
  readme = "cli-tools/gpu-dev-cli/README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes