• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
project logo

tijs

anchor-appview

This is the Anchor AppView - location based feed generator
Public
Like
1
anchor-appview
Home
Code
20
.claude
1
.github
1
backend
7
coverage
database
2
debug-oauth-sessions
docs
4
frontend
7
lexicons
1
scripts
3
tests
4
types
1
.gitignore
.vtignore
CLAUDE.md
README.md
deno.json
deno.test.json
H
main.tsx
opinionated-val-town.md
Branches
1
Pull requests
Remixes
History
Environment variables
9
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
docs
/
lexicon-publishing.md
Code
/
docs
/
lexicon-publishing.md
Search
12/13/2025
Viewing readonly version of main branch: v1583
View latest version
lexicon-publishing.md

Publishing Anchor Lexicons

This document explains how the app.dropanchor.* lexicons are published using the AT Protocol's repository-based lexicon resolution.

Current Status

The Anchor lexicons are published as AT Protocol records on hamster.farm:

~/go/bin/glot status lexicons/ # 🟣 app.dropanchor.checkin # 🟣 app.dropanchor.comment # 🟣 app.dropanchor.like

How It Works

Lexicons are published as com.atproto.lexicon.schema records in an AT Protocol repository, following the official spec.

Resolution Chain

  1. NSID: app.dropanchor.checkin
  2. Reverse domain: dropanchor.app
  3. DNS TXT lookup: _lexicon.dropanchor.app → did:plc:aq7owa5y7ndc2hzjz37wy7ma
  4. DID resolves to PDS: https://hamster.farm
  5. Fetch record: at://did:plc:aq7owa5y7ndc2hzjz37wy7ma/com.atproto.lexicon.schema/app.dropanchor.checkin

Published Records

LexiconAT-URI
app.dropanchor.checkinat://did:plc:aq7owa5y7ndc2hzjz37wy7ma/com.atproto.lexicon.schema/app.dropanchor.checkin
app.dropanchor.likeat://did:plc:aq7owa5y7ndc2hzjz37wy7ma/com.atproto.lexicon.schema/app.dropanchor.like
app.dropanchor.commentat://did:plc:aq7owa5y7ndc2hzjz37wy7ma/com.atproto.lexicon.schema/app.dropanchor.comment

Publishing Updates

To republish lexicons after making changes:

# Set credentials export HANDLE=tijs.org export APP_PASSWORD=your-app-password # Run the publish script deno run --allow-net --allow-read --allow-env scripts/publish-lexicons.ts

The script uses putRecord so it will update existing records.

DNS Configuration

The DNS TXT record maps the app.dropanchor namespace to a DID:

_lexicon.dropanchor.app. IN TXT "did=did:plc:aq7owa5y7ndc2hzjz37wy7ma"

This DID (tijs.org on hamster.farm) hosts the lexicon schema records.

Why This Approach?

The repository-based approach (vs HTTP file hosting) provides:

  • Self-hosted: Lexicons live on hamster.farm, fully under our control
  • AT Protocol native: Uses standard record types and resolution
  • Change detection: Updates visible via the firehose
  • Portable: Can migrate to another PDS if needed

Verification

# Check DNS resolution dig TXT _lexicon.dropanchor.app +short # Check glot can find them ~/go/bin/glot status lexicons/ ~/go/bin/glot check-dns lexicons/ # Fetch directly from PDS curl -s "https://hamster.farm/xrpc/com.atproto.repo.getRecord?repo=did:plc:aq7owa5y7ndc2hzjz37wy7ma&collection=com.atproto.lexicon.schema&rkey=app.dropanchor.checkin" | jq .value.id

References

  • AT Protocol Lexicon Spec
  • Lexicon Resolution RFC
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.