Two Manual Steps, Then an AI Runs Your Ops: DSH + RAM on Alibaba Cloud
This hands-on report shows a workable division of labor for AI-run cloud ops: the human sets the permission boundary and confirms destructive actions, the agent executes the rest. It also documents a concrete Node.js IPv6 failure mode that only appears on hosts without IPv6 egress, plus a verification routine for knowing exactly what an agent can and cannot do.
DeepSeek Harness (DSH) has taken over the ops duties of a 2 vCPU / 1.8 GiB Alibaba Cloud ECS instance after exactly two human interventions: installing the agent web UI and creating a RAM user restricted to a single DNS domain. The agent then created subdomains, deployed a project without Docker (switching to native systemd + nginx when the environment didn't match the docs), expanded the existing TLS certificate, and set up daily MySQL backups with a 7-day retention.
The most interesting work happened when a service call failed while curl succeeded. The agent compared curl and Node's connection behavior, isolated the cause to Node's automatic IPv6 address-family selection against a domain with AAAA records, and fixed it with `NODE_OPTIONS=--no-network-family-autoselection` plus a system-level IPv6 disable. The failure time dropped from a multi-second timeout to 22 ms.
The post also details the safety rails: a RAM policy scoped to one domain, a boundary check with `sts GetCallerIdentity` and forbidden calls, optimistic locking added to a naive overwrite endpoint, and an iptables rule to prevent bypassing the reverse proxy. The author is explicit that humans must still own authorization scope, destructive-operation consent, key rotation, and deciding what to build.
The author's rule "read operations are free, write operations must be explained before execution" is a practical, human-friendly way to delegate destructive actions to an AI agent without turning the human into a rubber-stamp.
The IPv6 timeout case is a textbook example of why AI agents need to compare multiple execution paths (curl vs Node) rather than assume a single explanation; the agent's method of isolating the difference is more valuable than the one-line fix.
Giving an AI identity via a scoped cloud role (like this RAM user) is a cleaner authorization model than stuffing API keys into prompts or code, and it makes the agent's actions auditable per identity.