Back Original

I haven't made anything with AT Proto yet

Landscape

I haven't made anything with AT Proto.

Okay, technically, I did made the Bluesky ThinkUp Tribute, which syncs with your Bluesky account and sends a nightly email about who changed their bio or handle on the website. It's a great little utility and I rely on it constantly. But that doesn't integrate very deeply with AT Proto.

I've fallen into the cycle of reading about AT Proto but not building anything on it: a pattern that I want to break. I blame other priorities for my lack of weekend hacking - when I do get time and energy to computer on the weekends I've spent it on maintaining and contributing to established projects instead of building new experiments. And my time during the week is mostly spent on Val Town priorities, like keeping the servers online, developing features, and implementing moderation.

I don't especially like writing about things without having 'something to show,' but to avoid the trap of neither writing nor building, here's some writing.


The tech that runs Bluesky is general-purpose

The AT Protocol is the tech that Bluesky, the Twitter alternative, is built on. It's fairly general-purpose and well-suited for building all kinds of applications, not just Bluesky, and has some very utopian ideas built in. Collectively, we're calling the stack and its applications the 'Atmosphere.'

This has been, recently, in my filter bubble, a big deal. Applications like Leaflet for blogging and tangled, a GitHub alternative, use the AT Protocol as core architecture, storing data on it, allowing other applications to provide alternative frontends, and using its identity system to let people log in with their domain names or Bluesky handles.

It is a breath of fresh air in the tech industry. The creativity of this community is inspiring, and with a few exceptions people are friendly and welcoming.


AT Proto learned lessons from other decentralization attempts

Decentralization has had a lot of false starts: see my old posts on Dat, IPFS, IPFS again, and Arweave for some of that backstory. I am a seeker in that space, ready to try out what's new and hoping that the technology works, even though most of the results so far have been lackluster.

The Bluesky team has a lot of experience with those previous efforts: Paul Frazee, the CTO cofounded Blue Link Labs which made Beaker and integrated with Dat, and he worked on Secure Scuttlebutt before that. Other Bluesky employees like Jeromy Johnson came from the IPFS team.

So Bluesky is a lot of people's second or third try at making decentralization work, and it shows in some of the thinking, especially Paul's writing about how Bluesky compares to P2P and magical mesh networks.

This is encouraging. A lot of decentralization ideas work in theory but not in practice. Much of the challenge is practical and human-level, and it is good that it seems like the Bluesky team anticipated things like moderating content from day one.


It's more like a magical database than like a new internet

The AT Protocol is a lot different from the decentralization tech that I've played around with the most, like Dat and IFPS. Both Dat and IPFS are kind of like 'generic blob stores': you can store any kind of content on them, and they had URL-like addressing for that content. They both aspired to be a sort of future-internet in shape: Dat had the Beaker Browser and for a while IPFS was built into the Brave Browser. So I kept trying to deploy my website onto these technologies, with varying success, and IPFS tried to host all of Wikipedia, with varying success.

AT Proto is more like a magic semi-schemaless database. A 'post' on Bluesky looks like this:

{
  "text": "some placemark updates: sorting & resizing table columns, new releases of simple-statistics and tokml, using changesets in all my projects\n\nmacwright.com/2026/03/15/o...",
  "$type": "app.bsky.feed.post",
  "embed": {
    "$type": "app.bsky.embed.external",
    "external": {
      "uri": "https://macwright.com/2026/03/15/oss-changelog",
      "title": "Placemark & OSS Changelog",
      "description": "JavaScript, math, maps, etc"
    }
  },
  "langs": ["en"],
  "facets": [{
    "index": { "byteEnd": 169, "byteStart": 140 },
    "features": [
      {
        "uri": "https://macwright.com/2026/03/15/oss-changelog",
        "$type": "app.bsky.richtext.facet#link"
      }
    ]
  }],
  "createdAt": "2026-03-15T23:03:29.022Z"
}

It's JSON-encoded, structured, and opinionated, and importantly, limited in size. Don't expect to put a ton of data in this Record - right now a record can't be more than 1MB when encoded as CBOR.

Of course a modern social network is nothing without images and vertical video, so Bluesky needs to store more than just JSON documents, and so there's Blob support - stored as raw binary data, referenced from a Record. Though blobs are limited too, with the limits varying by server but usually 100MB.

