







Hey @dholms.at, do you have plans for blobs in spaces? We're chatting about it on @iame.li's stream. The proposal says blobs are uploaded to space host, right? That makes sense when the space host is a PDS because it has `com.atproto.repo.uploadBlob`, but not if the space host is something else.
Jul 6, 2026 at 9:56 PM
Atproto spaces alpha updates
Hey folks, we just launched the atproto spaces alpha. Check out the blog post for more details! Over the following weeks, we’ll be iterating on the specification and the implementation. In all likelihood, this will involve breaking changes to the PDS distribution, the Bluesky-hosted alpha PDS, and the alpha SDKs. To minimize disruption, we’ll plan to do releases on Thursdays (barring something critical that requires more immediate attention). When we do a release, We’ll make a post to this thr...

A blob in the bucket - Hitchhiker's Guide to the Atmosphere
Learn how to setup your self hosted PDS to use an S3 object store for blob storage.
blooym.dev/porxie
[MIRROR ONLY] A correct and efficient ATProto blob proxy for secure content delivery.
Atproto spaces alpha updates
Okay as promised, we just cut another spaces alpha releast today! This includes the credential & sync changes that I listed above plus a small API field rename in listSpaces and simplespace.createSpace. There are several breaking changes, and I expect this to be a more disruptive rollout than the last one. The rollout will update the hosted psaces alpha PDS, the Docker image at ghcr.io/bluesky-social/atproto:pds-spaces-alpha and the relevant npm packages. For folks running their own PDS, this r...

atproto vancouver (@vancouver.atprotocol.community)
atproto community in Vancouver, Canada Hosted on @commonscomputer.com, a PDS host on a server at @z-space.ca Check out our @blento.app for more info: https://vancouver.atprotocol.community/
Tiles: take a blob's mimeType from what uploadBlob returns #11
The tiles appendix recommends `application/octet-stream` as the `mimeType` of every blob reference. On some PDS implementations that recommendation makes a tile unpublishable as soon as it contains a file whose type can be recognised from its bytes. The reference implementation (bluesky-social/atproto, packages/pds, actor-`store/blob/transactor.ts`) does two things that together cause it: - On `com.atproto.repo.uploadBlob` it sniffs the bytes and stores the blob under the type it recognises (`image/png`, `audio/wav`, `font/woff2`, ...). The type the upload declared is used only when nothing is recognised, which is the case for HTML, CSS, JavaScript and JSON. - When a record that references a newly uploaded blob is written, it compares the reference's `mimeType` with the stored type and refuses the whole write if they differ: "Referenced Mimetype does not match stored blob. Expected: image/png". So a publisher that follows the appendix and writes `application/octet-stream` everywhere succeeds for a tile made only of text, and fails at the `com.atproto.repo.putRecord` of the tile's record for any tile with an image, a sound or a font in it. appmosphe.re's publish page does exactly this and fails that way, for example with "Expected: audio/wav" for a tile carrying a WAV sample. `atile publish` does not fail, because it sniffs each file itself with the same file-type library and writes what it finds; that only works as long as its sniffing agrees with that of the implementation it publishes to. `uploadBlob` already answers with the complete blob reference, `mimeType` included. Using that reference as the resource's src is correct on every implementation: one that sniffs reports the type it stored, and one that does not reports the declared `application/octet-stream`, which is what the appendix recommended before. The content-type the tile is served with stays separate and unaffected.
Blooym/porxie
[Mirror] A correct and efficient ATProto blob proxy for secure content delivery.
at this point for each day that goes i hate the atproto blob type more and more. like. not blobs themselves at all. but the damn data model representation of a blob reference. why does it have the mime type there ... arguably even the size. could technically even just be a plain CID link but cant
Atproto Spaces (buckets, we hardly knew ye) have moved from a proposal to real live working — AND VERY MUCH ALPHA DO NOT USE THIS IN PRODUCTION — code. We even set up a working PDS for y'all to use, head over to bsky.network/account to get going
AT Protocol Developers
The most significant extension to the protocol since launch—atproto spaces—is now officially alpha software you can start testing with. Here's more about the goals and how to start testing. atproto.com/blog/atproto-spaces-alpha
The @roomy.space crew got a test of a new feature -> export/archiving of @stream.place chat logs into Roomy. See the test roomy.space/atmosphereconf.org/01KMP9ED0B… As well, iOS loading issues are fixed!
Anyone else building on atproto hit the 1000-blobs/day-per-IP limit on uploadBlob? It's shared across all your users if your backend proxies uploads, so a few bulk imports on @currents.is ate up the whole quota and blocked unrelated users from saving images
You know what I want: a "headless" PDS. @roomy.space needs a way to create an ATProto account for every space that is created. That means we need a legit PDS repo. We don't want to implement a PDS ourselves, so we'd rather use Tranquil or the reference PDS.