Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
awslabs avatar

Hyperpod Ssm

  • 117 installs
  • 850 repo stars
  • Updated August 3, 2026
  • awslabs/agent-plugins

hyperpod-ssm is a Claude skill that runs remote commands and transfers files on SageMaker HyperPod nodes via AWS Systems Manager instead of SSH.

About

This skill runs remote commands and transfers files on SageMaker HyperPod cluster nodes through AWS Systems Manager, which is the primary access path because direct SSH is not available. It bundles scripts to resolve cluster info, list nodes, and execute or transfer files per node, and other HyperPod skills depend on it for node-level operations. A developer uses it whenever a task needs shell access to HyperPod instances.

  • Primary interface for accessing HyperPod nodes via AWS Systems Manager (direct SSH is not available)
  • Bundles get-cluster-info.sh, list-nodes.sh, and ssm-exec.sh for exec, upload, and read
  • Other HyperPod skills depend on it for all node-level operations

Hyperpod Ssm by the numbers

  • 117 all-time installs (skills.sh)
  • Ranked #541 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

hyperpod-ssm capabilities & compatibility

Capabilities
hyperpod node debugger · hyperpod version checker · hyperpod issue report · hyperpod cluster debugger
Works with
aws
Use cases
devops · debugging
From the docs

What hyperpod-ssm says it does

This is the primary interface for accessing HyperPod nodes — direct SSH is not available.
SKILL.md
SSM `start-session` rate limit: **3 TPS** per account. Plan batch size and delay accordingly.
SKILL.md
npx skills add https://github.com/awslabs/agent-plugins --skill hyperpod-ssm

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs117
repo stars850
Last updatedAugust 3, 2026
Repositoryawslabs/agent-plugins

What it does

Run remote commands and transfer files on HyperPod nodes via AWS Systems Manager.

Who is it for?

Any HyperPod task needing shell access, package installs, or file transfer on nodes

Skip if: Interactive commands like vim or top, which are not supported via non-interactive SSM

When should I use this skill?

A skill or user needs to execute commands, upload, or read files on HyperPod nodes

What you get

Commands and file transfers run reliably on the right HyperPod nodes over SSM.

  • Command output, file uploads, and file reads from HyperPod nodes

By the numbers

  • 3 bundled scripts
  • 3 TPS SSM rate limit
  • list-cluster-nodes paginates at 100 nodes

Files

SKILL.mdMarkdownGitHub ↗

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)

scripts/get-cluster-info.sh CLUSTER_NAME [--region REGION]
# Output: {"cluster_id":"...","cluster_arn":"...","cluster_name":"...","region":"..."}

list-nodes.sh — List all nodes with pagination (call once)

scripts/list-nodes.sh CLUSTER_NAME [--region REGION] [--instance-group GROUP] [--instance-id ID]
# Output: JSON array of ClusterNodeSummaries (InstanceId, InstanceGroupName, InstanceStatus, etc.)

list-cluster-nodes paginates at 100 nodes. This script handles pagination automatically.

ssm-exec.sh — Execute command on a node (call per node)

# 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]

Running Commands Across Many Nodes

SSM start-session rate limit: 3 TPS per account. Plan batch size and delay accordingly.

aws ssm send-command does NOT support sagemaker-cluster: targets — only start-session works.

Manual SSM Commands

When the scripts aren't suitable, use aws ssm start-session directly with AWS-StartNonInteractiveCommand. Wrap every invocation in unbuffer — without it, stdout is intermittently empty (see Prerequisites).

cat > /tmp/cmd.json << 'EOF'
{"command": ["bash -c 'echo hello && whoami'"]}
EOF

unbuffer aws ssm start-session \
  --target sagemaker-cluster:{CLUSTER_ID}_{GROUP_NAME}-{INSTANCE_ID} \
  --region REGION \
  --document-name AWS-StartNonInteractiveCommand \
  --parameters file:///tmp/cmd.json
  • Always use a JSON file for --parameters — inline parameters break with special characters.
  • The document's command parameter is argv, not shell input. Wrap multi-statement scripts in bash -c '...' so pipes, semicolons, and redirects evaluate.

Common Diagnostic Commands

TaskCommand
Lifecycle logscat /var/log/provision/provisioning.log
Memoryfree -h
Disk/mountsdf -h && lsblk
GPU statusnvidia-smi
GPU memorynvidia-smi --query-gpu=memory.used,memory.total --format=csv
EFA/networkfi_info -p efa
CloudWatch agentsudo systemctl status amazon-cloudwatch-agent
Top processes`ps aux --sort=-%mem \

Key Details

  • Default SSM non-interactive user is root.
  • SSM rate limit: 3 TPS per account.
  • For interactive sessions (rare), omit --document-name to get a shell.
  • Interactive commands (vim, top) are not supported via AWS-StartNonInteractiveCommand.
  • Large outputs may be truncated by SSM.
  • For troubleshooting common errors, see references/troubleshooting.md.

Related skills

FAQ

Why not just SSH into a node?

Direct SSH is not available on HyperPod; SSM start-session is the primary interface and send-command does not support sagemaker-cluster targets.

Is there a rate limit?

Yes. SSM start-session is limited to 3 TPS per account, so batch size and delay must be planned accordingly.

Cloud & Infrastructureinframonitoring

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.