{ "$type": "com.fedfork.exec.wasm.module", "name": "user-data", "module": { "$type": "blob", "ref": { "$link": "bafkreicuh57pfawuvgq5i5gycsp7o2um77xqcr3pmzcqhw6liprtohqite" }, "mimeType": "application/wasm", "size": 105153 }, "abi": "emdash-wasm-json-v1", "source": { "uri": "at://did:plc:ocnuqjlzgohypj3zoznermms/com.fedfork.exec.source.manifest/user-data.1794363820538", "cid": "bafyreib2g3hqhkrtdsdwujv6jddkw7toc6m65wdnjkzdagpsnseqwywbne" }, "actions": [ { "entry": "user_data", "label": "VM user_data", "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.", "fields": [ { "key": "shell", "label": "MCP shell", "type": "boolean", "description": "The guest agent's MCP shell service and its \"shell\" webrtc tunnel (default true)." }, { "key": "webrtc_ssh", "label": "ssh over webrtc", "type": "boolean", "description": "An \"ssh\" webrtc tunnel to sshd (needs ssh_key; default false)." }, { "key": "iroh", "label": "ssh over iroh", "type": "boolean", "description": "dumbpipe in front of sshd; its ticket becomes vm.onNetwork (needs ssh_key; default false)." }, { "key": "ssh_key", "label": "SSH public key", "type": "string", "description": "OpenSSH public key for root, with webrtc_ssh or iroh." }, { "key": "tunnels", "label": "More tunnels", "type": "array", "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." } ] } ], "createdAt": "2026-11-10T09:30:25.400Z", "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.", "calls": [], "hooks": [ { "nsid": "computer.socialweb.vm.irohUserData", "default": "iroh-user-data", "reason": "webrtc_ssh and iroh: root ssh with ssh_key, and dumbpipe in front of sshd (atlibs-iroh)" } ], "implements": [ { "nsid": "computer.socialweb.vm.userData", "entry": "user_data" } ] }