{ "name": "agents", "description": "Launch an atirc agent on a socialweb.computer VM (mint its atirc token, request the VM through the requester, start the agent over ssh) and shut it down by its launch rkey. Composed with the requester: composition.json.", "session": "agents", "actions": [ { "entry": "launch", "label": "Launch an agent", "description": "Create the com.fedfork.agents.launch record (its rkey is the launch id), mint -. on atirc, run a requester contract that keeps the VM, write the token and the agent unit over ssh and start it.", "fields": [ { "key": "bidders", "label": "Bidder DIDs" }, { "key": "user_data", "label": "cloud-init user data (iroh or webrtc ssh)" }, { "key": "via", "label": "iroh or webrtc" }, { "key": "name", "label": "Agent name" }, { "key": "agent", "label": "Agent command (default: atirc agent run)" }, { "key": "exp_s", "label": "Token lifetime (s)" } ] }, { "entry": "status", "label": "Agent status", "description": "The launch record and one read of the guest's reports (terminated or not).", "fields": [{ "key": "rkey", "label": "Launch rkey" }] }, { "entry": "shutdown", "label": "Shut down an agent", "description": "Revoke the agent's atirc token, release the VM, wait for vm.terminated, delete the round's records, then delete (delete: true) or mark stopped the launch record.", "fields": [ { "key": "rkey", "label": "Launch rkey" }, { "key": "delete", "label": "Delete the launch record" } ] } ], "calls": [ "com.atproto.repo.createRecord", "com.atproto.repo.putRecord", "com.atproto.repo.getRecord", "com.atproto.repo.deleteRecord", "com.atproto.repo.describeRepo", "chat.atirc.mint", "chat.atirc.revoke" ], "hooks": [ { "nsid": "com.fedfork.market.contract", "required": true, "entries": ["launch"], "reason": "an agent needs a VM: the requester's contract" }, { "nsid": "com.fedfork.market.release", "required": true, "entries": ["shutdown"], "reason": "shutting an agent down releases its VM" }, { "nsid": "com.fedfork.market.watch", "required": true, "entries": ["status", "shutdown"], "reason": "agent status reads the guest's reports" } ] }