From 109e8a236bb68e1d6ede0548d8e640f3edaf689a Mon Sep 17 00:00:00 2001 From: Dave Onkels Date: Mon, 27 Apr 2026 08:34:05 -0700 Subject: [PATCH] skill: note global naming and non-interactive shell gotchas Add a short Naming section explaining that VM names are globally unique, and the error message agents will see when they collide. Extend the non-interactive shells section with two workarounds learned from running provisioning scripts through agent harnesses: - heredocs collapse when passed as a quoted argument to ssh; use bash -s over stdin (or base64) instead - ssh exe.dev ssh bypasses per-VM known_hosts entirely, which is convenient for one-shot commands in non-interactive scripts --- skill/SKILL.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/skill/SKILL.md b/skill/SKILL.md index 5c3018342..d83a828f3 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -28,6 +28,10 @@ scp file.txt .exe.xyz:~/ # transfer file Every VM gets `https://.exe.xyz/` with automatic TLS. +## Naming + +VM names are globally unique across all exe.dev customers. If `new --name=` errors with `"this VM name is not available"`, the slug is taken (by you or someone else) — pick another. Generic names like `app`, `staging`, `demo` are mostly gone; add a suffix (`-` or a short random) for any new VM you intend to keep. + ## A tale of two SSH destinations - **`ssh exe.dev `** — the exe.dev lobby. A REPL for VM lifecycle, sharing, and configuration. Does not support scp, sftp, or arbitrary shell commands. @@ -48,3 +52,17 @@ Host exe.dev *.exe.xyz IdentitiesOnly yes IdentityFile ~/.ssh/id_ed25519 ``` + +**Multi-line commands**: Heredocs and embedded newlines collapse when passed inside a quoted argument to `ssh .exe.xyz ""` from many shells (`\n` flattens to spaces, breaking scripts). Feed multi-line scripts via `bash -s` over stdin instead: + +``` +ssh .exe.xyz 'bash -s' <<'EOF' +set -e +sudo apt-get update +# ... +EOF +``` + +For non-text content (binaries, anything sensitive to whitespace), base64-encode locally and decode on the VM. + +**Lobby-routed VM shell**: `ssh exe.dev ssh ""` runs a shell command on the VM via the lobby. Convenient in non-interactive scripts — the lobby's host key is already trusted, so there's no per-VM `known_hosts` setup or `accept-new` prompt. (No scp/sftp through this path; use direct `.exe.xyz` for transfers.)