A progressive web app for ActivityPub Client to Server API
Simultaneous client development and Specification work
Current Prototype
- Supports logging in via actor id & webfinger (OAuth)
- Fetches inbox endpoint to construct a feed from received activities
- Can view remote objects and actors.
- Can interact with remote objects (like, announce), and actors (Follow).
- Can Accept, Reject Follow Requests (where the software includes these activities in the inbox)
- Can Post (ui currently disabled).
- Uses a custom proxy if actor does not have one on the endpoints object.
Project compatibility Tracking
ActivityPub API advocacy
FOSDEM
The conference was a great opportunity to engage with platform developers, a few of which pledged to add support for the API.
My Talk: Unlocking development with ActivityPub Client to Server API
Thread about the FOSDEM talk on Mastodon
ActivityPub API Task Force contributions
Advocacy in OSS
- Pleroma
- Friendica
- FedBox
- Bonfire
- Onepage.pub
- WordPress
- FedBox / Go AP / Oni (via fediverse DMs and sr-ht list)
- Fedify (in person at FOSDEM)
- Emissary (in person at FOSDEM)
Previous
Prior communication about the API
ActivityPub: Client to Server endpoint discovery
WordCamp Canada 2025: Intro to ActivityPub, What it is and How to Use It
Project Proposal
Project Proposal
Abstract: Can you explain the whole project and its expected outcome(s).
The project will comprise of two parts:
- Building a Progressive Web App (PWA) compatible with ActivityPub servers supporting the ActivityPub API (the Client to Server protocol, aka C2S).
- Engaging with the ActivityPub Developer community to further define parts of the API which are ambiguous and or under-specified.
Building from my current app MVP, I will develop a modern app that aims for feature parity with Mastodon and other ActivityPub apps.
The goal is to support general purpose and specialized ActivityPub projects beyond the micro-blogging domain, allowing those projects to focus on innovation and server to server federation.
Have you been involved with projects or organisations relevant to this project before? And if so, can you tell us a bit about your contributions?
I have previously contributed to the WordPress ActivityPub plugin (Signature Verification, Federated Comments, etc), and am in regular contact with the developers (who have announced their intention to develop C2S compatibility).
I have engaged with various projects including Pleroma, FedBox, Streams, Epicyon) about improving support for C2S compatibility.
Compare your own project with existing or historical efforts.
Most of the historic and existing efforts, centre around servers supporting or partially supporting the Client to Server protocol, however there have been very few attempts at creating and maintaining C2S compatible clients.
- AndStatus is an android app written in Kotlin which supports multiple protocols including Twitter, Mastodon and C2S (there has been no development since last year, and the developer has not generally been engaging with the community)
- Steve Bate published a blog post about an as of yet unreleased client.
- Inbox is an proof of concept app which can login to Solid, and ActivityPub via OAuth
- Immers-space, was a federated metaverse implementation which used the c2s protocol to communicate from remote servers back to the home server.
- Dokieli, uses the c2s protocol, however it does not support OAuth, nor is it focused on the most active parts of the fediverse, namely microblogging.
What are significant technical challenges you expect to solve during the project, if any?
One area of challenge will be supporting Push notifications. Privacy conscious fediverse users and developers may not be keen on using firebase. I have found some promising solutions, including a floss option which could be self hosted, but this remains unimplemented.
Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes?
The project will rely heavily on existing ActivityPub platforms. I am a contributing member of the Social Web Incubator Community Group’s ActivityPub API Task Force. I will continue this work as well as continue engaging directly with ActivityPub platform authors on their respective project repositories. I have included engagement time in the proposal to ensure the emerging API design is sound. I will also include micro-blogging updates on feature progress, and blog posts where deeper reflection on competing approaches would be more conducive.
