Casey
banner
casey.nstar.social
Casey
@casey.nstar.social
Entrepreneur & Co-Founder @ nstar.social – A decentralized, local-first social network on the @ATProtocol keeping users in control of their data. Private beta soon!
Software Engineering, A.I. Applied @ OSU-Cascades
Absolutely! ATProto is like this right now (although a few groups are working to shift it more towards decentralization)

If bsky sticks with their protocol, they don't have much choice in terms of 3rd parties—but nothing is stopping them from changing their PDSes to not federate with 3rd parties.
September 17, 2025 at 2:06 AM
We were able to implement an in-app toggle between the BSky and Zeppelin AppViews in a matter of minutes (but our app hasn't launched yet 😉).
September 15, 2025 at 8:02 PM
I'm unsure about any clients that do this (aside from Zeppelin using its own, but I'm not sure if that is configurable), but it *is* easy for a client/app to do this, just none *are*. Imo this is because there aren't many AppViews available to use atm, aside from BSky's.
September 15, 2025 at 8:02 PM
The only thing that needs to be self-hosted is the alt AppView; it can be done through ANY pds, BSky's included. zeppelin.social is doing this with through their app since they also host an AppView. *Interfacing* with AppViews is easy because it's just a header added to requests routed to a PDS.
September 15, 2025 at 7:29 PM
It's easy for a client to interface with any appview—it just needs to proxy through the user's pds. I believe the biggest issue is the hosting costs associated with appviews (Zeppelin's was costing $200/mo a few months ago: whtwnd.com/futur.blue/3...), but I've seen some efforts to combat this!
Confirmed. Setting a client app's "atproto-proxy" HTTP header to Zepplin's service id "did:web:bsky.zeppelin.social#bsky_appview" for api.bsky* lexicons routes the traffic to the Zepplin AppView.
September 15, 2025 at 6:58 PM
Using dedicated ATmosphere/ATProtocol branding across ATProto (BSky included!) would go a LONG way to helping remedy confusion around where accounts can be used! A couple apps/developers seem to be tinkering with this, but most of the bigger ones I've seen fall into the issue of using BSky branding.
This comes down to branding.

Sign up & Sign across all apps, including Bluesky, should be an AT Protocol brand.

Blebbit.app is a decent example of branding ATProtocol. However, it’s the Blebbit.app a user is signing into not Bluesky. End users don’t understand the difference.
September 15, 2025 at 6:44 PM
Reposted by Casey
Great milestone. Looking forward to public comment period and hearing about similar milestones for other pieces in the stack, eg. PLC Directory.
September 15, 2025 at 4:31 PM
Reposted by Casey
Btw, any consideration to decentralize "AppViews"? Each could support a community while complying with/ local regulations. They'd "aggregate" w/ each other for a global view. I think we'd see more selection of "AppViews" under this model. Few have the resources to fund a single world graph view.
September 15, 2025 at 2:52 PM
Bsky could suspend you on their AppView, but not on yours (or any others independent of them). Currently (mostly) everyone uses bsky's AppView, so they're subject to bsky moderation. That said, PDSes are built to easily support using alt AppViews, apps just need to implement it!
September 14, 2025 at 11:49 PM
Not about decentralization necessarily, just bsky's dominance of atproto right now. Running your own pds is only part of the process; you still go through bsky's AppView (different than app). Moderation happens at the AppView side, so to 'bypass' bsky moderation you'd need to host your own AppView.
September 14, 2025 at 11:49 PM
Reposted by Casey
I verified the status of my DID in the old Bluesky PDS and new Nstar.social PDS through /xrpc/com.atproto.sync.getRepoStatus

Also, requested a recrawl to bsky.network/xrpc/com.atproto.sync.requestCrawl

As part of the move, changed my handle from h2oskier.bsky.network to scott.nstar.social.
September 14, 2025 at 10:07 PM
Bluesky's pds doesn't seem to have any different behavior! Just tested routing to zeppelin.social's AppView through the bsky pds & everything looks to work identical to any other pds.
September 14, 2025 at 5:52 PM
The atproto-proxy header seems to take precedence if it's set. If social-app sets it to bsky you should be routed the AppView it specifies. This has the side-effect that a single app could support multiple AppViews. We've tested this using our PDS, which has the bsky AppView set in its env config:
Confirmed. Setting a client app's "atproto-proxy" HTTP header to Zepplin's service id "did:web:bsky.zeppelin.social#bsky_appview" for api.bsky* lexicons routes the traffic to the Zepplin AppView.
September 14, 2025 at 5:40 PM
Reposted by Casey
Confirmed. Setting a client app's "atproto-proxy" HTTP header to Zepplin's service id "did:web:bsky.zeppelin.social#bsky_appview" for api.bsky* lexicons routes the traffic to the Zepplin AppView.
September 13, 2025 at 11:04 PM
There does seem to be a lack of hosted AppViews, but there are also very few non-BSky PDSes available right now, too. I've seen lots of promising signs for reducing the complexity and expense of hosting AppViews recently so I hope this is changing!
September 14, 2025 at 4:45 PM
Of course, this doesn't prevent moderation on you from BSky's AppView, but it's *possible* to bypass this with your own AppView. If Apps start giving users the ability to choose what AppView they want to use, this can start to chisel away at the "99% of people on BSky" issue!
September 14, 2025 at 4:45 PM
For example, one of the accounts I use for testing PLC operations got suspended a few days ago for unknown reasons (bsky.app/profile/cdev...). It's not viewable on BSky, but zeppelin.social (which uses its own AppView & App) does not show it as suspended: zeppelin.social/profile/cdev...
Confirmed. Setting a client app's "atproto-proxy" HTTP header to Zepplin's service id "did:web:bsky.zeppelin.social#bsky_appview" for api.bsky* lexicons routes the traffic to the Zepplin AppView.
September 14, 2025 at 4:45 PM
There are some things in ATProto that can help facilitate this! Looks like BSky's moderation happens at the AppView layer, and you can tell your PDS which one you want to use... however most ATProto Apps (including BSky's) don't support user configuration for this.
September 14, 2025 at 4:45 PM
There is! Its the 'atproto-proxy' HTTP header:
Confirmed. Setting a client app's "atproto-proxy" HTTP header to Zepplin's service id "did:web:bsky.zeppelin.social#bsky_appview" for api.bsky* lexicons routes the traffic to the Zepplin AppView.
September 14, 2025 at 4:01 AM