~ knotless Search/
↑↓ move↵ open⇧↵ all results

johnandersen777.bsky.social/atlibs-mesh-agents

atirc mesh agents on socialweb.computer VMs as an atlibs module

0
0
main
136 lines · 3.7 KB Raw History
{
	"name": "mesh-agent",
	"description": "An atirc agent on a socialweb.computer VM you keep, on the atirc mesh (no atirc server, no token): the agent's node (<nick>.<handle>, `atirc agent run` beside it) and yours there (you-<nick>.<handle>), both in your channel and the agent's own. Their computer.socialweb.peer records, leased on a contract-scoped market.association that ends with the VM (kcp 0004), and one computer.socialweb.agents/self list are yours.",
	"session": "mesh-agent",
	"actions": [
		{
			"entry": "launch",
			"label": "Launch",
			"description": "Install atirc on the VM, start the agent and your node there, write their peer records leased on a contract-scoped association. Your node listens on 127.0.0.1:listen_port for your page. Returns {nick, subhandle, you, channels, vm, shell, lease, expires, units}.",
			"fields": [
				{
					"key": "vm",
					"label": "VM",
					"type": "string",
					"required": false,
					"description": "Its vm-mcp id, kept in the list."
				},
				{
					"key": "shell",
					"label": "Shell URL",
					"type": "string",
					"required": true,
					"description": "The VM's shell (vm_list's shell)."
				},
				{
					"key": "expires",
					"label": "VM ends",
					"type": "string",
					"required": true,
					"description": "When the VM ends (vm_list's expires): the lease's expiresAt."
				},
				{
					"key": "nick",
					"label": "Nick",
					"type": "string",
					"required": true,
					"description": "The agent's name: a lowercase letter, then letters, digits or -, at most 23."
				},
				{
					"key": "model",
					"label": "Model",
					"type": "string",
					"required": true
				},
				{
					"key": "base_url",
					"label": "Anthropic-compatible base URL",
					"type": "string",
					"required": true
				},
				{
					"key": "api_key",
					"label": "API key",
					"type": "string",
					"required": true,
					"description": "Goes to the VM only (a 0600 file); never into a record."
				},
				{
					"key": "harness",
					"label": "Harness",
					"type": "string",
					"required": false,
					"description": "A #! script that starts the agent (default: claude)."
				}
			]
		},
		{
			"entry": "list",
			"label": "List",
			"readOnly": true,
			"description": "The agents an account runs (default: you). Returns {of, agents: [{nick, subhandle, you, vm, shell, channels, createdAt}]}.",
			"fields": [
				{
					"key": "of",
					"label": "Account DID",
					"type": "string",
					"required": false
				}
			]
		},
		{
			"entry": "stop",
			"label": "Stop",
			"description": "Stop an agent's units (if its VM answers), delete its peer records and lease, drop it from the list. Returns {nick, stopped}.",
			"fields": [
				{
					"key": "nick",
					"label": "Nick",
					"type": "string",
					"required": true
				}
			]
		}
	],
	"config": [
		{
			"key": "atirc_url",
			"label": "atirc binary URL",
			"type": "string",
			"description": "A static linux/amd64 atirc with `atirc mesh`."
		},
		{
			"key": "atirc_sha256",
			"label": "its sha256",
			"type": "string"
		},
		{
			"key": "listen_port",
			"label": "Your node's local port",
			"type": "integer",
			"description": "atirc mesh run --local-listen 127.0.0.1:<port> for your page, over the contract's \"atirc\" tunnel (default 6680)."
		}
	],
	"calls": [
		"com.atproto.repo.getRecord",
		"com.atproto.repo.putRecord",
		"com.atproto.repo.deleteRecord",
		"com.atproto.repo.describeRepo"
	],
	"hooks": [
		{
			"nsid": "computer.socialweb.cicd.process.exec",
			"required": true,
			"entries": [
				"launch",
				"stop"
			],
			"reason": "run the setup on the VM's guest agent"
		}
	],
	"anyRecords": [
		"computer.socialweb.peer",
		"computer.socialweb.agents",
		"com.publicdomainrelay.temp.market.association"
	]
}