- What Isaac Automator does
- Mental model
- Prerequisites
- Golden rules (read before deploying)
- The operator loop
- Running commands non-interactively
- Skills
- Connecting: which method shows what
This file is the entry point for an AI agent that operates Isaac Automator as a user - to deploy a cloud GPU workstation, connect to it, run demos, and tear it down. It is written for the operator role, not the developer role: you drive the existing command-line tool, you do not edit its source (Python, Terraform, Ansible). If you need to change how Isaac Automator itself works, that is a development task and out of scope here.
If you are an agent and you just want to "get a working Isaac Sim / Isaac Lab machine in the cloud and use
it", you are in the right place. Read this file once, then open the matching skill in skills/ for the task
at hand and follow it.
Isaac Automator deploys Isaac Sim, Isaac Lab, and Isaac Lab Arena onto a GPU virtual machine in a public cloud (AWS, GCP, Azure, or Alibaba Cloud) and configures it as a ready-to-use remote Isaac Workstation: a GPU VM with a remote desktop, the requested Isaac apps installed, lifecycle controls (start / stop / destroy), and data upload/download. It can also install ready-made demos that show up as double-click shortcuts on the desktop.
- Everything runs inside one Docker image (
isaac_automator). The top-level scripts (./deploy-aws,./start, ...) are thin wrappers that run the real command inside that container. You build the image once with./build. - A deployment has a name (
--deployment-name/--dn, e.g.my-rig). Every command after deploy takes that name. Its files (ssh key, terraform state, connection info) live understate/<name>/. - It provisions real, paid cloud infrastructure. A deployment is a live GPU instance that bills by the hour until you stop it, plus disk that bills until you destroy it.
- Two long-lived layers per deployment: the cloud resources (created by deploy, removed by destroy) and the running instance (started/stopped to control compute cost; the public IP is preserved across stop/start).
Where you run these commands: from the Isaac Automator repo root - the parent of this
ai/directory, which holds./build,./deploy-aws,./start, etc. Shell commands below are run from that root; theskills/links in this guide are relative to thisai/folder.
- Docker installed and running on the machine you operate from.
- Cloud credentials for the target cloud (see
skills/deploy-workstation.skill.mdfor how each cloud is authenticated). For AWS the simplest path isAWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEYin the environment, forwarded into the container. - Build the image once:
./build(rebuild only if the tool itself changed).
- It costs money. Treat every deploy/start as live-fire. Use the cheapest viable GPU instance unless told
otherwise, and prefer
--from-imagewhen speed/cost matters. - Always clean up what you create. Stop the instance when idle (
./stop), and destroy the deployment when done (./destroy <name> --yes). Stopped instances still bill for storage; only destroy stops all cost. - Use unique deployment names, especially in a shared cloud account, so your resources are easy to find and never collide with someone else's.
- Always pass options non-interactively. The deploy commands prompt for missing required values; in an agent context an unanswered prompt hangs forever. Supply every required option on the command line.
- Never print, paste, or commit credentials. Reference them by name, pass them via environment variables.
./build # once
-> deploy-workstation # ./deploy-<cloud> ... (creates infra + installs apps/demos)
-> connect-workstation # ./novnc / ./ssh / NoMachine
-> run-demos # launch a demo on the desktop
-> transfer-data # ./upload / ./download
-> manage-lifecycle # ./stop (idle) / ./start (resume) / ./repair
-> ./destroy <name> --yes # when finished (stops all billing)
The ./run wrapper uses docker run -it, which needs a TTY and fails in a non-interactive shell with
cannot attach stdin to a TTY-enabled container. When you are an agent driving this headlessly, invoke the
container directly instead of relying on a TTY:
docker run --rm --network host -v "$(pwd)":/app \
-e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY \
isaac_automator "<command and args>"The top-level scripts (./deploy-aws, ./stop, ...) detect when they are outside the container and start it
for you, which is fine for interactive use; for reliable automation prefer the explicit docker run form
above (it is what the skills use).
Open the matching file in skills/ and follow it. Each is a self-contained operator procedure.
| Skill | Use it to |
|---|---|
skills/deploy-workstation.skill.md |
Deploy a new Isaac Workstation to AWS / GCP / Azure / Alibaba, with the apps (and demos) you want. |
skills/run-demos.skill.md |
List and launch the out-of-the-box demos (e.g. quadruped locomotion RL). |
skills/connect-workstation.skill.md |
Connect via noVNC (browser), NoMachine (best for 3D), or SSH. |
skills/manage-lifecycle.skill.md |
Check status, stop/start to control cost, repair, and destroy. |
skills/transfer-data.skill.md |
Upload inputs, download results, and set an autorun script. |
skills/troubleshoot.skill.md |
Diagnose the common failure modes (blank viewport, driver mismatch, hung prompts, ...). |
This matters because it is the most common point of confusion:
- noVNC (browser,
./novnc <name>) shows the 2D desktop reliably - good for launching apps, files, a terminal. It generally does not show the live Isaac Sim 3D viewport, because Omniverse Kit renders through a Vulkan surface that the VNC server does not capture. The window is there and running, but the viewport area can look empty. - NoMachine (native client) is GPU/Vulkan-aware and is the reliable way to watch the live Isaac Sim / Isaac Lab 3D viewport. Use it when you actually need to see rendered robots.
- SSH (
./ssh <name>) is for the shell: logs, launching commands, recording video headlessly. - To capture rendered output programmatically (no display), use the app's own recorder (e.g. Isaac Lab's
--video) rather than screenshotting noVNC.