Skip to content

Introduction

Stratos is a private permissioned data layer for ATprotocol. It keeps private records out of public purview, publishes enrollment metadata back to the PDS for discovery, and lets downstream apps serve boundary-filtered content without inventing a separate identity model.

What Problem Does It Solve?

ATprotocol is designed for open, public social data. Every record on a PDS is visible to anyone who knows the AT-URI. Stratos adds a permissioned layer on top: users can create posts that are only visible to members of specific communities, without leaving the AT Protocol identity and tooling ecosystem.

How It Works

  1. A user enrolls with a Stratos service via OAuth. The service writes a zone.stratos.actor.enrollment record to the user's PDS.
  2. The user creates private records by calling the Stratos XRPC API. Records are stored in the user's per-actor repo on Stratos, not on the PDS. Nothing is written to the PDS on the record write path; hydrated records carry a source field pointing back to Stratos.
  3. A standalone indexer subscribes to the PDS firehose (to discover enrollments) and to each user's subscribeRecords stream (to index records with their boundary metadata).
  4. An AppView queries the indexed PostgreSQL tables. When a viewer requests a feed, the AppView filters posts to only those whose boundaries overlap with the viewer's enrolled boundaries.

Repository Packages

PackageDescription
stratos-coreDomain logic, storage interfaces, schema, validation, MST commit builder
stratos-serviceHTTP/XRPC service, OAuth enrollment, repo CRUD, sync export, adapters
stratos-clientDiscovery, routing, verification, and OAuth scope helpers
stratos-indexerStandalone indexer consuming PDS + Stratos streams into AppView PostgreSQL
webappSvelte demo client for enrollment and private posting
lexiconsJSON-based lexicon definitions

Architecture

For a deeper dive into the technical details of Stratos, see the following documentation:

Next Steps