constellation · actor discovery

<atproto-followers>

Avatar grid of follower accounts. Uses Constellation's distinct-DIDs endpoint — one call gives distinct DIDs directly, cheaper than listing individual follow records.

<atproto-followers src="pfrazee.com" limit="32"></atproto-followers>
NameTypeDefaultDescription
src * string Subject handle or DID.
limit number 16 Avatars per page.
constellation string Override the Constellation endpoint.

External CSS can target these via atproto-followers::part(<name>) { ... }.

PartWhat it is
head'N followers' counter.
gridAvatar grid container.
actor / actor-avatarEach avatar tile.
loadmore / emptyPagination + empty-state.

Given a handle or DID, asks Constellation for the distinct DIDs that have authored a follow record pointing at this subject. Each DID resolves to its profile via the same PDS-direct path as the rest of the library.

Likers and reposters use getBacklinks — they need per-record detail (which follow record, in case you want to cross-reference). Followers only need distinct DIDs, so we use Constellation's legacy /links/distinct-dids endpoint, which returns DIDs directly without the record wrapper. One call, one array of strings.

Note: the /xrpc/blue.microcosm.links.getDistinct XRPC route that Constellation's docs mention doesn't actually exist on the live server — the library uses the legacy endpoint. Verified empirically.

This isn't an incoming-follower-notification feed — it's a directory grid. Constellation indexes the whole firehose, but it's a scan index, not a push feed. For live notification of new followers, you'd want your own firehose listener or a subscription to Jetstream.

<atproto-mutuals> — intersection of two accounts' followers. <atproto-profile> shows the follower count as a single number in its stats row.