RE: https://mediaformat.org/2026/05/posting-from-c2s/

Hey look, first post from a custom client using ActivityPub API

#activitypub #c2s

Drafting a proposal to add API support in #Fedify for the ActivityPub Media Upload extension, the SocialCG-incubated #C2S companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

#ActivityPub #Fedify #fediverse #fedidev

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

GitHub

8.1.0 — By the Numbers

ActivityPub for WordPress 8.1.0 is here. A new Fediverse statistics feature leads the release: a dashboard widget, monthly and annual email reports, and a shareable stats block with sharepic. Alongside it, an experimental ActivityPub API that lets third-party Fediverse apps post to your blog, Starter Pack imports in the Pixelfed and Mastodon formats, and richer EXIF metadata for photographers via the Vernissage namespace.

https://activitypub.blog/2026/04/22/8-1-0-by-the-numbers/

ChangingGraph – Federated Knowledge Graph on ActivityPub (C2S & S2S)

Federated knowledge graph on ActivityPub (C2S & S2S), RDF and SKOS. The technical platform behind gsund.rocks — open, linked data for the Fediverse.

🎉 JEU CONCOURS 🎉

Envie de repartir avec un beau panier de légumes frais
d’une valeur de 30€ ? 🥦🍅
On a peut-être ce qu’il vous faut !!

👉 Pour participer, c’est simple :
✔️ Like ce post
✔️ Commente en identifiant 2 amis
✔️ Abonne-toi à notre page

📅 Tirage au sort le 03/04
📍 Résultat annoncé ici et au marché de la Chaponnière

Bonne chance à tous !🍀
#fyp #jeuxconcours #legumes #panierlegumes #bio #BioLocal #produitslocaux #produitslocaux #frais #marchelocal #c2sservice #C2S #jeux #jeu

@steve @hongminhee

I mentioned this thread in the #ActivityPub #C2S tracking issue. I think there's a fundamental risk that C2S is going sideways because of misconceptions between devs on where things are / should be headed.

https://codeberg.org/fediverse/delightful-fediverse-experience/issues/130#issuecomment-11737818

Which ActivityPub applications support Client-to-Server (C2S)?

In preparation of updating and reorganising of this list I would like to collect current FOSS projects that offer an implementation of ActivityPub C2S. In this [current fedi discussion](https://ausglam.space/@hugh/1144176911799110820) a bunch of projects were already named: - [ActivityPods](http...

Codeberg.org
bovine

Library for building Fediverse applications

Codeberg.org
Is there a #python module for #activitypub #c2s I can use for a silly idea? My search engine foo seems to suggest rather No, but maybe you know one 😉

(digital) doodling a little

#c2s #activitypub #ios #fediverse #wordpress

Today @kopper shared a post on the fediverse titled how to not regret c2s, and I found it genuinely interesting to read, even if I'm not sure its proposed architecture actually solves what it sets out to solve.

The author's frustration with naïve #C2S implementations is well-founded. Slapping an #ActivityPub facade onto an existing Mastodon-like server and calling it C2S doesn't buy you much—you end up with the rigidity of a bespoke API without any of the interoperability C2S is supposed to offer. The “JSON-LD flavored Mastodon API” framing is apt.

The proposed solution is to split responsibility more aggressively: the C2S server should be nearly stateless and dumb, storing ActivityPub objects without interpreting them, while a separate “client” layer handles indexing, timelines, moderation, and exposes its own API to the frontend running on the user's device. It's a clean separation of concerns on paper.

But here's what bothers me. When you map this architecture onto familiar terms, it looks roughly like this:

  • C2S server ≈ a database (PostgreSQL, say)
  • “Client” ≈ an application server (Mastodon, Misskey)
  • “Frontend” ≈ the actual client app on your phone

That's not a new architecture. That's just the current architecture with the labels shifted. The interesting question is which interface gets standardized, and the author's answer is the one between the C2S server and the “client” layer—the bottom boundary.

The problem is that what people actually want from C2S is to connect any frontend to any server. The portability they're after lives at the top boundary, between the frontend and whatever is behind it. But the author explicitly argues against standardizing that layer: “we don't really need a standardized api,” they write, leaving each client free to expose whatever API it likes.

Which means frontends remain locked to specific clients, just as Mastodon apps are locked to the Mastodon API today. The interoperability promise of C2S—log in to any server with any app—isn't actually delivered. It's been pushed one layer down, out of reach of the end user.

There's real value in the post's thinking about data hosting vs. interpretation, and about the security implications of servers that understand too much. But as an answer to the question C2S is supposed to answer, I'm not convinced.

#fedidev #fediverse