{ "$type": "com.fedfork.exec.composition", "name": "socialweb.computer VMs for a model", "description": "vm-mcp's four tools (vm_create, vm_list, vm_exec, vm_release) over the requester (bids judged by tangled-vouch and bid-payload; user-data and iroh-user-data make the cloud-init) and process-mcp (the guest agent's shell over iroh). Serve vm's actions as MCP.", "parameters": [ { "key": "bidders", "label": "Bidder DIDs", "type": "array", "description": "The bidders to ask, by DID.", "values": { "default": [ "did:plc:7q5lnitxv4meizdon5fmhzrq", "did:plc:4vcig7s43z3nyqrnepmcfzqt", "did:plc:2l2wdry77c7jtucbslstagkj" ] } }, { "key": "pool", "label": "Pool", "type": "string", "description": "The record key of the VM list (one per agent session that should not see another's).", "values": { "default": "self" } }, { "key": "max_vms", "label": "VMs kept at most", "type": "integer", "minimum": 1, "maximum": 10, "values": { "default": 2 } }, { "key": "max_cpus", "label": "vCPUs at most", "type": "integer", "minimum": 1, "maximum": 16, "values": { "default": 4 } }, { "key": "max_mem", "label": "Memory at most (GiB)", "type": "integer", "minimum": 1, "maximum": 64, "values": { "default": 8 } }, { "key": "max_hold_minutes", "label": "Hold at most (minutes)", "type": "integer", "minimum": 1, "maximum": 1440, "values": { "default": 240 } } ], "instances": [ { "name": "vm", "module": "vm-mcp", "pin": "602627e942a83a0286c28633575f22f82b098825407455f90b6537df0f3131f1", "input": { "bidders": { "$param": "bidders" }, "via": "iroh", "pool": { "$param": "pool" }, "max_vms": { "$param": "max_vms" }, "max_cpus": { "$param": "max_cpus" }, "max_mem": { "$param": "max_mem" }, "max_hold_minutes": { "$param": "max_hold_minutes" } } }, { "name": "machine", "module": "requester", "pin": "dab378f88fffcb9e5aad849fd0008bb433f54cab59cce0648e64f345804ec0ae", "session": "requester", "input": { "kind": "vm", "shell": true, "iroh": true, "ssh_key": { "$host": "sshPublicKey" }, "reason": "vm-mcp" } }, { "name": "user_data", "module": "user-data", "pin": "c605eb611ae1bcc61e287dd3c71a489b1622e6ff98930b244f40a31a9a73f435" }, { "name": "iroh_user_data", "module": "iroh-user-data", "pin": "5759ca46da97109fcc554bc6febed9c4d0af4f9f3271a6689be08a26309ef2a5" }, { "name": "vouch", "module": "policy-requester-tangled-vouch", "pin": "4ead1fb6855a5f84b6e5e1f61898424c0d25c6915376e7cea3978c6194f5ceb4" }, { "name": "payload", "module": "policy-bid-payload", "pin": "00d51f8bd99705b2cc573733c6fe408ba201192f5e377f272485768cbad58d65" }, { "name": "process", "module": "process-mcp", "pin": "dadc0da54d561aa16835a5657a77e14b440b20aca4f544c74839278245a1ad2c" } ], "edges": [ { "from": "vm", "nsid": "computer.socialweb.vm.provision", "to": "machine", "reason": "vm_create rents the VM and keeps it" }, { "from": "vm", "nsid": "computer.socialweb.vm.release", "to": "machine", "reason": "vm_release gives it back" }, { "from": "vm", "nsid": "computer.socialweb.cicd.process.exec", "to": "process", "reason": "vm_exec runs the command on the VM" }, { "from": "machine", "nsid": "com.publicdomainrelay.temp.market.evaluatePolicy", "to": "vouch", "reason": "the requester or its operator vouched for the bidder" }, { "from": "machine", "nsid": "com.publicdomainrelay.temp.market.evaluatePolicy", "to": "payload", "reason": "only free bids" }, { "from": "machine", "nsid": "computer.socialweb.vm.userData", "to": "user_data", "reason": "the VM's cloud-init: the guest agent's shell, iroh in front of sshd" }, { "from": "user_data", "nsid": "computer.socialweb.vm.irohUserData", "to": "iroh_user_data", "reason": "root ssh with the host's key, dumbpipe in front of sshd" } ], "limits": { "depth": 4, "calls": 100000 } }