ActivityPub’s “C2S” API: why hasn’t it caught on? Overseas discussion weighs in

From our other sites

The story

On the overseas Fediverse community “Lemmy c/dach,” users debated the “C2S (Client-to-Server)” API included in the ActivityPub protocol. Today’s decentralized social networks mostly rely on server-to-server (S2S) communication, and most servers — Mastodon included — don’t implement the C2S spec. Some servers, like GoToSocial and Friendica, can be accessed from multiple clients, but participants disagreed on whether that’s thanks to a genuine C2S implementation or just a reimplementation of Mastodon’s proprietary API.

Right now, communication within the Fediverse mostly runs on server-to-server (S2S) APIs — platforms’ servers federate with each other, and users interact through a web UI or dedicated app using each platform’s own API. An actual client-to-server (C2S) API implementation, though, is rarely seen. If that existed, it would enable lightweight Fediverse servers that don’t need to carry the baggage of a frontend, pushing decentralization even further. Of course, if you still wanted to, you could keep running the Fediverse server and web frontend bundled together on one machine as before.

Source: friendica.de / original article here

What people said

2Anonymous2026-10-10 15:42
The official ActivityPub spec actually includes a basic C2S API, but Mastodon just doesn't implement it.
3Anonymous2026-10-10 16:03
GoToSocial meets that bar. The web UI is only for settings — for everyday stuff like viewing your timeline, posting, and replying, you use a separate client, either an app or an add-on web frontend.
10Anonymous2026-10-10 16:12
The real question isn't just whether the server and the client/frontend are separated — it's whether there's a unified interface between them. If there were, any client/frontend supporting that interface could work with any server.
5Anonymous2026-10-10 17:00
The problem is the spec leaves a huge amount of freedom. If you want to see how far each project has actually gotten with implementation, you can check with the mobile app AndStatus.
18Anonymous2026-10-10 17:51
I think one of ActivityPub's problems is that the spec allows way too much freedom. That's let each project build things their own way for ages without considering the Fediverse as a whole. It's produced some innovative stuff, sure, but it's also created a bunch of headaches.
7Anonymous2026-10-10 15:46
Does Lemmy use ActivityPub's C2S mechanism, or something of its own?
16Anonymous2026-10-10 21:38
As far as I know, it's their own thing. Honestly, I didn't even know ActivityPub specified a C2S API.
9Anonymous2026-10-10 15:50
Well, even without an ActivityPub C2S API, we're already in a pretty similar situation in practice — it's just that reimplementations of Mastodon's C2S API are filling that role. GoToSocial, for instance, runs fine on a Raspberry Pi 3/4/5 and can use almost any Mastodon app as a backend client.
11Anonymous2026-10-10 20:39
Thanks for the info, I'll go take a look. Not sure how it'd play out for existing projects, but right now things are pretty monolithic, so a real C2S API would basically mean tearing that structure apart.
21Anonymous2026-10-10 20:23
By the way, Evan Prodromou has been trying to revive C2S for a few months now under the name "ActivityPub API." Curious to see how widely it catches on across projects.
12Anonymous2026-10-10 19:36
I meant AndStatus.
13Anonymous2026-10-10 19:39
Ah, that's what that earlier comment was about. I thought AndStatus was just a tool for tracking each project's progress. Guess I'll go install it then. 😀
24Anonymous2026-10-10 19:34
Hey Michael, good to hear your voice (well, text) again. Your reply actually showed up right after my own mention of you, which threw me for a second — though that might just be how this thread's formatting works. Anyway — you said Friendica supports C2S. Are there actually any clients out there that use C2S?
14Anonymous2026-10-10 19:29
Friendica does support C2S.
15Anonymous2026-10-10 17:51
Found a blog post here about how C2S gets implemented, and from what I can tell, C2S either gets you "nothing changes" or, if you want to keep features like multi-user instances and moderation, it makes "everything five times more complicated"… does that mean it's really just there so you can add emoji reactions even when the server itself doesn't explicitly support it?
17Anonymous2026-10-10 21:53
On my own GtS (GoToSocial) instance, I've actually gotten it working with 6+ different clients I tested. So some kind of "standardized interface" clearly already exists.
19Anonymous2026-10-10 17:58
My guess is it's a mix of people genuinely searching for a common path, plus a bit of ego that's gotten in the way at times. heluecht could probably speak to this in more detail — he was involved in drafting that spec back in the day.
22Anonymous2026-10-10 19:14
That sounds a lot like reinventing Usenet, except here you can actually subscribe to blocklists. Though I'd say the blocklists themselves are genuinely useful.
23Anonymous2026-10-10 19:20
Well, decentralization is one of the Fediverse's goals, after all. C2S could push that forward enormously, but it comes with some pretty fundamental changes too. Blocklists would definitely be useful, and there's probably more besides that.

Background and key points of this discussion

ActivityPub is the decentralized social-networking protocol standardized by the W3C in 2018, and its spec covers both server-to-server (S2S) and client-to-server (C2S) communication. In practice, though, only S2S has seen widespread adoption — most servers, including Mastodon, don’t implement C2S. Some servers, like GoToSocial and Friendica, can be used from multiple apps, but this is often achieved through a reimplementation of Mastodon’s proprietary API rather than the official C2S spec; commenters in the thread pointed out that “being able to separate out the client” and “having C2S as a true unified interface” are two different things. The spec’s sheer flexibility — which let each project build its own extensions without regard for the Fediverse as a whole — was also cited as a reason adoption has stalled. One detail easy to miss without the technical background: former Identi.ca developer Evan Prodromou has recently been pushing to revive C2S under the name “ActivityPub API.”

*This article is a condensed, editorially translated summary of a thread from the overseas forum Lemmy c/dach: “Fediverse | Wie steht es eigentlich in Sachen ActivityPub C2S (Client-to-Server) Schnittstelle?” Responsibility for the translation lies with this site’s editorial staff.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *