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.
Live
<atproto-followers src="pfrazee.com" limit="32"></atproto-followers> Attributes
| Name | Type | Default | Description |
|---|---|---|---|
src * | string | — | Subject handle or DID. |
limit | number | 16 | Avatars per page. |
constellation | string | — | Override the Constellation endpoint. |
Parts
External CSS can target these via atproto-followers::part(<name>) { ... }.
| Part | What it is |
|---|---|
head | 'N followers' counter. |
grid | Avatar grid container. |
actor / actor-avatar | Each avatar tile. |
loadmore / empty | Pagination + empty-state. |
What it does
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.
Why this uses a different endpoint than likers
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.
What this isn't
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.
Related
<atproto-mutuals> — intersection of two accounts' followers.
<atproto-profile> shows the follower count as a single
number in its stats row.