ATProto is a protocol for open and free social media.
What ATProto is and why it exists:
Why ATProto
Current social media platforms hold a monopoly over user data and connections. Whatever you post to or do on sites like Twitter, Pintrest, or Tumblr is stored on that platform and can't be moved elsewhere. If a site turns into a producer of CSAM and deepfake porn it can be hard to move to another platform without essentially starting over.
Open Social
One popular proposed solution to this is ActivityPub, also known as the "Fediverse", which is a protocol standardised by W3C. The Fediverse works like existing social media platforms, except users on Twitter can interact with users on Tumblr and so on. The Fediverse also generally has a culture of open source, donation based services, instead of prorietary advertising funded ones.
A couple major flaws with the fediverse:
One entity still has control over your posts. You can ask to move your social graph, but this isnt perfect and only generally moves follows.
Some instances can blacklist other instances, like "Gay Twitter" blocking "Twitter" in this example.
The developer experience is (allegedly) Quite Bad
Some work is being made to make it possible to migrate your identity and posts, but I'm not convinced it would be effective, and wouldn't fix other major issues with the fediverse. ActivityPub is great at what its good at (tightnit communities without being completely isolated) but not so great at "global town square" social media.
Atproto
Another major "Open Social" protocol is ATProto, which was developed by BlueSky and work is being done to standardise it at the IETF. ATP works in a very different way — the canonical source of your data is a "PDS", which is then referenced by app servers.
Notice how the same data can be ingested by multiple different apps (twitter and gay twitter) and how data from other apps can interoperate with other apps (pintrest data is used by pintrest and tumblr, pintrest uses pintrest and dongs). Interoperability is one of the major advantages of ATP
ATP also includes "credible exit" as a core design principle — you can migrate your account away from a PDS without them being able to stop you (see migration and securing your account)
ATProto isn't without flaws though:
Running an app server for a large app like bluesky is Expensive
You cannot have private data on protocol (this is a WIP though)
Your data is broadcast to anyone listening for it
A list of PDSes open to migration:
Open PDSes
Public without invite code:
This is the "flagship" pds instance operated by bluesky. Signup is open to everyone, and anyone can migrate away from it. If you have an existing bsky.social account, you can migrate back. If you're really worried about your account you could sign up and migrate away so you can migrate back later (⚠️ I haven't tested migrating to bsky.social! ⚠️), but several companies now rely on atproto for their existence, and many alternate pdses are open so I don't think this is an important concern. In the future I believe bluesky plan to open up incoming migrations -- once the ecosystem has more open pdses with more users.
This pds is operated by blacksky. Avaliable handles are .blacksky.app, .myatproto.social, and .cryptoanarchy.network. .blacksky.app is only allowed for black users (not any POC — specifically black). I reccomend checking out https://blackskyweb.xyz, https://blackskyweb.xyz/overview, and https://docs.blacksky.community/ before migration.
This pds is operated by respected community member and is used by many atproto based apps as their default pds signup instance.
This pds is operated by tophhie.cloud. I don't know much about them — do your own research.
Public with invite code
This pds is operated by community member (and my mutual) and . If you want an invite code you need to DM on bluesky, which means this pds does not support new users (unless you get someone to message for you). zio.blue bypasses age verification requirements due to laws like the Online Safety Act.
This pds is for "2SLGBTQIA+ people" with -- at the time of writing -- a waiting list for sign ups. See northskysocial.com for more information.
Private with invite code
This pds is operated by me and runs off a pi on my desk. Invite codes are required — message me for one and I'll hook you up. Avaliable handles are .abnormal.zip, .pds.vielle.dev, .at.vielle.dev, and .at.dongs.zip. I ask that .pds.vielle.dev is reserved for john-doe.pds.vielle.dev and .at.vielle.dev is reserved for specifically my alts. If you use one of these handles I will ask you to change it. If you do not change it I'll figure out how to change it for you.
Selfhosting
⚠️ HERE BE DRAGONS -- PROCEED WITH CAUTION ⚠️
If you have your own domain you can host your own pds. https://atproto.com/guides/self-hosting, https://github.com/bluesky-social/pds, and https://github.com/bluesky-social/deploy-recipes are good guides for using the reference implementation of the pds. Popular alternative pds implementations include:
rksy-pdsby blacksky
Some links for a more technical and in depth guide to ATProto:
Further Technical Reading
A list of Atmosphere apps:
Atmosphere Apps
Bluesky is the "flagship" microblogging app on ATProto. Lots of apps use the data from your profile on bluesky at the minute — it's reccomended to set up your profile at minimum. Note that in bluesky you should sign in with your actual account password. The bluesky app is currently the easiest way to access many important app settings that really shouldnt be in the bsky app (app passwords, email, etc) but they are because bluesky is a legacy app and doesn't do things properly.
When signing in to blusky, you need to change the account host from "Bluesky Social" to a custom option — the url of your PDS host like https://abnormal.zip/.
Leaflet is a longform blogging platform like substack (but not by nazis) — this post is on leaflet!
Semble is a link sharing app where you save "cards" (links) of websites into collections, and can see what links other people have saved.
Anisota is a weird type of app because its a bluesky client but its so radically different and has its own data alongside the bluesky data. It's designed with mindful use of social media in mind — it forces you to log off — and is generally quite nice to use.
Pckt is another blogging platform like leaflet. Pckt and leaflet are compatiable with each other since they both use standard.site which allows blogging platforms to work with each other.
PDSls is a PDS browser, meaning it allows you to see all the data for a given user (along side many other things). Its a great little tool which is made by the community and used by bluesky devs themselves.
Streamplace is a decentralized livestreaming app like twitch built on atproto. If you want you can even run your own "node" with interoperates with other streamplace nodes.
Sidetrail is best described through the "intro trail"
Smokesignal is a public RSVP app for event planning
Like Letterboxd but on atproto.
Teal is a music scrobbling platform like last.fm except it doesnt exist yet. You can scrobble your data using a variety of methods, with the most popular being "piper", which I host an instance of here (invite only). The data from teal is used across a variety of apps though, and you may as well start scrobbling now. Plus, for abnormal.zip accounts, your current song shows up under your name on the homepage.
Blento is the ultimate example of ATProto interoperability. It's a linktree adjacent app, which is best explained by looking at an example (like mine). The really cool thing about blento is the fact that data from other atproto apps can be used in your profile. It can list your blog posts to leaflet or pckt, your bluesky posts, your recent streamplace livestreams, your reviews on popfeed, your listens on teal, replies to a "guestbook" on bluesky, your likes on npmx (dev thing), and all the data types you have in your account.
A guide to account creation:
Creating an Account
1. Choose a pds. You can choose a public pds (or a private pds if you get an invite code). A few reccomended options are listed here.
2. Create an account on the instance. click one of the buttons underneath, or use bsky.app. If you use bsky.app, click Create Account, then look for the small text that says “You are creating an account on Bluesky Social” and click the text Bluesky Social. Then, click custom and enter the address of your pds (ex: https://abnormal.zip/), and follow the standard signup instructions.
3. Done! If you want to migrate to a new server (ex, you selected bsky.social), follow the instructions in "Account Migration"
A guide to account migration:
Account Migration
Migration is a somewhat risky operation (mostly safe but sometimes you can run into issues — I reccomend securing your account beforehand and getting in touch with me if you have problems) but is fairly easy to do thanks to pds moover by . Make sure to read over https://pdsmoover.com/info before migrating, and I reccomend following the video by — obviously replacing blacksky.app and the handles with whichever pds and handles you’re using.
A guide to securing your account:
Securing your Account
Securing your account protects your account from a hostile pds and consists of 2 main components:
Securing your did
Backing up your data
Once again pds moover can help and make things easy. Head to https://pdsmoover.com/backups, and enter your accounts handle and real password — read everything carefully, backups are important and can be risky if you’re reckless.
On the next screen, make a new rotation key (following the onscreen instructions by getting the plc token email), and save it to your password manager. Make sure you remember where you save it. If you can’t save this to your password manager, download the key file and save it somewhere safe. If you lose this key you could lose your account (if the pds becomes hostile).
This also creates a daily backup of your account, including both records and blobs. The most common case of a hostile pds is the pds going offline — pds moover is sufficient if this is the only concern you have.
If you're really worried about your data, I reccomend making a regular local backup. Theres quite a few ways you could do this, but the general steps are outlined below
Resolve your handle/did to your pds. Theres a good guide here, but you can also just hardcode it if you want, as long as you remember to change it whenever you migrate
Call
/xrpc/com.atproto.sync.getRepo?did=<your did>to get your car file and save it somewhere. If you want history, call/xrpc/com.atproto.sync.getRepoStatus?did=<your did>to get the current rev, or extract it from the car file to use as a filename. Or you can use the date. If you don’t care about blobs you can stop hereCall
/xrpc/com.atproto.sync.listBlobs?did=<your did>to get a list of all your blobs. If the number ofcidsis equal to 500 (or whatever limit you set in the request), repeat the call with&cursor=<cursor from last request>, and appendcidsuntil you get a number of cids less than 500.For each blob, call
/xrpc/com.atproto.sync.getBlob?did=<your did>&cid=<current cid>and save the blob response. Its reccomended to use the cid (or<cid>.<filetype>), since the cid is a hash of the contents and so won’t change. If you restore a blob that isn’t being used in the repo, it will get deleted after roughly an hour.