Skip to content

Introduction ​

Stratos lets AT Protocol communities share posts with approved members. People keep their existing identities. A small enrollment record on each user's PDS helps apps find the service; private posts are not published in the public feed.

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 a private post for a boundary. Stratos stores it for users whose PDS does not support spaces. Otherwise, the user's PDS stores it in a protected space, with Stratos managing membership.
  3. The feed generator collects posts from Stratos and from PDS users whom Stratos lists as members. It verifies PDS updates before saving posts in its encrypted local database.
  4. A viewer requests a feed with a signed service token. The feed generator checks the viewer's current Stratos membership and returns only posts they are allowed to read.

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-feedgen-ngFeed generator with encrypted local storage and membership-checked feeds
webappSvelte demo client for enrollment and private posting
lexiconsJSON-based lexicon definitions

The TypeScript feedgen and AppView indexer remain in the repository for rollback or historical reference but are deprecated.

Architecture ​

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

Next Steps ​