Automation

Use SSH exec commands and durable request IDs to automate machine management.

Results and completion

Use --json for machine-readable results. An exec invocation writes one result to standard output; progress goes to standard error. Check the SSH command's exit status as well as its result. A failed command exits nonzero.

Creation, start, stop and deletion wait up to 120 seconds for the matching physical result. A request being accepted or acknowledged is not proof that the machine has reached the requested state. --no-wait returns the accepted request without waiting; --timeout SECONDS changes the wait limit. Timing out or disconnecting does not cancel accepted work.

Retry safely

Choose a stable, unique request ID for each intended mutation. Reuse it when retrying that same mutation after losing a reply. Request IDs contain 1–128 ASCII letters, digits, underscores, dots, colons or hyphens, and start with a letter or digit. Do not reuse one ID for different operations.

new --name example-machine --request-id example-create-001 --no-wait --json
request show example-create-001 --json
new --name example-machine --request-id example-create-001 --no-wait --json

The accepted request retains its normalized command and resolved resources. Retrying cannot retarget a different machine after name reuse or silently select a different default image. Query the original request after a lost response or timeout. Request status remains subject to current account authorization, including after the machine is archived.

Key removal prevents subsequent commands and status polls from that session. Accepted jobs continue. Reconnect using another registered key, or use email login to manage your keys in Marshall. Do not put private keys or approval links in logs.