{ "name": "user-data", "description": "cloud-init for a socialweb.computer VM whose guest agent serves an MCP shell (exec, start, read, write, kill, list), optionally ssh over webrtc and iroh, and more tunnels to local ports.", "actions": [ { "entry": "user_data", "label": "VM user_data", "fields": [ { "key": "shell", "type": "boolean", "label": "MCP shell", "description": "The guest agent's MCP shell service and its \"shell\" webrtc tunnel (default true)." }, { "key": "webrtc_ssh", "type": "boolean", "label": "ssh over webrtc", "description": "An \"ssh\" webrtc tunnel to sshd (needs ssh_key; default false)." }, { "key": "iroh", "type": "boolean", "label": "ssh over iroh", "description": "dumbpipe in front of sshd; its ticket becomes vm.onNetwork (needs ssh_key; default false)." }, { "key": "ssh_key", "type": "string", "label": "SSH public key", "description": "OpenSSH public key for root, with webrtc_ssh or iroh." }, { "key": "tunnels", "type": "array", "label": "More tunnels", "description": "Datachannel tunnels to local TCP ports on the VM: [{tag, port, transport: \"webrtc\"}], tags [a-z0-9-] (not shell or ssh), at most 8." } ], "description": "A #cloud-config (JSON) as {user_data}: services.json's shell service and tunnels.json for the guest agent; ssh (webrtc_ssh, iroh) through the irohUserData hook." } ], "calls": [], "hooks": [ { "nsid": "computer.socialweb.vm.irohUserData", "reason": "webrtc_ssh and iroh: root ssh with ssh_key, and dumbpipe in front of sshd (atlibs-iroh)", "default": "iroh-user-data" } ], "implements": [ { "nsid": "computer.socialweb.vm.userData", "entry": "user_data" } ], "uri": "at://did:plc:ocnuqjlzgohypj3zoznermms/com.fedfork.exec.wasm.module/user-data" }