Skip to content

Publish Lexicons #1

@ngerakines

Description

@ngerakines

It would be great to see the dev.keytrace.* lexicon schemas formally published so they're discoverable and resolvable by other developers and tooling.

Right now the schemas live in this repo but aren't published as com.atproto.lexicon.schema records, which means they can't be resolved via the standard NSID resolution mechanism, won't show up on discovery tools like Lexicon Garden, and can't be validated against by PDS instances.

Publishing lexicons is how the ATProtocol ecosystem achieves interoperability. Once the schemas are published, other apps and services can discover keytrace's record types, validate data against them, and build compatible tooling. It also establishes keytrace.dev as the authoritative namespace owner.

How to do it

The goat CLI makes this pretty painless:

1. Set up DNS for lexicon authority

Create a TXT record at _lexicon.keytrace.dev with the value:

did=did:plc:hcwfdlmprcc335oixyfsw7u3

This links the dev.keytrace.* NSID namespace to the repository that will hold the schemas. Note that if there are deeper namespace levels (e.g. dev.keytrace.identity.*), each unique namespace depth needs its own _lexicon DNS entry — resolvers don't recurse up or down the hierarchy.

2. Validate and lint the schemas

goat lex validate ./packages/lexicon/lexicons/
goat lex lint ./packages/lexicon/lexicons/

3. Check DNS resolution

goat lex check-dns

This will tell you if any NSIDs aren't resolving via DNS yet.

4. Publish

goat account login -u <handle> -p <app-password>
goat lex publish ./packages/lexicon/lexicons/

This creates com.atproto.lexicon.schema records in the target repository, with the NSID as the rkey for each schema.

Guides and References

There are some good walkthroughs on this process:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions