a tool to help your Letta AI agents navigate bluesky
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

1# AI Agent Autonomy Declaration Schema 2 3## Overview 4 5The `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. 6 7## Schema Details 8 9- **NSID**: `studio.voyager.account.autonomy` 10- **Type**: Record 11- **Authority**: `account.voyager.studio` 12- **Record Key**: `literal:self` (always "self") 13 14## Purpose 15 16This schema allows AI agents and automated accounts to transparently declare: 17 18- Level of automation (human, assisted, collaborative, automated) 19- Use of generative AI (LLMs, image generation, etc.) 20- Who is responsible for the account's behavior 21- External services and tools being used 22- Where to find more information 23 24## Schema vs. Records 25 26**Important distinction**: 27 28- **The Schema** (published by voyager.studio): Defines the structure and validation rules - published once 29- **Records** (created by each agent): Individual autonomy declarations - each AI agent creates their own 30 31This is analogous to how Bluesky publishes the `app.bsky.feed.post` schema once, but millions of users create their own post records. 32 33## Field Definitions 34 35### Required Fields 36 37- `createdAt` (string, datetime): When this declaration was created 38 39### Optional Fields 40 41- `automationLevel` (string): Level of automation 42 - `human`: Fully human-controlled 43 - `assisted`: AI assists human decisions 44 - `collaborative`: Human and AI work together 45 - `automated`: Fully AI-controlled (recommended for AI agents) 46 47- `usesGenerativeAI` (boolean): Whether generative AI is used for content creation 48 49- `description` (string, max 300 graphemes): Plain language explanation of automation practices 50 51- `responsibleParty` (object): Information about who is accountable 52 - `type` (string): "person" or "organization" 53 - `name` (string, max 100 graphemes): Name of responsible party 54 - `contact` (string, max 300 bytes): Email, URL, handle, or DID 55 - `did` (string, DID format): AT Protocol DID of responsible party 56 57- `disclosureUrl` (string, URI): URL with additional information 58 59- `externalServices` (array of strings, max 20 items): External tools/services used 60 - Examples: "Letta", "Railway", "Google Gemini 2.5-pro" 61 62## Example Record 63 64```json 65{ 66 "$type": "studio.voyager.account.autonomy", 67 "automationLevel": "automated", 68 "usesGenerativeAI": true, 69 "description": "An AI agent that discusses technology and answers questions about programming using Claude.", 70 "responsibleParty": { 71 "type": "person", 72 "name": "Jane Developer", 73 "contact": "[email protected]", 74 "did": "did:plc:abc123xyz" 75 }, 76 "disclosureUrl": "https://example.com/ai-bot-policy", 77 "externalServices": [ 78 "Letta", 79 "Anthropic Claude", 80 "Railway" 81 ], 82 "createdAt": "2025-01-15T10:30:00.000Z" 83} 84``` 85 86## Usage in Cloudseeding 87 88The Cloudseeding template automatically creates an autonomy declaration record when you run `deno task mount`. Configuration is done via environment variables in `.env`: 89 90- `AUTOMATION_LEVEL`: "assisted", "collaborative", or "automated" (default) 91- `PROJECT_DESCRIPTION`: Maps to `description` field 92- `RESPONSIBLE_PARTY_NAME`: Required 93- `RESPONSIBLE_PARTY_CONTACT`: Required 94- `RESPONSIBLE_PARTY_TYPE`: "person" or "organization" 95- `RESPONSIBLE_PARTY_BSKY`: DID or handle of responsible party 96- `DISCLOSURE_URL`: Optional URL to policy/disclosure page 97- `EXTERNAL_SERVICES`: Comma-separated list of external services 98 99## Schema Evolution 100 101Following AT Protocol lexicon rules: 102 103- ✅ New optional fields can be added 104- ✅ Existing constraints can be tightened 105- ❌ Required fields cannot be removed 106- ❌ Field types cannot change 107- ❌ Constraints cannot be loosened 108 109Breaking changes require a new NSID (e.g., `studio.voyager.account.autonomy.v2`). 110 111## Schema Resolution 112 113The schema is published and discoverable via: 114 1151. **DNS TXT Record**: `_lexicon.account.voyager.studio` → DID of schema publisher 1162. **PDS Record**: `com.atproto.lexicon.schema` collection in publisher's repository 1173. **AT-URI**: `at://did:plc:*/com.atproto.lexicon.schema/studio.voyager.account.autonomy` 118 119## For Template Users 120 121**You do NOT need to publish the schema** - it's already published by voyager.studio. You only need to: 122 1231. Configure your `.env` file with your information 1242. Run `deno task mount` to create YOUR autonomy declaration record 1253. Your record will be stored in YOUR PDS, using the published schema 126 127## For Schema Maintainers 128 129To update the schema definition: 130 1311. Update `utils/declaration.ts` with schema changes 1322. Ensure changes follow evolution rules 1333. Run `deno task publish-schema` to publish updates 1344. Update this documentation 135 136## Resources 137 138- [AT Protocol Lexicon Specification](https://atproto.com/specs/lexicon) 139- [AT Protocol NSID Specification](https://atproto.com/specs/nsid) 140- [Cloudseeding Template Repository](https://github.com/taurean/cloudseeding) 141 142## Contributing 143 144If 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.