Standard ReaderDeveloper docsDocs
Developer docs

Labelers

Publish AT Protocol labels that Standard Reader shows — and can warn on or hide by — as readers read.

Overview

A labeler is any DID that publishes AT Proto labels. Readers add one by DID on the Labelers page, and Standard Reader then shows that labeler's labels — and can warn on or hide labeled posts — as they read. Labelers are discovered the standard way; nothing about them is specific to us.

Running a labeler

1. Identity & signing key. Give it a DID (a did:web is simplest) whose DID document advertises an #atproto_labeler service endpoint and an #atproto_label public signing key.

2. Serve labels. Sign and emit com.atproto.label.defs#label objects, and expose the standard com.atproto.label.queryLabels (HTTP) and com.atproto.label.subscribeLabels (WebSocket) endpoints.

3. Declare your label values. Describe each value (severity, default warn/hide, blur behavior) in an app.standard-reader.labeler.service descriptor, served from app.standard-reader.labeler.getServices (a did:web labeler has no repo to hold the record).

4. Let readers subscribe. When a reader subscribes we write an app.standard-reader.labeler.subscription record to their repo, carrying their per-label warn/hide preferences.

Reference implementation

For a complete, minimal reference implementation (Jetstream → detect → sign → SQLite → serve), see the claudeslop labeler in services/claudeslop.