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
🧑
User
alice.bsky.social
⚙️
Stratos Service
stratos.example.com
🗄️
PDS
pds.bsky.social
🔄
Indexer
stratos-indexer
🛢️
PostgreSQL
appview database
💻
Client App
your application
- A user enrolls with a Stratos service via OAuth. The service writes a
zone.stratos.actor.enrollmentrecord to the user's PDS. - 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. A lightweight stub record is written to the PDS with a
sourcefield pointing back to Stratos. - A standalone indexer subscribes to the PDS firehose (to discover enrollments) and to each user's
subscribeRecordsstream (to index records with their boundary metadata). - 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
| Package | Description |
|---|---|
stratos-core | Domain logic, storage interfaces, schema, validation, MST commit builder |
stratos-service | HTTP/XRPC service, OAuth enrollment, repo CRUD, sync export, adapters |
stratos-client | Discovery, routing, verification, and OAuth scope helpers |
stratos-indexer | Standalone indexer consuming PDS + Stratos streams into AppView PostgreSQL |
webapp | Svelte demo client for enrollment and private posting |
Next Steps
- Read Core Concepts to understand boundaries, enrollment, and hydration.
- Follow the Client Integration Guide to add Stratos to your app.
- See the Operator Guide to deploy a Stratos service.
- Explore the Architecture for deep technical detail.