{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openbot-esxi",
    "name": "Esxi Debian Deploy",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/cepheiden/openbot-esxi",
    "canonicalUrl": "https://clawhub.ai/cepheiden/openbot-esxi",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openbot-esxi",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openbot-esxi",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "references/preseed-template.cfg",
      "references/vmx-template.md",
      "scripts/esxi-deploy.sh",
      "scripts/esxi-vm-resize-disk.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openbot-esxi"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/openbot-esxi",
    "agentPageUrl": "https://openagent3.xyz/skills/openbot-esxi/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openbot-esxi/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openbot-esxi/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ESXi Debian 13 Zero-Touch Deploy",
        "body": "Deploy fully configured Debian 13 VMs on ESXi 8 in ~8 minutes with zero manual interaction."
      },
      {
        "title": "Required Environment Variables",
        "body": "VariableRequiredDescriptionESXI_HOSTYesESXi host IP addressESXI_PASSYesESXi root passwordESXI_USERNoESXi user (default: root)ESXI_DATASTORENoTarget datastore (default: datastore1)NETWORKNoPort group name (default: VM Network)DOMAINNoDomain for VMs (default: local)VM_PASSYes (resize only)VM root password for disk resize script\n\n⚠️ Note: The deploy script generates a random VM password and prints it to stdout. The password is also embedded in the preseed ISO uploaded to the ESXi datastore. Remove the ISO after deployment and treat stdout output as sensitive."
      },
      {
        "title": "Requirements",
        "body": "ESXi 8.x host with SSH and datastore access\ngovc CLI (github.com/vmware/govmomi)\nxorriso, isolinux — for custom ISO build\nsshpass — for automated SSH/SCP\nTools on agent host: bash, python3, wget\n\nInstall on Debian/Ubuntu:\n\napt install xorriso isolinux sshpass\n# govc: https://github.com/vmware/govmomi/releases"
      },
      {
        "title": "Usage",
        "body": "All credentials are passed via environment variables — nothing is hardcoded or embedded in process arguments.\n\nexport ESXI_HOST=\"192.168.1.100\"\nexport ESXI_PASS=\"your-esxi-root-password\"\n\nbash scripts/esxi-deploy.sh [hostname] [cpu] [ram_mb] [disk_gb] [serial_port]\n\nParameterDefaultDescriptionhostnamerandom animal nameVM namecpu2vCPU countram_mb2048Memory in MBdisk_gb20Disk size in GBserial_portrandom 8600-8699Telnet port for serial console\n\nExample:\n\nbash scripts/esxi-deploy.sh webserver 4 4096 50 8610"
      },
      {
        "title": "What It Does",
        "body": "Generate preseed.cfg — German locale, DHCP, configurable user + root, random password\nBuild custom ISO — Debian netinst + preseed, patched isolinux for auto-boot\nUpload ISO to ESXi datastore\nCreate VM — NVMe disk (thin provisioned), dual NIC (E1000 for installer + vmxnet3 for production), serial port via telnet\nBoot + unattended install — preseed handles everything\nPost-install — Remove E1000, eject ISO, set boot to HDD\nOutput credentials — SSH + serial console access details"
      },
      {
        "title": "Serial Console",
        "body": "Every VM gets a serial port accessible via telnet to the ESXi host:\n\ntelnet <ESXI_IP> <serial_port>\n\nWorks even when the VM has no network. Configured:\n\nGRUB: GRUB_TERMINAL=\"console serial\", serial 115200 8N1\nKernel: console=tty0 console=ttyS0,115200n8\nGetty: serial-getty@ttyS0.service enabled\n\nESXi firewall requirement (activated automatically by the script):\n\nesxcli network firewall ruleset set -e true -r remoteSerialPort\n\nImportant: Set serial port IP to the ESXi host IP, not 0.0.0.0:\n\nserial0.fileName = \"telnet://<ESXI_IP>:<port>\""
      },
      {
        "title": "Online Disk Resize",
        "body": "Grow a VM's disk without shutdown:\n\nexport ESXI_HOST=\"192.168.1.100\"\nexport ESXI_PASS=\"your-esxi-password\"\nexport VM_PASS=\"vm-root-password\"\n\nbash scripts/esxi-vm-resize-disk.sh <vm-name> <new-size-gb>\n\nRequires cloud-guest-utils on the VM (pre-installed by the deploy script)."
      },
      {
        "title": "Configuration",
        "body": "All settings are configurable via environment variables:\n\nexport ESXI_HOST=\"192.168.1.100\"    # ESXi host IP (required)\nexport ESXI_PASS=\"secret\"           # ESXi root password (required)\nexport ESXI_USER=\"root\"             # ESXi user (default: root)\nexport ESXI_DATASTORE=\"datastore1\"  # Target datastore (default: datastore1)\nexport NETWORK=\"VM Network\"         # Port group name (default: VM Network)\nexport DOMAIN=\"example.local\"       # Domain for VMs (default: local)\n\nNo credential store or external resolver is required. Pass secrets via environment variables only — they are never embedded in process arguments or URLs."
      },
      {
        "title": "VM Configuration Details",
        "body": "ComponentChoiceReasonDisk controllerNVMeFaster than SCSI/SATA for modern guestsProduction NICvmxnet3Paravirtualized, best performanceInstaller NICE1000Kernel driver built-in, no firmware neededBoot modeBIOSSimpler for automated installsProvisioningThinSaves datastore space"
      },
      {
        "title": "Preseed Highlights",
        "body": "Locale: de_DE.UTF-8, keyboard de, timezone Europe/Berlin\nPartitioning: automatic, single root + swap\nPackages: open-vm-tools, curl, sudo, qemu-guest-agent, cloud-guest-utils\nSSH: PermitRootLogin yes, PasswordAuthentication yes\nBlacklisted modules: floppy, pcspkr (prevent I/O error loops in VMs)\n\nCustomize the preseed section in esxi-deploy.sh for different locales or packages."
      },
      {
        "title": "Security Considerations",
        "body": "Credentials: All secrets are passed via environment variables, never embedded in URLs or process arguments. govc uses GOVC_USERNAME/GOVC_PASSWORD env vars.\nSSH access: The script uses sshpass for automated SSH. For production, consider SSH key-based auth instead.\nSerial console: Telnet is unencrypted. The serial port is bound to the ESXi host IP (not 0.0.0.0), but anyone with network access to the ESXi host can connect. Restrict access via:\n\nESXi firewall rules (limit remoteSerialPort to trusted IPs)\nNetwork segmentation / VPN\nDisable serial port after debugging\n\n\nGenerated passwords: VM passwords are output to stdout. Redirect output or use a credential store in production.\nLab use recommended: Test on a lab ESXi host before using in production. Review all scripts before running."
      },
      {
        "title": "Gotchas",
        "body": "No heredoc in preseed late_command — Shell expansion in the deploy script's heredoc destroys nested heredocs. Use echo -e or single-line commands instead.\nSerial console only works after install — The Debian installer uses VGA; serial output starts at first boot (GRUB + kernel).\nESXi firewall blocks serial by default — The remoteSerialPort ruleset must be enabled.\nDon't resize MBR partitions live with extended/swap layout — Use growpart on the root partition or redeploy with larger disk.\nE1000 removal requires shutdown — The script handles this automatically post-install."
      },
      {
        "title": "References",
        "body": "references/preseed-template.cfg — Full preseed config template\nreferences/vmx-template.md — VMX configuration reference"
      }
    ],
    "body": "ESXi Debian 13 Zero-Touch Deploy\n\nDeploy fully configured Debian 13 VMs on ESXi 8 in ~8 minutes with zero manual interaction.\n\nRequired Environment Variables\nVariable\tRequired\tDescription\nESXI_HOST\tYes\tESXi host IP address\nESXI_PASS\tYes\tESXi root password\nESXI_USER\tNo\tESXi user (default: root)\nESXI_DATASTORE\tNo\tTarget datastore (default: datastore1)\nNETWORK\tNo\tPort group name (default: VM Network)\nDOMAIN\tNo\tDomain for VMs (default: local)\nVM_PASS\tYes (resize only)\tVM root password for disk resize script\n\n⚠️ Note: The deploy script generates a random VM password and prints it to stdout. The password is also embedded in the preseed ISO uploaded to the ESXi datastore. Remove the ISO after deployment and treat stdout output as sensitive.\n\nRequirements\nESXi 8.x host with SSH and datastore access\ngovc CLI (github.com/vmware/govmomi)\nxorriso, isolinux — for custom ISO build\nsshpass — for automated SSH/SCP\nTools on agent host: bash, python3, wget\n\nInstall on Debian/Ubuntu:\n\napt install xorriso isolinux sshpass\n# govc: https://github.com/vmware/govmomi/releases\n\nUsage\n\nAll credentials are passed via environment variables — nothing is hardcoded or embedded in process arguments.\n\nexport ESXI_HOST=\"192.168.1.100\"\nexport ESXI_PASS=\"your-esxi-root-password\"\n\nbash scripts/esxi-deploy.sh [hostname] [cpu] [ram_mb] [disk_gb] [serial_port]\n\nParameter\tDefault\tDescription\nhostname\trandom animal name\tVM name\ncpu\t2\tvCPU count\nram_mb\t2048\tMemory in MB\ndisk_gb\t20\tDisk size in GB\nserial_port\trandom 8600-8699\tTelnet port for serial console\n\nExample:\n\nbash scripts/esxi-deploy.sh webserver 4 4096 50 8610\n\nWhat It Does\nGenerate preseed.cfg — German locale, DHCP, configurable user + root, random password\nBuild custom ISO — Debian netinst + preseed, patched isolinux for auto-boot\nUpload ISO to ESXi datastore\nCreate VM — NVMe disk (thin provisioned), dual NIC (E1000 for installer + vmxnet3 for production), serial port via telnet\nBoot + unattended install — preseed handles everything\nPost-install — Remove E1000, eject ISO, set boot to HDD\nOutput credentials — SSH + serial console access details\nSerial Console\n\nEvery VM gets a serial port accessible via telnet to the ESXi host:\n\ntelnet <ESXI_IP> <serial_port>\n\n\nWorks even when the VM has no network. Configured:\n\nGRUB: GRUB_TERMINAL=\"console serial\", serial 115200 8N1\nKernel: console=tty0 console=ttyS0,115200n8\nGetty: serial-getty@ttyS0.service enabled\n\nESXi firewall requirement (activated automatically by the script):\n\nesxcli network firewall ruleset set -e true -r remoteSerialPort\n\n\nImportant: Set serial port IP to the ESXi host IP, not 0.0.0.0:\n\nserial0.fileName = \"telnet://<ESXI_IP>:<port>\"\n\nOnline Disk Resize\n\nGrow a VM's disk without shutdown:\n\nexport ESXI_HOST=\"192.168.1.100\"\nexport ESXI_PASS=\"your-esxi-password\"\nexport VM_PASS=\"vm-root-password\"\n\nbash scripts/esxi-vm-resize-disk.sh <vm-name> <new-size-gb>\n\n\nRequires cloud-guest-utils on the VM (pre-installed by the deploy script).\n\nConfiguration\n\nAll settings are configurable via environment variables:\n\nexport ESXI_HOST=\"192.168.1.100\"    # ESXi host IP (required)\nexport ESXI_PASS=\"secret\"           # ESXi root password (required)\nexport ESXI_USER=\"root\"             # ESXi user (default: root)\nexport ESXI_DATASTORE=\"datastore1\"  # Target datastore (default: datastore1)\nexport NETWORK=\"VM Network\"         # Port group name (default: VM Network)\nexport DOMAIN=\"example.local\"       # Domain for VMs (default: local)\n\n\nNo credential store or external resolver is required. Pass secrets via environment variables only — they are never embedded in process arguments or URLs.\n\nVM Configuration Details\nComponent\tChoice\tReason\nDisk controller\tNVMe\tFaster than SCSI/SATA for modern guests\nProduction NIC\tvmxnet3\tParavirtualized, best performance\nInstaller NIC\tE1000\tKernel driver built-in, no firmware needed\nBoot mode\tBIOS\tSimpler for automated installs\nProvisioning\tThin\tSaves datastore space\nPreseed Highlights\nLocale: de_DE.UTF-8, keyboard de, timezone Europe/Berlin\nPartitioning: automatic, single root + swap\nPackages: open-vm-tools, curl, sudo, qemu-guest-agent, cloud-guest-utils\nSSH: PermitRootLogin yes, PasswordAuthentication yes\nBlacklisted modules: floppy, pcspkr (prevent I/O error loops in VMs)\n\nCustomize the preseed section in esxi-deploy.sh for different locales or packages.\n\nSecurity Considerations\nCredentials: All secrets are passed via environment variables, never embedded in URLs or process arguments. govc uses GOVC_USERNAME/GOVC_PASSWORD env vars.\nSSH access: The script uses sshpass for automated SSH. For production, consider SSH key-based auth instead.\nSerial console: Telnet is unencrypted. The serial port is bound to the ESXi host IP (not 0.0.0.0), but anyone with network access to the ESXi host can connect. Restrict access via:\nESXi firewall rules (limit remoteSerialPort to trusted IPs)\nNetwork segmentation / VPN\nDisable serial port after debugging\nGenerated passwords: VM passwords are output to stdout. Redirect output or use a credential store in production.\nLab use recommended: Test on a lab ESXi host before using in production. Review all scripts before running.\nGotchas\nNo heredoc in preseed late_command — Shell expansion in the deploy script's heredoc destroys nested heredocs. Use echo -e or single-line commands instead.\nSerial console only works after install — The Debian installer uses VGA; serial output starts at first boot (GRUB + kernel).\nESXi firewall blocks serial by default — The remoteSerialPort ruleset must be enabled.\nDon't resize MBR partitions live with extended/swap layout — Use growpart on the root partition or redeploy with larger disk.\nE1000 removal requires shutdown — The script handles this automatically post-install.\nReferences\nreferences/preseed-template.cfg — Full preseed config template\nreferences/vmx-template.md — VMX configuration reference"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/cepheiden/openbot-esxi",
    "publisherUrl": "https://clawhub.ai/cepheiden/openbot-esxi",
    "owner": "cepheiden",
    "version": "0.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openbot-esxi",
    "downloadUrl": "https://openagent3.xyz/downloads/openbot-esxi",
    "agentUrl": "https://openagent3.xyz/skills/openbot-esxi/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openbot-esxi/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openbot-esxi/agent.md"
  }
}