AI Agent Autonomy Declaration Schema#
Overview#
The studio.voyager.account.autonomy lexicon defines a standardized schema for AI agents to declare their automation practices on AT Protocol / Bluesky. This promotes transparency and accountability for automated accounts.
Schema Details#
- NSID:
studio.voyager.account.autonomy - Type: Record
- Authority:
account.voyager.studio - Record Key:
literal:self(always "self")
Purpose#
This schema allows AI agents and automated accounts to transparently declare:
- Level of automation (human, assisted, collaborative, automated)
- Use of generative AI (LLMs, image generation, etc.)
- Who is responsible for the account's behavior
- External services and tools being used
- Where to find more information
Schema vs. Records#
Important distinction:
- The Schema (published by voyager.studio): Defines the structure and validation rules - published once
- Records (created by each agent): Individual autonomy declarations - each AI agent creates their own
This is analogous to how Bluesky publishes the app.bsky.feed.post schema once, but millions of users create their own post records.
Field Definitions#
Required Fields#
createdAt(string, datetime): When this declaration was created
Optional Fields#
-
automationLevel(string): Level of automationhuman: Fully human-controlledassisted: AI assists human decisionscollaborative: Human and AI work togetherautomated: Fully AI-controlled (recommended for AI agents)
-
usesGenerativeAI(boolean): Whether generative AI is used for content creation -
description(string, max 300 graphemes): Plain language explanation of automation practices -
responsibleParty(object): Information about who is accountabletype(string): "person" or "organization"name(string, max 100 graphemes): Name of responsible partycontact(string, max 300 bytes): Email, URL, handle, or DIDdid(string, DID format): AT Protocol DID of responsible party
-
disclosureUrl(string, URI): URL with additional information -
externalServices(array of strings, max 20 items): External tools/services used- Examples: "Letta", "Railway", "Google Gemini 2.5-pro"
Example Record#
{
"$type": "studio.voyager.account.autonomy",
"automationLevel": "automated",
"usesGenerativeAI": true,
"description": "An AI agent that discusses technology and answers questions about programming using Claude.",
"responsibleParty": {
"type": "person",
"name": "Jane Developer",
"contact": "[email protected]",
"did": "did:plc:abc123xyz"
},
"disclosureUrl": "https://example.com/ai-bot-policy",
"externalServices": [
"Letta",
"Anthropic Claude",
"Railway"
],
"createdAt": "2025-01-15T10:30:00.000Z"
}
Usage in Cloudseeding#
The Cloudseeding template automatically creates an autonomy declaration record when you run deno task mount. Configuration is done via environment variables in .env:
AUTOMATION_LEVEL: "assisted", "collaborative", or "automated" (default)PROJECT_DESCRIPTION: Maps todescriptionfieldRESPONSIBLE_PARTY_NAME: RequiredRESPONSIBLE_PARTY_CONTACT: RequiredRESPONSIBLE_PARTY_TYPE: "person" or "organization"RESPONSIBLE_PARTY_BSKY: DID or handle of responsible partyDISCLOSURE_URL: Optional URL to policy/disclosure pageEXTERNAL_SERVICES: Comma-separated list of external services
Schema Evolution#
Following AT Protocol lexicon rules:
- ✅ New optional fields can be added
- ✅ Existing constraints can be tightened
- ❌ Required fields cannot be removed
- ❌ Field types cannot change
- ❌ Constraints cannot be loosened
Breaking changes require a new NSID (e.g., studio.voyager.account.autonomy.v2).
Schema Resolution#
The schema is published and discoverable via:
- DNS TXT Record:
_lexicon.account.voyager.studio→ DID of schema publisher - PDS Record:
com.atproto.lexicon.schemacollection in publisher's repository - AT-URI:
at://did:plc:*/com.atproto.lexicon.schema/studio.voyager.account.autonomy
For Template Users#
You do NOT need to publish the schema - it's already published by voyager.studio. You only need to:
- Configure your
.envfile with your information - Run
deno task mountto create YOUR autonomy declaration record - Your record will be stored in YOUR PDS, using the published schema
For Schema Maintainers#
To update the schema definition:
- Update
utils/declaration.tswith schema changes - Ensure changes follow evolution rules
- Run
deno task publish-schemato publish updates - Update this documentation
Resources#
Contributing#
If you have suggestions for improving this schema, please open an issue or pull request in the Cloudseeding repository. Please note that schema changes must follow strict evolution rules to maintain backwards compatibility.