Isaac Automator

repository·main·Indexed 42 days ago

https://github.com/isaac-sim/isaacautomator

A deployment orchestration tool (v4) that automates the setup of Isaac Sim, Isaac Lab, and Isaac Lab Arena on public cloud providers including AWS, GCP, Azure, and Alibaba Cloud. It creates Isaac Workstations—remote desktop cloud VMs configured for robotic application development—with support for various GPU instances, data synchronization via upload/download folders, and AI agent operation.

Tokens
17.8K
Snippets
54
Records
97
Agent score
51%

What's inside Isaac Automator

  1. Overview of Isaac Automator

    main

    Isaac Automator (v4) is a tool for the quick deployment of Isaac Sim, Isaac Lab, and Isaac Lab Arena to public clouds, including AWS, GCP, Azure, and Alibaba Cloud.

    It automates the creation of an Isaac Workstation—a remote desktop cloud VM configured for robotic application development. Key features include:

    • Support for various GPU instances.
    • Stop/start functionality to manage cloud costs.
    • Tools for data uploading/downloading, autorun scripts, and deployment management.
  2. Overview of Isaac Automator capabilities

    main

    Isaac Automator is a skill designed to deploy and operate cloud-based Isaac Workstations. It allows developers to provision GPU Virtual Machines (VMs) running Isaac Sim, Isaac Lab, and/or Isaac Lab Arena across major cloud providers including AWS, GCP, Azure, and Alibaba Cloud.

    Key capabilities include:

    • Provisioning: Setting up remote workstations in the cloud.
    • Connectivity: Connecting to the provisioned instances.
    • Data Management: Moving data in and out of the cloud environment.
    • Cost Control: Managing expenses by starting, stopping, repairing, or destroying deployments.
    • Integration: Importing existing deployments into the Automator workflow.
  3. Deploy and manage cloud Isaac Workstations

    main

    Isaac Automator allows you to provision and operate a cloud-based Isaac Workstation (a GPU VM running Isaac Sim, Isaac Lab, and/or Isaac Lab Arena) on AWS, GCP, Azure, or Alibaba Cloud.

    Core Lifecycle Commands

    • Deploy: Create a new workstation using cloud-specific scripts (e.g., ./deploy-aws).
    • Connect: Access the workstation via noVNC (browser-based 2D desktop), NoMachine (for live 3D viewport), or SSH (shell).
    • Manage Cost: Use ./stop <name> to pause compute billing (preserves public IP) and ./start <name> to resume.
    • Tear Down: Use ./destroy <name> --yes to delete the deployment and stop all billing. Always destroy when finished.
    • Maintenance: Use ./repair <name> to re-apply configuration if the workstation is unhealthy.
  4. Understand the Isaac Automator Operator Mental Model

    main

    Isaac Automator is designed for an operator (or AI agent) to manage cloud-based Isaac Sim/Lab environments.

    Key concepts:

    • Single Docker Image: Everything runs inside the isaac_automator Docker image. Top-level scripts (like ./deploy-aws or ./start) are thin wrappers that execute commands inside this container.
    • Deployment Name: Every deployment is identified by a unique name (via --deployment-name or --dn). All subsequent commands (start, stop, destroy, connect) require this name. State files (SSH keys, Terraform state) are stored in state/<name>/.
    • Two-Layer Lifecycle:
      1. Cloud Resources: Created by deploy and removed by destroy. These represent the actual paid infrastructure.
      2. Running Instance: Managed via start and stop. Stopping an instance pauses compute billing but continues to bill for disk storage. Only destroy stops all billing.
    • Cost Awareness: Deployments provision real, paid GPU instances. Always use the cheapest viable GPU and clean up resources immediately when finished.
  5. Choose the correct connection method (noVNC vs NoMachine vs SSH)

    main

    Selecting the right connection method depends on whether you need to see the 3D rendered viewport or just interact with the OS.

    MethodCommandBest Use CaseLimitations
    noVNC./novnc <name>2D Desktop: launching apps, files, or a terminal.Cannot see live 3D viewports. The Vulkan surface used by Omniverse Kit is not captured by the VNC server; the viewport will appear empty.
    NoMachineNative Client3D Rendering: Watching live Isaac Sim / Isaac Lab 3D viewports.Requires a native NoMachine client installation.
    SSH./ssh <name>Shell access: logs, running headless commands, or recording video.No graphical interface.

    Tip: To capture rendered output programmatically without a display, use the application's built-in recorder (e.g., Isaac Lab's --video flag) instead of attempting to screenshot via noVNC.

  6. Choose a connection method for Isaac Workstations

    main

    Depending on your goal, choose one of three connection methods to interact with a deployed Isaac Workstation:

    • noVNC: Best for general desktop interaction, launching applications, and opening terminals via a web browser.
    • NoMachine: Required for viewing the live Isaac Sim or Isaac Lab 3D viewport. Because Omniverse Kit renders via a Vulkan surface, noVNC cannot capture the 3D output; NoMachine is GPU/Vulkan-aware and handles this correctly.
    • SSH: Best for running commands, reading logs, launching demos headlessly, or recording viewport video.
  7. Understand the Isaac Automator cost model

    main

    Managing deployment lifecycles is critical for controlling costs. The billing behavior depends on the instance state:

    • Running: You are billed for compute (high cost) plus storage.
    • Stopped: You are billed only for storage (low cost). The public IP is preserved, so connection URLs remain valid.
    • Destroyed: All resources are removed and all billing stops.

    Best Practice: Use ./stop when idle, ./start to resume, and ./destroy when you are completely finished with the deployment.

  8. Manage credentials for cloud providers

    main

    Credentials are stored in the state/ directory to persist across container restarts.

    CloudStorage LocationHow Credentials Are Set
    AWSstate/.aws/ or envAWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY env vars; or AWS IAM Identity Center via aws configure sso / aws sso login
    GCPstate/.gcp/gcloud auth login (prompted during first deployment)
    Azurestate/.azure/az login (prompted during first deployment)
    Alibaba CloudEnvironment variablesALIYUN_ACCESS_KEY and ALIYUN_SECRET_KEY passed from host via ./run

    Note for AWS: If AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set on the host before invoking a command, they are forwarded into the container and take precedence over the SSO flow.

  9. Manage cloud costs and risks with Isaac Automator

    main

    Because Isaac Automator provisions real, billable cloud infrastructure, users should follow these best practices to mitigate financial risk:

    1. Instance Selection: Use the cheapest viable instance type for your workload.
    2. Non-interactive Execution: Pass options non-interactively to ensure predictable deployment.
    3. Lifecycle Management: Always explicitly stop or destroy deployments when they are no longer needed to prevent ongoing charges.
  10. How to operate Isaac Automator with AI Agents

    main

    Isaac Automator is designed to be operated by AI agents. If you are building or using an agent to manage deployments, connections, or workstation lifecycle (stop/start/destroy), follow these resources:

    • Operator Guide: Refer to ai/automator.agent.md for step-by-step procedures.
    • Skill Sets: Specific tasks are defined in ai/skills/.
    • Discovery: Agent-aware tools can auto-discover AGENTS.md (and CLAUDE.md for Claude Code) to understand cost, safety, and non-interactive rules.
  11. Quickstart commands for Isaac Automator

    main

    Use these primary commands to manage the lifecycle of Isaac Automator and your deployments. Note that deployment commands vary by cloud provider (e.g., use deploy-gcp instead of deploy-aws).

    ./build                       # build the Isaac Automator container (one-time)
    ./run                         # enter the container
    ./deploy-aws                  # deploy an Isaac Workstation (follow the prompts)
    ./novnc <deployment-name>     # open the remote desktop in your browser
    ./destroy <deployment-name>   # tear down the deployment when done
    ./import --cloud aws ...      # import existing cloud resources into state
  12. Deploy an Isaac Workstation

    main

    Deployments are initiated via cloud-specific scripts. Each deployment requires a unique --deployment-name (or --dn).

    Cloud-Specific Scripts

    • AWS: ./deploy-aws (adds --region, --instance-type)
    • GCP: ./deploy-gcp (adds --zone, --project, --isaac-workstation-gpu-count)
    • Azure: ./deploy-azure (adds --resource-group, --login / --no-login)
    • Alibaba Cloud: ./deploy-alicloud (adds --region)

    Common Deployment Options

    • --deployment-name / --dn: Unique identifier for the deployment.
    • --region / --zone: Cloud location.
    • --instance-type: GPU instance type.
    • --ingress-cidrs: IP whitelist (use myip for your current public IP).
    • --isaacsim / --isaaclab / --isaaclab-arena: Specify version (git ref) or no.
    • --from-image: Deploy from a pre-built image (~10-15 min, cheaper).
    • --not-from-image: Full build-from-source (~45-60 min).
    • --existing: Strategy for existing deployments (replace / repair / modify / run_ansible). Use replace instead of ask for non-interactive use.
    • --upload / --no-upload: Whether to upload local files during deploy.

    Note: A successful deployment prints connection info and saves it to state/<name>/info.txt.

    ./deploy-aws \
      --deployment-name my-rig \
      --region us-east-1 \
      --instance-type g5.2xlarge \
      --not-from-image \
      --ingress-cidrs myip \
      --isaacsim v6.0.0 \
      --isaaclab release/3.0.0-beta2 \
      --isaaclab-arena no \
      --existing replace \
      --no-upload