This was a big realization for me around tangled - that project which is extremely cool (rebuilding a more decentralized code collaboration platform) is not using AT Proto to store git data, but rather has servers called Knots that handle the git parts. It's a very cool infrastructure, but important to note that the way in which metadata and git content are stored is quite different.


Is AT Protocol a good database?

Obviously it isn't (just) a database but it's a useful frame: how does AT Protocol work with typical database requirements?


Privacy is still a hard unsolved problem

So: you can store structured documents on AT Proto and small binary blobs - what about privacy? This might change soon because there's so much active development, but right now: you can't really use AT Proto for private data.

Paul has written a great discussion of different approaches, and it's clear that there are deep problems that require introspection and thorough evaluation, but that nothing is deployed yet. Bluesky does have direct messages, but according to Gavin Anderegg's investigation, they're 'off-protocol' so not actually anywhere on AT Proto.

This is obviously a big stumbling block for applications. Val Town couldn't use the Atmosphere for data storage if there is no concept of privacy. Right now our traditional backend infrastructure (mostly Postgres) makes both privacy and good-enough encryption at rest (mostly AES-GCM) pretty simple to implement, if not foolproof.

There are experiments around implementing privacy on AT Proto, like Germ, but none have solved all of the problems that need solving.


What should I do with it?

I have plenty of existing and potential projects to use as testbeds for new technology: that's one of the main reason why side-projects can be so nice, is that they're safe places to use bleeding-edge technology without risking alienating your entire team at work. So where can I use AT Proto?

I would love to support sharing maps on Placemark again. Geospatial data probably won't fit in AT Proto records because it's fiendishly large and complex, but it could be squeezed into a blob if it's small enough. Maybe encoding JSON as CBOR is enough to shrink the data a bit without losing fidelity.

It would be really fun to get AT Proto logins working with Val Town: Orta implemented something similar for Puzzmo. Unfortunately user signup is a very knotty problem for us because, like every other hosting platform, we are in a daily battle with spammers. Orta's solution for Puzzmo was to make Bluesky login an additional, linked account along with your existing Puzzmo account, which makes a lot of sense.

I could also try to put this blog on AT Proto. standard.site has some specs for doing that, and sequoia would make publishing pretty easy. Leaflet.pub is riding high on their adoption of AT Proto for blogging. I'm honestly more confused than excited about this possibility: partly because RSS is already so good for publishing blogs, and because I'm not sure what syndicating to the atmosphere really does for this blog? I especially don't want to publish on AT Proto first, because rule #1 of macwright.com is to keep this site alive forever and avoid boondoggles.


Where does this go?

AT Proto is in a creative-explosion phase, which is really exciting. The way that the platform has been crafted makes it easy to incrementally introduce Atmosphere features to existing applications, and I am really relieved how little unnecessary jargon there seems to be, even though it's a very complicated system.

Of all the values it provides, I think a rock-solid sense of credible exit is the most consistently achieved. Being able to plug a different application into the same data, or to move your data from one host to another is incredible, as Dan Abramov wrote about in 'A Social Filesystem'.

Having been on the internet for a long time, I don't expect anything to last forever, and I won't be heartbroken when the flaws in the plan are inevitably identified or some bad actor spoils the party for a while.

I wonder about the long-term economics of the thing, though: Bluesky is essentially providing a free database to anyone who wants to implement the AppView part of the system. How long does this last, especially if some Atmosphere apps become successful and start generating lots of revenue. Companies do not like subsidizing each other.

I think that's a few years off. Maybe we start paying for a deluxe plan once we store a gigabyte or two on Bluesky's servers, or one of the stablecoin-based micropayments technologies takes off (let's be real, if one does, it'll be Stripe's) and popular applications pay for their user storage on other PDS systems, in a faint echo of Filecoin's failure.


A spell for creativity

I plan to return here and have something to show on AT Proto. Not to overthink it, to ship something. It's fun to read but even more fun to write code, or a bit of manic fun to use LLMs to prototype something. I'm having more success drawing a portrait every day and using my sewing machine than working on the internet on the weekends, but that is partly because of a pessimistic view of the current trend, and the Atmosphere is a trend I can get behind.