Does generic ActivityPub node software exist?

Does there exist node software that implements only the ActivityPub protocol?

In some decentralized networks, protocol stuff is taken care of by one piece of software which then exposes an interface for application specific code to use. I’m only some days into an in-depth exploration of AP, but wondering if any such domain-agnostic software exists here.

I created and co-maintain the ActivityPub Developer Resources watchlist, together with @light and @strypey. This watchlist is a companion to the ActivityPub Application Watchlist and both of these wiki pages are staging areas for the Fediverse Party website, designed and maintained by @light. It has a list of AP libraries, among others. I think these watchlists are currently the most complete directories of what’s out there (and greatly appreciate anyone point out more resources that are missing).

1 Like

Very good question. I would calling it “building blocks”.
Pretty much of this exist in the node-land and I don’t know where to start.
Let us please only investigate in terms of the protocol and not care about monolithic applications …

First, I would like to highlight that ActivityPub is JSON-LD based, so we can use any generic JSON-LD library and use it for expanding or normalizing.
This might not be how reality is
Guide for new ActivityPub implementers - #3 by lanodan ff.
but let’s just be conformant … The above post is about a huge guide which nedjo wrote for new AP-implementors and you will find a ton of helpful stuff there.

General LD projects: SkoHub or OpenEngiadina

However, if you do not use generic JSON-LD stuff, it is worth to highlight that in AP

  • most properties (all which are not “functional”) can have multiple values.
    So you might want to treat them always as Array …
  • many properties can be multi-language.
    So you might want to treat them always as an Object with BCP47 keys …

Personally, I use GitHub - digitalbazaar/jsonld.js: A JSON-LD Processor and API implementation in JavaScript in node and also normalise on the server but for C2S, a small AP only normaliser for node and the browser might be nice. I am doing anything in TypeScript / node and wrote this one


Let’s break it down for building blocks:

ActivityPub comes in two portions

  • Client to Server
  • Server to Server

and you wrote

node software that implements only the ActivityPub protocol

Most obvious is probably the server, have fun with

This is probably the node flagship of Will Murphy of immers.space …

And there are several others depending on the complexity:
Darius Kazemi, Keynote speaker of AP Conf wrote

and personally I took some venture capital (after 3 years seeking for public funding), so our statically typed AP node server with ORM etc. will be closed-source :frowning:
However, I am also building an Open Source TypeScript server based on nestjs which will become

Other servers for node are e.g. dolphin (single-user), misskey (multi-user) or even smaller pieces like


About Client To Server
There seem to be some really nice generic JS clients but I don’t speak japanese - if anyone speaks japanese+english, please reach out :slight_smile:

What I am doing is a set of 138 themable widgets / webcomponents (TypeScript, dojo.io) but this is all Work In Progress:

Nice, but written in elixir is


Some other node things come to my mind but depend on the use case.

2 Likes

Hello @weex
If by “node”, you mean “NodeJS”, SemApps is a toolbox to create applications which support web semantic standards, including ActivityPub. It is based on the microservice-based Moleculer.js framework.
Since the data are really semantic (stored in Jena Fuseki triple store), it is easy to extend ActivityStreams vocabulary for all other needs.
We have a small guide to create an ActivityPub server in 5 minutes, and exchange messages with a Mastodon instance.
If you have questions, problems or just want to chat, don’t hesitate to write me :wink:

2 Likes

Hey @srosset81
this is super awesome.
Will use it to test the redaktor widgets/client against and ensure compatibility.

Have just read the server guides.
In the redaktor setup, I would just have one (1) problem: The docker “dependency”…
Many shared hosts do not support docker. Is there a workaround?

1 Like

Hi @Sebastian

We use Docker mainly to install the Jena Fuseki triple store, where all the semantic data are stored. Since Fuseki is written in Java, it is the easiest way to launch it. But it’s also possible to set it up without Docker.

SemApps itself is written in Javascript, so all you need is NodeJS installed :slight_smile: