hyperpod-ssm
Remote command execution and file transfer on SageMaker HyperPod cluster nodes via AWS Systems Manager (SSM). This is the primary interface for accessing HyperPod nodes — direct SSH is not available. Use when any skill, workflow, or user request needs to execute commands on cluster nodes, upload files to nodes, read/download files from nodes, run diagnostics, install packages, or perform any operation requiring shell access to HyperPod instances. Other HyperPod skills depend on this skill for all node-level operations.
npx skills add awslabs/agent-plugins --skill hyperpod-ssm --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# HyperPod SSM Access ## Prerequisites - **`aws` CLI v2**, authenticated for the target account/Region. - **`session-manager-plugin`** — installed alongside the AWS CLI. - **`jq`** — the scripts build JSON payloads with it. - **`unbuffer`** (from the `expect` package) — wraps `aws ssm start-session` with a PTY so the session-manager-plugin flushes stdout instead of racing to close. Without it, calls intermittently return empty output with `Cannot perform start session: EOF` even when the command ran. Install with `sudo yum install expect`, `sudo apt install expect`, or `brew install expect`. `ssm-exec.sh` detects and uses it automatically; falls back with a warning if missing. ## SSM Target Format Target: `sagemaker-cluster:<CLUSTER_ID>_<GROUP_NAME>-<INSTANCE_ID>` - `CLUSTER_ID`: Last segment of cluster ARN (NOT the cluster name). Extract via `get-cluster-info.sh`. - `GROUP_NAME`: Instance group name — retrieve via `list-nodes.sh`. - `INSTANCE_ID`: EC2 instance ID (e.g., `i-0123456789abcdef0`) ## Scripts Three scripts under `scripts/`. Resolve cluster info and nodes **once**, then execute per node. ### get-cluster-info.sh — Resolve cluster name → ID (call once) ```bash scripts/get-
- Prerequisites
- SSM Target Format
- Scripts
- get-cluster-info.sh — Resolve cluster name → ID (call once)
- list-nodes.sh — List all nodes with pagination (call once)
- ssm-exec.sh — Execute command on a node (call per node)
- Running Commands Across Many Nodes
- Manual SSM Commands
- Common Diagnostic Commands
- Key Details
scripts/get-cluster-info.sh CLUSTER_NAME [--region REGION] scripts/list-nodes.sh CLUSTER_NAME [--region REGION] [--instance-group GROUP] [--instance-id ID] Execute — with pre-built target scripts/ssm-exec.sh --target "sagemaker-cluster:CLUSTERID_GROUP-INSTANCEID" 'command' [--region REGION] Execute — with parts scripts/ssm-exec.sh --cluster-id ID --group GROUP --instance-id INSTANCE_ID 'command' [--region REGION] Upload scripts/ssm-exec.sh --target TARGET --upload LOCAL_PATH REMOTE_PATH [--region REGION] Read remote file scripts/ssm-exec.sh --target TARGET --read REMOTE_PATH [--region REGION]
What does the hyperpod-ssm skill do?
Remote command execution and file transfer on SageMaker HyperPod cluster nodes via AWS Systems Manager (SSM). This is the primary interface for accessing HyperPod nodes — direct SSH is not available. Use when any skill, workflow, or user request needs to execute commands on cluster nodes, upload files to nodes, read/download files from nodes, run diagnostics, install packages, or perform any operation requiring shell access to HyperPod instances. Other HyperPod skills depend on this skill for all node-level operations.
How do I install it?
Run `npx skills add awslabs/agent-plugins --skill hyperpod-ssm --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From awslabs/agent-plugins, a repository with 850 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.