An agent class definition. Acts as a template that agents are instantiated from. The class is a named bundle of skills (strongRefs to com.publicdomainrelay.temp.agent.skill records) plus optional metadata. Instantiating an agent from a class means spawning a runtime (or sub-agent context) seeded with this skill set.
tid
Timestamp-based ID
Properties
bootstrap
string
Optional
How the spawned agent obtains its ATProto identity. 'atproto-password' = log in with $ATPROTO_PASSWORD and $AGENT_DID from spec.env (top-level pattern). 'welcome-mat-on-enroll' = no creds initially; an entry tool calls Welcome Mat to enroll and the WelcomeMatClient lives in the spawned process (sub-agent pattern). 'none' = no ATProto session, pure compute.
createdAt
string
datetime
Required
ISO 8601 timestamp when this class record was created.
description
string
Required
Description of what agents instantiated from this class are for and what they can do.
entryTool
string
Optional
Optional name of the entry tool (a tool defined by one of this class's skills) the universal runner invokes directly when an agent of this class is spawned. Setting this puts the class in deterministic mode: the runner calls `import('./tools/<entryTool>/main.ts').default({input, bridge, config})` and forwards its return value as the agent's result. Classes without `entryTool` run in LLM-driven mode: the runner builds a tool registry from skill examples + tools and drives an LLM loop.
name
string
Required
Human-readable name of the agent class, e.g. 'compute-requester'.
parent
ref
com.atproto.repo.strongRef
Optional
Optional strongRef to a parent agent.class. Instantiated agents inherit the parent's skills as well as this class's skills.
skills
array
of
ref
com.atproto.repo.strongRef
Required
Strong references to com.publicdomainrelay.temp.agent.skill records that compose this class.
spawnsSubAgent
boolean
Optional
If true, agents of this class are intended to be spawned as sub-agents from a parent agent's flow rather than as a top-level runtime.
View raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"description",
"skills",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"description": "Human-readable name of the agent class, e.g. 'compute-requester'."
},
"parent": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "Optional strongRef to a parent agent.class. Instantiated agents inherit the parent's skills as well as this class's skills."
},
"skills": {
"type": "array",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"description": "Strong references to com.publicdomainrelay.temp.agent.skill records that compose this class."
},
"bootstrap": {
"type": "string",
"description": "How the spawned agent obtains its ATProto identity. 'atproto-password' = log in with $ATPROTO_PASSWORD and $AGENT_DID from spec.env (top-level pattern). 'welcome-mat-on-enroll' = no creds initially; an entry tool calls Welcome Mat to enroll and the WelcomeMatClient lives in the spawned process (sub-agent pattern). 'none' = no ATProto session, pure compute."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "ISO 8601 timestamp when this class record was created."
},
"entryTool": {
"type": "string",
"description": "Optional name of the entry tool (a tool defined by one of this class's skills) the universal runner invokes directly when an agent of this class is spawned. Setting this puts the class in deterministic mode: the runner calls `import('./tools/<entryTool>/main.ts').default({input, bridge, config})` and forwards its return value as the agent's result. Classes without `entryTool` run in LLM-driven mode: the runner builds a tool registry from skill examples + tools and drives an LLM loop."
},
"description": {
"type": "string",
"description": "Description of what agents instantiated from this class are for and what they can do."
},
"spawnsSubAgent": {
"type": "boolean",
"description": "If true, agents of this class are intended to be spawned as sub-agents from a parent agent's flow rather than as a top-level runtime."
}
}
},
"description": "An agent class definition. Acts as a template that agents are instantiated from. The class is a named bundle of skills (strongRefs to com.publicdomainrelay.temp.agent.skill records) plus optional metadata. Instantiating an agent from a class means spawning a runtime (or sub-agent context) seeded with this skill set."
}