Sebastian Vogelsang () gives a talk at AHOY! European Social Web Day in Hamburg in 2025 called Leaving the Walled Gardens.

Umm — before we start — I’d like to thank Sebastian and the whole team for having us — and also for having me — and thanks to the other presenters.

For those who don’t know me — my name is Sebastian Vogelsang. I’m an IT consultant and developer from Berlin, Germany — and I’m the creator of the apps Gets, Blue Screen, and Flashes.

If anyone ever has a name they need a stupid name for — you can always contact me. I’m always available.

So — I want to talk about social media in general — and the problem of social media silos.

When it comes to social media — for almost two decades — we’ve lived in walled gardens. We had Instagram for photos — TikTok for short videos — and for text-based microblogging — we had Twitter. Each app had its own siloed network. No shared identities — no real cross-platform interaction. And ultimately — users, creators, and developers all paid the price — because you had fragmented communities — with zero portability across borders — and whenever you built a new app — you had to start from scratch.

Enter AT Protocol and Bluesky.

Now — we have this open, centralized, decentralized, portable social graph — already home to over 33 million users. As a developer — you can tap into the social graph — reuse identities, connections, and content — and build specialized apps that share infrastructure.

This gets slightly technical — but I think you have two paths for building a social app on AT Protocol.

Option 1: Fork the lexicon.

That means — create your own lexicon. For example — for the Flashes app — I could create a new post type with text and maybe an image. This is the bottom-up approach — you build your own AT Protocol-based app — with tailor-made data structures — total freedom over UX and UI — and most importantly — your users won’t automatically post to Bluesky. When they post something — you have your own infrastructure. The downside? You start from scratch — you have to rebuild your community — you get little or no network effects — and you bear the costs — especially for hosting and moderation — which is a big deal — especially in Germany and Europe — where we have different laws. Since it’s your lexicon — you’re responsible for it — you have to take care. So — it may not be feasible for a solo developer or small team — you basically need money to start this way.

Option 2: Reuse the Bluesky lexicon.

This is the approach I chose for my apps.

This is what a post looks like in the Bluesky lexicon — and when you post something like this — it will automatically be grabbed by Bluesky and displayed to Bluesky users.

The pros and cons are basically the inverse of Option 1. You trade in some flexibility — some of the freedom you’d have with custom data structures — for reach — and for piggybacking on Bluesky’s existing moderation. This works well — but it may only work for certain post types — especially text, video, and image-based content.

By making sure these posts are fully interoperable with the Bluesky network — you can leverage the community and existing connections.

But — this requires good UI and UX to get it right.

Here’s an example. Let’s look at the same feed in three different apps.

On the far left — you see the classic Bluesky feed — with text posts, images, videos — everything.

In the center — Blue Screen — which mimics TikTok’s vertical feed — showing only videos — which are the same videos you’d also see on the left in the Bluesky feed.

On the right — Flashes — which focuses on images — so it only displays the images from that feed.

The base is the same — it’s the same feed — picked up by all three apps.

Let’s look at profiles across apps.

Here’s the same user’s profile in Bluesky — showing all their posts.

In Blue Screen — it only shows their videos — focusing on video content.

In Flashes — you see the profile — and there’s a “Portfolio” tab — which is facilitated through additional metadata added to AT Protocol. I’ll explain this next.

This is what makes Option 2 feel almost like Option 1 in some cases — you can build stuff on top of the Bluesky lexicon. We call this a “sidecar record” — created for the profile — with the same R key as the Bluesky record — and in it — we store additional data: Does the user want to show their feeds? Should likes be displayed? When a user opens another user’s profile in Flashes — should they see their likes, their media, their lists? They can enable or disable this.

When it comes to posts — it’s a little different — because we could create sidecar records for every post — but there’s no way to fetch these sidecar records in batch.

So — what we do in Flashes — for the next release — you can add up to 12 images — and up to 900 characters — both beyond the limits Bluesky normally allows.

On the left — in Instagram — people would be very familiar with this layout — showing multiple images in a grid.

In Bluesky — this would be two separate posts — because Bluesky only allows 4 images and 300 characters per post.

So — what we do in Flashes — we use tags — which we add to the Bluesky record — and in that tag — we store how many images this post should actually have — how many characters — and then we fetch this data from Bluesky when we display the post in the timeline.

So — we’ve talked about Option 2 — building apps like Flashes on top of existing Bluesky posts. And of course — people ask — does this actually work?

Here’s what happens when you reuse that shared graph — instead of starting from zero.

This user had 7 followers on Bluesky — posted the same picture on Flashes — and got less engagement on Instagram — where they had 1,000 followers.

Another example — this person got over 100 reactions overnight — with zero promotion — more than they said they ever got on Instagram.

I don’t think these are isolated cases. This is what happens when you build on a shared, open graph — and every app can benefit from the momentum of the whole network — and users feel it.

I think that’s the power of reusing the Bluesky lexicon — and adding on top of it — instead of building your own app and rebuilding your social graph from scratch.

If you want to dig deeper — Paul Frees, the CEO of Bluesky — did an excellent post about this — on authoring lexicons — going into detail on when to use the Bluesky lexicon — when to use your own — etc. I highly recommend it.

And with that — I’d like to conclude my talk — and thank you for your attention.


The videos from AHOY! European Social Web Day held in Hamburg, Germany, are being republished along with transcripts as part of the process of preparing for ATmosphereConf 2026, taking place March 26th - 29th in Vancouver, Canada.

Follow the conference updates and register to join us!

ATmosphereConf News
News from the ATProtocol Community Conference, aka ATmosphereConf. March 26th - 29th, Vancouver, BC, Canada
https://news.atmosphereconf.org