A curated list of developer resources related to ActivityPub and the Fediverse.
Find a file
2022-07-09 08:03:02 +02:00
delightful-contributors.md Migrate Feneas wiki page to Codeberg delightful list 2022-01-13 19:25:24 +01:00
LICENSE Migrate Feneas wiki page to Codeberg delightful list 2022-01-13 19:25:24 +01:00
README.md Create Forge Federation top-level category 2022-07-09 08:03:02 +02:00

delightful activitypub development delightful

A curated list of resources for ActivityPub developers who create software for the Fediverse.

Emoji's for each entry indicate whether it is added to the Fediverse Party website:

Contents

Developer tools

Frameworks

  • Bonfire: An extensible framework with a big focus on customisation and flexibility. Can be used to build new federated apps while focusing on a specific use case rather than reimplementing lots of boilerplate AGPL-3.0, Elixir

Libraries

  • ✔️ ActivityPhp (site, Fedi account): A PHP implementation of ActivityPub protocol based upon the ActivityStreams 2.0 data format. MIT, PHP

  • ✔️ ActivityPods: Adding intelligence to Solid PODs with ActivityPub (based on SemApps. Apache-2.0, Javascript

  • ✔️ ActivityPub: Generic library to federate an app with ActivityPub (uses a queue for incoming/outgoing activities and adapter modules for tight integration). AGPL-3.0, Elixir

  • ✔️ ActivityPub Express: Modular ActivityPub implementation as Express.js middleware to easily add decentralization and federation to Node apps -, Javascript

  • ActivityPub-Federation: A high-level framework for ActivityPub federation in Rust, extracted from Lemmy. AGPL-3.0, Rust

  • ✔️ ActivityPub HTTP Signatures (Fedi account): A library for creating, parsing, and verifying HTTP signature headers, as per the Signing HTTP Messages draft 80 specification. ISC, Javascript

  • ✔️ ActivityPub-PHP (Fedi account): A PHP implementation of the ActivityPub protocol (used in Pterotype plugin). MIT, PHP

  • ✔️ activityPub4j: W3C ActivityPub and ActivityStreams implementation in Java using Spring Boot. Apache-2.0, Java

  • ✔️ ActivityServe: A very light ActivityPub library in Go (used to power pherephone) MIT, Go

  • ✔️ ActivityStreams (Fedi account): A set of Traits and Types that make up the ActivityStreams and ActivityPub specifications. GPL-3.0, Rust

  • ✔️ ActivityStreams: Full ActivityStreams 1.0 and 2.0 reference implementation in Java. Apache-2.0, Java

  • ✔️ ActivityStreams-2: ActivityStreams 2.0 library for Node.js and TypeScript. Apache-2.0, Typescript

  • ✔️ astreams (Fedi account): A hand-crafted implementation of the Activity Streams 2.0 specification in Go, especially suitable for projects implementing ActivityPub. AGPL-3.0, Go

  • ✔️ atoot: Library providing an easy way to create Mastodon API applications MIT, Python

  • Clovis: [ARCHIVED] Implementation of ActivityPub in Scala. (Hobby project included here for reference only.) AGPL-3.0, Scala

  • ✔️ corpus-activity-streams: Activity Streams 2.0 vocabulary data and alternative docs. Unlicense license, Typescript

  • ✔️ Disboard: Collection of fediverse API wrapper libraries for .NET Standard 2.0. MIT, C#

  • ✔️ Express ActivityPub: A very simple reference implementation of an ActivityPub server using Express.js. MIT, Javascript

  • ✔️ Federation: Library to abstract social web federation protocols like ActivityPub, Diaspora and Matrix (see docs) BSD-3-clause, Python

  • ✔️ Golang ActivityPub (Fedi account): Libraries for using ActivityPub in the Go language. MIT, Go

  • ✔️ go-fed activity (site, Fedi account): Full ActivityStreams & ActivityPub implementation in Golang. Extensions can be easily added by design-time code generation from JSON-LD schema's (also supports ForgeFed this way, by default). BSD-3-clause, Go

  • ✔️ go-fed apcore (site, Fedi account): A powerful single server ActivityPub framework for performant Fediverse applications. AGPL-3.0, Go

  • go-mastodon: Mastodon client for Golang. MIT, Go

  • ✔️ hare-activity (Fedi account): Hare package provides a extensible implementation of the ActivityStreams 2.0 format and the ActivityPub protocols. MPL, Hare

  • ✔️ http-signature: Implementation of the HTTP Signature scheme as used in ActivityPub. Apache-2.0, Typescript

  • ✔️ Little Boxes: Tiny ActivityPub framework, both database and server agnostic ISC, Python

  • ✔️ Little Library: A digital give-a-book, take-a-book library for ebooks AGPL-3.0, Javascript

  • ✔️ Mastodon.py: Python wrapper for the Mastodon API. MIT, Python

  • ✔️ Pubstrate: ActivityStreams and ActivityPub library implementation for GNU Guile. Includes a full ActivityStreams library and most of an ActivityPub implementation. GPL-3.0, Guile

  • ✔️ Python ActivityPub: A general ActivityPub library MPL-2.0, Python

  • rdf-pub (site, Fedi account): An activity-pub server implementation, that is not limited to the activity-stream vocabulary, but supports RDF per se. EUPL, Java

Plugins

Relays

  • ✔️ ActivityRelay: A generic LitePub relay (works with all LitePub consumers and Mastodon). AGPL-3.0, Python

  • ✔️ activity-relay: Yet another powerful customizable ActivityPub relay server written in Go AGPL-3.0, Go

  • ✔️ Hash2Pub (Fedi account): A fully-decentralised DHT-based relay for global hashtag federation. See White paper, status update (Nov 2020) AGPL-3.0, Haskell

  • ✔️ Seattle relay -, Python

  • ✔️ Social relay: Public post relay for the diaspora* federated social network protocol. AGPL-3.0, Python

  • ✔️ toot-relay: Relay that forwards web push notifications to APNs, built for Toot!.app but usable for anyone. CC0, Go

For an overview of known relays, see A sorted list of ActivityPub relays for Mastodon or Pleroma.

Bridges

  • ✔️ BirdSiteLIVE (Fedi account): An ethical bridge from Twitter AGPL-3.0, C#

  • ✔️ bleroma: Telegram bot for Pleroma and Mastodon. MIT, Elixir

  • ✔️ BridgyFed (site): Bridges the IndieWeb to federated social networks: ActivityPub, OStatus, etc. Public Domain, Python

  • ✔️ Fediverse-Action: Github Action that posts to Fediverse when code is changed. ISC License, Javascript

  • ✔️ Toot-Together (Fedi account): Github Action that posts to Mastodon from text files, enabling everyone to submit toot drafts to a project. MIT, Javascript

  • ✔️ feed2toot: Parses RSS feeds, identifies new posts and posts them on the Mastodon social network (using the Mastodon API). MIT, Python

  • ✔️ feediverse: Send RSS/Atom feeds to Mastodon. MIT, Python

  • ✔️ gemifedi: A Gemini frontend to the fediverse (specifically, Mastodon and Pleroma instances). AGPL-3.0, Rust

  • ✔️ Instagram2Fedi: Script for crossposting from Instagram to Mastodon or Pixelfed. GPL-3.0, Python

  • ✔️ Kazarma: A Matrix bridge to ActivityPub. AGPL-3.0, Elixir

  • ✔️ Libervia (site, Fedi account): An XMPP <=> ActivityPub gateway project doubled with XMPP Pubsub end-to-end encryption AGPL-3.0, Python

  • ✔️ ligh7hau5: A Matrix to Fediverse / ActivityPub client / bridge. Also, some media proxying. GPL-3.0, Javascript

  • ✔️ mastodon-bot: a bot for mirroring Twitter / Tumblr accounts and RSS feeds on Mastodon MIT, Clojure

  • ✔️ mastodon-twitter-poster (site, Fedi account): Crossposter to post statuses between Mastodon and Twitter. AGPL-3.0, Ruby

  • ✔️ Moa (site): A Mastodon, Twitter, and Instagram Cross-poster. MIT, Python

  • ✔️ MXToot (Fedi account): A Matrix <--> Mastodon bot written in Java. Apache-2.0, Java

  • ✔️ Nautilus: A standalone service to deliver posts from your own website to ActivityPub followers. Apache-2.0, PHP

  • ✔️ PeerTube (on Matrix) Search: Search PeerTube via Matrix, using Sepia Search API to search on all participating public PeerTube instances. You can also select any single instance. It's implemented as a module for Hemppa the bot. GPL-3.0, Python

  • ✔️ pleroma-bot: Mirrors Twitter accounts to Fediverse, or migrates Twitter account to Fediverse using a Twitter archive. Supports Mastodon, Pleroma and Misskey. MIT, Python

  • ✔️ rss-bot (Fedi account): Post updates from an RSS feed to Mastodon. GPL-3.0, Python

  • ✔️ RSS-to-ActivityPub Converter: Convert any RSS feed to an ActivityPub actor that can be followed by users on ActivityPub-compliant social networks like Mastodon. MIT, Javascript

  • ✔️ RSS-Bridge ActivityPub Bridge (site, Fedi account): Generates RSS and Atom feeds for websites that don't have one. Supports Mastodon, Pleroma and Misskey, among others. Unlicense, PHP

  • ✔️Simplebot-Mastodon: A Mastodon - DeltaChat bridge plugin for SimpleBot, list of bot instances MPL-2.0, Python

  • ✔️ Twitter Hamachpil (Fedi account): Bot to grab tweets from Twitter and post them to respective accounts on a Mastodon instance. Apache-2.0, Python

  • ✔️ YouTube2PeerTube: A bot that mirrors YouTube channels to PeerTube channels as videos are released in a YouTube channel. AGPL-3.0, Python

Utilities

  • ActivityPubSchema: JSON Schema definition of the ActivityStreams and ActivityPub specifications. MIT, Javascript

  • ✔️ activity-streams-validator (Fedi account): Activity Streams validation for Typescript. MIT, Typescript

  • ✔️ bridge: A simple web app that helps you find your Twitter friends on the federated Mastodon network. It is also an example of how the Mastodon API can be used and the federated OAuth authorization flow. AGPL-3.0, Ruby

  • ✔️ dda-masto-embed (Fedi account): Embeds mastodon timline into a html page. Uses JS, no intermediate server required. Apache-2.0, ClojureScript

  • ✔️ FediHealth: Software to help you define federation policies for your node. AGPL-3.0, Python

  • fediverse.space (Fedi account, site): A tool to visualize instances in the fediverse. AGPL-3.0, Elixir

  • ✔️ Fediverse Stats (Fedi account): Collects maximum number of alive fediverse's servers and then query their API to obtain their registered users. GPL-3.0, Python

  • ✔️ forget (site, Fedi account): Continuous post deletion for Mastodon and Twitter (if you happen to use that). ISC License, Python

  • ✔️ hunter2 (site, Fedi account): A job hunt bot that indexes jobs and candidates from the Fediverse. MIT, Rust

  • ✔️ MaPleFeed (site, Fedi account): Embed Mastodon or Pleroma profile feeds on any web page. MIT, Javascript

  • ✔️ Masto Follow (site, Fedi account): Simple widget to support “Follow Me on Mastodon” buttons ISC License, Javascript

  • ✔️ mastodon-backup (Fedi account): Archive your statuses, favorites and media using the Mastodon API. GPL-3.0, Python

  • ✔️ mastodon_bulk_find_follow (site): Bulk find and follow to make it easy to migrate from Twitter to Mastodon. BSD-3-Clause, Javascript

  • ✔️ Mastotool: A collection of tools to work with your Mastodon account; displays account statistics and lets you search your toots. MIT, Go

  • ✔️ MastoBot (Fedi account): NodeJS Mastodon client library with an eye to making bot development fun & easy. ISC License, Javascript

  • Minoru's Fediverse Crawler (site, Fedi account): Crawls the Fediverse and produces a list of instances that are alive. AGPL-3.0, Rust

  • ✔️ OCR Bot (Fedi account): An OCR (Optical Character Recognition) bot for Mastodon (and compatible) instances AGPL-3.0, Python

  • ✔️ Pherephone: An ActivityPub server that reblogs all the statuses of certain actors. You set it up to follow a few accounts and it announces everything they post. AGPL-3.0, Go

  • ✔️ Shareon (site, Fedi account): Lightweight, stylish, and ethical share buttons. MIT, Javascript

  • ✔️ tags-pub: Provides hashtag objects on the ActivityPub network. Apache-2.0, Javascript

  • ✔️ toot (site, Fedi account): Cross-instance share page for Mastodon AGPL-3.0, Javascript

  • ✔️ yt2pt: A simple set of scripts to quickly import your youtube channel to Peertube. MIT, Javascript

  • ✔️ Moderator Alerts (Fedi account): Mastodon moderation alerts using Pushover.net. -, Python

Testing

  • ✔️ activitypub-mock: A mock ActivityPub server to use in testing code Apache-2.0, Javascript

  • ✔️ APDebug (Fedi account): A set of tools to debug ActivityPub requests. You can inspect requests, see the flow in real time, run arbitrary requests with HTTP signature handled for you. AGPL-3.0, PHP

  • dfk-ap (site): A small ActivityPub debugging server on Glitch MIT, Javascript

  • ✔️ FediDB (site, Fedi account): A suite of tools for AP devs to help make it easier to test and validate your implementation with existing implementations like Mastodon, PeerTube, Pixelfed and Pleroma AGPL-3.0, PHP

  • ✔️ Test Suite: An unofficial partially-automated ActivityPub test suite AGPL-3.0, Go

Forge federation

This category is dedicated to an important new direction on the Fediverse, where Software Development itself becomes federated. Currently the focus is on projects and protocols that allow for the federation of code forges (such as Gitea and Gitlab).

Forge libraries

Forge tools

  • ForgeFlux StarChart: Software forge spider. Crawler that maps and advertises self-hosted code forge instances. AGPL-3.0, Rust

  • ✔️ giteacat: Python script that allows sign up to a Gitea instance to all local users of a Mastodon server. -, Python

Forge plugins

Forge federation protocols

  • ✔️ ForgeFed (site, Fedi account): A set of extensions to ActivityPub for federation between code forges (Reference implementation is Vervis). CC0-1.0

Miscellaneous projects

This category is for any code project related to the Fediverse. They need not be directly development related.

  • Sepia Search (site): A search engine of PeerTube videos and channels Developed by Framasoft AGPL-3.0, Typescript

Social sharing

  • ✔️ Share Buttons: Share buttons that support dynamic input of Fediverse URLs and require no Javascript. AGPL-3,0, PHP

  • ✔️ Fedishare: Firefox toolbar extension to share the current browser tab on the Fediverse GPL-3.0, Typescript

Other projects

  • Mastodon Simplified Federation: FireFox browser plugin, that simplifies following and interacting with remote users on other Mastodon instances. ISC, Javascript

Reference material

Protocol specifications

  • ✔️ LitePub (Fedi account): A set of extensions to AP, being developed by devs from Pleroma and Mastodon (status: for the most part litepub group folded back into SocialCG, see: issue)

  • ✔️ NodeInfo2: An effort to create a standardized way of exposing metadata about a server. Helps expose ownership and organization details, usage statistics and protocol capabilities. CC0-1.0

  • Podcasting: Workspace for defining ActivityPub and ActivityStream extensions for Podcasting with the intention to define a W3C Recommendation for them.

  • ✔️ SciFed (Fedi accounts: @rigelk, @cerisara): A specification standard (Draft) for federation of scientific activities and content using ActivityPub, developed as part of the OLKi project.

API documentation

Tutorials

Getting started

ActivityPub server-to-server (S2S)

ActivityPub client-to-server (C2S)

WebFinger

Security

NodeInfo

Research & Development

Datashards

Object capabilities

Federated auth/authz

Content addressing

Distributed Mutable Containers

  • Distributed Mutable Containers (DMC): Distributed data structures that can hold references to content while allowing replicas of the data structures to diverge and merge without conflict (developed by DREAM)

Peer-to-peer networking

Maintainers

If you have questions or feedback regarding this list, then please create an Issue in our tracker, and optionally @mention one or more of our maintainers:

Contributors

With delight we present you some of our delightful contributors (please add yourself if you are missing).

License

CC0 Public domain. This work is free of known copyright restrictions.