{ "lexicon": 1, "id": "com.publicdomainrelay.temp.compute.vm", "defs": { "main": { "type": "record", "description": "Descibes a virtual machine", "key": "tid", "record": { "type": "object", "required": [ "cpus", "mem", "disk", "network", "role", "user_data" ], "properties": { "kind": { "type": "string", "knownValues": ["vm", "deno"], "description": "What the bidder runs for this request: a firecracker virtual machine (the default when absent), or a deno sandbox that runs user_data as its program." }, "cpus": { "type": "integer", "minimum": 1, "description": "Number of vCPUs requested." }, "mem": { "type": "string", "description": "Memory request, e.g. '512M', '4G'." }, "disk": { "type": "string", "description": "Disk request, e.g. '10G'." }, "network": { "type": "string", "description": "Network throughput / quota, e.g. '500G'." }, "location": { "type": "ref", "ref": "#location" }, "role": { "type": "string", "description": "RBAC role the compute should run under. The requester's did:plc may set this freely, so agents must use their own accounts since we scope roles under accounts." }, "user_data": { "type": "string", "description": "cloud-init user data to bootstrap the compute." }, "expiresAt": { "type": "string", "format": "datetime", "description": "When the requester wants the VM ended. The bidder ends it then (it may end it earlier by its own policy) and refuses an RFP whose expiresAt has passed; without it, the bidder ends the VM 24 h after the accept." } } } }, "location": { "type": "object", "description": "Geographic placement constraint for the requested compute.", "properties": { "country": { "type": "string", "description": "ISO 3166-1 alpha-3 country code or human-readable country name." }, "region": { "type": "string", "description": "Region within the country, e.g. 'west'." } } } } }