# Use an SSH machine

> Generate a key, connect safely, and start building with an agent.

Audience: Builders
Updated: 2026-08-18
Page: /docs/ssh-machine

## 1. Make an SSH key on your laptop

An SSH key lets your laptop prove its identity without sending a password. Generate it on your laptop—not inside HIM—and paste only the public half into Compute.

**macOS, Linux, or WSL**

```bash
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
```

**Windows PowerShell**

```powershell
ssh-keygen -t ed25519
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
```

> **Public key only:** Paste the single line beginning with ssh-ed25519. Never paste id_ed25519, a private-key block, a password, or an API token. HIM stores only the public-key fingerprint.

## 2. Launch and connect

1. Open Compute, choose a machine, and keep the recommended lifetime and credit ceiling for your first session.
2. Paste your ssh-ed25519 public key and launch.
3. Wait for Ready, then copy the ssh root@host -p port command.
4. Run that command in your laptop terminal. SSH will ask you to trust this temporary machine's host key on the first connection.
5. Work under /workspace. Stop the machine from HIM when you are finished; the idle and lifetime limits remain backups.

- [Launch a machine](/compute) — Choose CPU or GPU and paste your public key.

> **Browser and CLI use the same machine contract:** Use Compute above or him machine launch from a terminal. Both create one bounded, public-key-only SSH machine with the same allowlisted profiles, credit reservation, maximum lifetime, verified connection, owner visibility, and idempotent stop. This is one interactive machine—not a raw multi-node cluster.

**Launch the recommended machine with the CLI**

```bash
him login
him machine launch --key ~/.ssh/id_ed25519.pub --profile gpu --hours 6
# The command waits for Ready and prints the exact ssh command.

# Later, always stop it explicitly:
him machine stop <machine-id>
```

## 3. Check the machine

**Run after connecting**

```bash
cd /workspace
python3 --version
nvidia-smi  # GPU machines only
git clone YOUR_REPOSITORY_URL
cd YOUR_REPOSITORY
# Install this repository's declared dependencies.
```

The standard workspace gives you a working shell, Python, Git, build tools, PyTorch, JAX, and CUDA on GPU machines. Install the simulator and repository-specific packages you need. The prebuilt HIM robotics environment is coming later after its own qualification.

## 4. Building with an AI agent

Start your preferred terminal coding agent inside the repository, then copy this single prompt. It covers downloading or locating the data, working in the existing repository, testing the result, and preparing the intended HIM upload. Replace the bracketed fields first.

**Copy this simple upload prompt**

```text
Help me prepare and upload this robotics project to HIM Arena.

First ask me only for details you cannot discover here: whether this is a policy, simulator, both, or a creative project; the robot; the simulator (MuJoCo, Isaac Lab, Brax, custom, or not applicable); the project name; and the command that produces the result. Then:

1. Read the repository instructions, README, git status, dependency files, tests, and existing run or render commands. Keep the project's current simulator, trainer, model formats, and layout.
2. Run the shortest meaningful test or simulation. Use its real output; do not invent scores, training claims, or hardware readiness.
3. Produce or locate one playable result.mp4 and inspect it. It must contain a real video track and be 50 MB or less. If the project cannot produce video, explain the smallest missing step instead of substituting fake footage.
4. Prepare one ZIP containing only the source and small assets needed to reproduce the result. Exclude .git, secrets, .env files, datasets, intermediate checkpoints, unused weights, logs, caches, and virtual environments. Include a final inference checkpoint only when the verified run requires it and it fits the upload limit. The ZIP plus MP4 must be 100 MB or less.
5. Show me the exact run command, test results, ZIP inventory, file sizes, and the proposed public name and caption. Ask before uploading.
6. If the HIM CLI is missing, install it with: curl -fsSL https://arena.himrobotics.com/install.sh | sh
7. Check authentication with him whoami --json. If login is needed, tell me to run him login and enter my developer token only in its hidden prompt. Never ask me to paste a token into chat.
8. After I approve, upload with:
   him upload ./PROJECT.zip --video ./result.mp4 --kind [policy|simulator|both|creative-project] --robot [microduck|unitree-g1|agibot-x2|unitree-h1|unitree-go2|booster-k1|booster-t1|yam|so-101|franka-panda|other] --simulator [mujoco|isaac-lab|brax|custom|not-applicable] --name "[name]" --caption "[what the video shows]" --run-command "[verified command]" --yes --json
9. Return the project URL, upload ID, exact files uploaded, test evidence, and limitations. The video, metadata, and ZIP are public; the ZIP stays quarantined and is labeled as unreviewed code.

Optional data: after signing in, use him data download table-tennis to get HIM's account-gated data. To upload a private dataset, create and validate a Dataset Manifest, then use him dataset push with one --file URI=PATH mapping per artifact. Ask before large downloads or data uploads.

Do not create a .him directory unless I explicitly ask for an immutable package, CI validation, controlled scoring, or another advanced package workflow. Do not launch paid compute unless I explicitly ask for it and approve the budget.
```

## 5. Save your work and stop

1. Commit or copy out the code, logs, metrics, and checkpoints you want to keep.
2. Upload the project ZIP and its result MP4 from Build when you want a public video and downloadable code on your profile.
3. Return to Compute and press Stop machine when you finish. The maximum lifetime remains your automatic backstop.
