explaingit

bluesky-social/atproto

9,399TypeScriptAudience · developerComplexity · 4/5Setup · hard

TLDR

atproto is the official TypeScript reference implementation of Bluesky's open social networking protocol, letting anyone run their own server, build custom social apps, and own their data instead of depending on one company.

Mindmap

mindmap
  root((atproto))
    What it does
      Decentralized social protocol
      Powers Bluesky network
    Server components
      Personal Data Server
      AppView feeds
    Client libraries
      Identity resolution
      Cryptographic signing
      HTTP API layer
    Schema system
      Lexicon definitions
      Data type specs
      API endpoint specs
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run your own Personal Data Server so your posts and social graph live on your infrastructure and not Bluesky's

USE CASE 2

Build a custom social app or Bluesky bot using the published TypeScript SDK packages for identity, signing, and the HTTP API

USE CASE 3

Read the Lexicon schema definitions to understand Bluesky's full data model before building an integration

Tech stack

TypeScriptNode.js

Getting it running

Difficulty · hard Time to first run · 1h+

Running a full Personal Data Server requires configuring multiple components including identity resolution, storage, and cryptographic key management.

In plain English

This repository contains the TypeScript reference implementation of AT Protocol, the open social networking standard created by Bluesky. AT Protocol is the technical foundation that the Bluesky social network is built on, and this codebase is the authoritative version of how that protocol works. The basic idea behind AT Protocol is that social media does not have to be controlled by a single company. Instead of one organization owning all the data and deciding who can access it, the protocol lets anyone run their own server that stores their own posts and follows. These personal servers, called Personal Data Servers, can talk to each other across the network. Bluesky's own app is one application built on top of this infrastructure, but others can build different apps using the same underlying data. This monorepo contains several distinct pieces. On the server side, it includes the Personal Data Server software and the AppView, which is the component that assembles feeds and processes queries for the app.bsky namespace used by the Bluesky app. On the library side, it publishes TypeScript packages for things like identity resolution, cryptographic signing, data storage structures, and the HTTP API layer. These packages can be used by developers building their own clients or services on the protocol. The protocol uses a schema definition format called Lexicon to describe all its data types and API endpoints, similar in purpose to JSON Schema or OpenAPI. Those schema files live in this repository and serve as the canonical specification. The project is developed by Bluesky Social PBC and accepts community contributions, though the team notes they have limited bandwidth and prioritize carefully scoped changes.

Copy-paste prompts

Prompt 1
Using the atproto TypeScript packages, write code to log in to a Bluesky account and post a new text message with an embedded link card
Prompt 2
How do I spin up a local Personal Data Server from the atproto monorepo for integration testing against a real AT Protocol node?
Prompt 3
Explain how AT Protocol's Lexicon schema system works and show me how to define a custom record type for a new namespace
Prompt 4
I want to build a custom feed generator for Bluesky using atproto, which packages do I need, and what does the firehose subscription look like in code?
Open on GitHub → Explain another repo

← bluesky-social on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.