content surface · pds · lexicon-agnostic
<atproto-repo>
Browse a repo's every collection — native Bluesky lexicons alongside any custom NSIDs. Lazy-expand each collection to see its records.
Live
<atproto-repo src="pfrazee.com"></atproto-repo>
<atproto-repo src="did:plc:..."></atproto-repo> Attributes
| Name | Type | Default | Description |
|---|---|---|---|
src * | string | — | Handle or DID. |
Parts
External CSS can target these via atproto-repo::part(<name>) { ... }.
| Part | What it is |
|---|---|
article / header | Outer card + header block. |
handle / did | Handle and DID text. |
collections-label | 'N collections' label above the list. |
collections | Container wrapping each collection row. |
collection / collection-summary / collection-body | Expandable per-collection row + its summary + the lazy-loaded content. |
empty | Empty-state for repos with no collections. |
What it does
Surfaces com.atproto.repo.describeRepo — the PDS's own
introspection endpoint — as a browsable tree. Shows the repo's handle and
DID at the top, then lists every collection the repo holds. Clicking any
collection expands inline to show its records via
<atproto-record-list>, which renders each as a full
<atproto-lexicon-viewer>.
Records lazy-load on expansion. The initial render is just a single PDS call — no matter how many collections the repo has.
Why this is useful
- Custom lexicon builders: point it at your own DID to see the full inventory of what your PDS has indexed — Bluesky records alongside your custom lexicons, all in one tree.
- Protocol exploration: point it at any account to see what they've been writing besides Bluesky — some users have dozens of custom collections from experiments, third-party apps, bridges.
- Debugging: before you assume a record exists or a collection has content, verify with this view. Works on any reachable PDS.
What it doesn't do
No record counts per collection — that info isn't in describeRepo's response, and counting per-collection would cost one listRecords page per collection up front. The lazy-expansion keeps that cost deferred.
No blob / media listing. If you want to see a repo's blobs separately,
com.atproto.sync.listBlobs would be a separate
surface — not yet exposed as a component.
Related
<atproto-record-list> for a single collection.
<atproto-lexicon-viewer> for a single record.
<atproto-backlinks> for what LINKS to a subject (vs
what the subject's repo contains).