To submit an implementation report, report it to the ActivityPub issue tracker. (Or, file a PR directly to this site's repository.)

Implementation reports

(hover for description) # yes Bridgy Fed distbin.com dokieli go-fed Kroeg Mastodon microblog.pub PeerTube places.pub Pleroma Pubstrate Smilodon tags.pub
Client-to-Server Client 5/13 No Yes Yes No Yes No Yes No No No Yes No No
Client-to-Server Server 5/13 No Yes No Yes Yes No Yes No No No Yes No No
Federated (Server-to-Server) Server 12/13 Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
client:retrieval:accept-header 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:authenticated 4/13 N/A No Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:discovers-url-from-profile 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:recursively-add-targets 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:recursively-add-targets:limits-depth 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:submit-objects 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:submit-objects:provide-object 4/13 N/A No Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
client:submission:submit-objects:provide-target 3/13 N/A No Yes N/A Yes N/A No N/A N/A N/A Yes N/A N/A
client:submission:submit-post-with-content-type 5/13 N/A Yes Yes N/A Yes N/A Yes N/A N/A N/A Yes N/A N/A
inbox:accept:accept:add-actor-to-users-following 7/13 N/A No N/A Yes Yes Yes Yes Yes No Yes No Yes No
inbox:accept:add:to-collection 4/13 N/A No N/A Yes Yes No No No No Yes Yes No No
inbox:accept:announce:add-to-shares-collection 6/13 Yes No N/A No Yes Yes Yes Yes No Yes No No No
inbox:accept:create 9/13 No Yes N/A Yes Yes Yes Yes Yes No Yes Yes Yes No
inbox:accept:deduplicate 7/13 No Yes N/A Yes Yes Yes Yes No No Yes No Yes No
inbox:accept:delete 6/13 No No N/A Yes Yes Yes Yes Yes No Yes No No No
inbox:accept:delete:tombstone 3/13 No No N/A Yes Yes Yes No No No No No No No
inbox:accept:dont-blindly-trust 6/13 N/A No N/A No Yes Yes Yes Yes No Yes No No Yes
inbox:accept:follow:add-actor-to-users-followers 9/13 N/A No N/A Yes Yes Yes Yes Yes No Yes Yes Yes Yes
inbox:accept:follow:generate-accept-or-reject 7/13 N/A No N/A Yes Yes Yes Yes Yes No Yes No Yes No
inbox:accept:like:indicate-like-performed 8/13 Yes No N/A Yes Yes Yes Yes Yes No Yes No Yes No
inbox:accept:reject:does-not-add-actor-to-users-following 7/13 N/A No N/A Yes Yes Yes Yes Yes No Yes No Yes No
inbox:accept:remove:from-collection 4/13 N/A No N/A Yes Yes No No No No Yes Yes No No
inbox:accept:special-forward 4/13 No No N/A Yes Yes No No No No Yes Yes No No
inbox:accept:special-forward:limits-recursion 4/13 No No N/A Yes Yes No No No No Yes Yes No No
inbox:accept:special-forward:recurses 4/13 No No N/A Yes Yes No No No No Yes Yes No No
inbox:accept:undo 5/13 No No N/A No Yes Yes Yes Yes No Yes No No No
inbox:accept:update:completely-replace 7/13 Yes No N/A Yes Yes Yes Yes Yes No Yes No No No
inbox:accept:update:is-authorized 6/13 N/A No N/A Yes Yes Yes Yes Yes No Yes No No No
inbox:delivery:addressing 6/13 Yes Yes N/A Yes Yes N/A* Yes N/A* N/A* N/A* Yes N/A* N/A*
inbox:delivery:adds-id 6/13 Yes Yes N/A Yes Yes N/A* Yes N/A* N/A* N/A* Yes N/A* N/A*
inbox:delivery:deduplicates-final-recipient-list 8/13 Yes Yes N/A Yes Yes No Yes Yes No Yes No Yes No
inbox:delivery:deliver-to-collection 5/13 Yes No N/A Yes Yes N/A* Yes N/A* N/A* N/A* Yes N/A* N/A*
inbox:delivery:deliver-to-collection:recursively 4/13 No No N/A Yes Yes N/A* Yes N/A* N/A* N/A* Yes N/A* N/A*
inbox:delivery:delivers-with-object-for-certain-activities 8/13 Yes No N/A Yes Yes Yes Yes Yes No Yes Yes No No
inbox:delivery:delivers-with-target-for-certain-activities 6/13 N/A No N/A Yes Yes Yes No Yes No Yes Yes No No
inbox:delivery:do-not-deliver-block 6/13 N/A No N/A Yes Yes Yes Yes Yes No Yes No No No
inbox:delivery:do-not-deliver-to-actor 7/13 No No N/A Yes Yes Yes Yes Yes No Yes No No Yes
inbox:delivery:performs-delivery 6/13 Yes Yes N/A Yes Yes N/A* Yes N/A* N/A* N/A* Yes N/A* N/A*
inbox:delivery:sharedInbox 5/13 No No N/A No Yes Yes Yes Yes No Yes No No No
inbox:delivery:sharedInbox:deliver-to-inbox-if-no-sharedInbox 5/13 N/A No N/A No Yes Yes Yes Yes No Yes N/A* No No
inbox:delivery:submit-with-credentials 4/13 Yes No N/A Yes Yes N/A* Yes N/A* N/A* N/A* No N/A* N/A*
outbox:accepts-activities 5/13 N/A Yes N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:accepts-non-activity-objects 5/13 N/A Yes N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:add 3/13 N/A No N/A Yes Yes N/A No N/A N/A N/A Yes N/A N/A
outbox:add:adds-object-to-target 2/13 N/A No N/A Inconclusive* Yes N/A No N/A N/A N/A Yes N/A N/A
outbox:block 4/13 N/A No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:block:prevent-interaction-with-actor 4/13 N/A No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:create 4/13 N/A* No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:create:actor-to-attributed-to 3/13 N/A* No N/A Yes Yes N/A Inconclusive* N/A N/A N/A Yes N/A N/A
outbox:create:merges-audience-properties 3/13 N/A* No N/A Yes Yes N/A Inconclusive* N/A N/A N/A Yes N/A N/A
outbox:follow 4/13 N/A No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:follow:adds-followed-object 2/13 N/A No N/A No Yes N/A No N/A N/A N/A Yes N/A N/A
outbox:ignores-id 5/13 N/A Yes N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:like 3/13 N/A No N/A Inconclusive* Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:like:adds-object-to-liked 3/13 N/A No N/A Inconclusive* Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:location-header 5/13 N/A Yes N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:remove 2/13 N/A No N/A Inconclusive* Yes N/A No N/A N/A N/A Yes N/A N/A
outbox:remove:removes-from-target 2/13 N/A No N/A Inconclusive* Yes N/A No N/A N/A N/A Yes N/A N/A
outbox:removes-bto-and-bcc 4/13 N/A* No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:responds-201-created 5/13 N/A Yes N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:undo 3/13 N/A No N/A No Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:undo:ensures-activity-and-actor-are-same 3/13 N/A No N/A No Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:update 4/13 N/A* No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A N/A
outbox:update:partial 4/13 N/A* No N/A Yes Yes N/A Yes N/A N/A N/A Yes N/A* N/A*
server:inbox:filtered-per-permissions 5/13 N/A No N/A No Yes No Yes No No Yes Yes No Yes
server:inbox:is-orderedcollection 8/13 N/A Yes N/A Yes Yes No Yes No No Yes Yes Yes Yes
server:inbox:responds-to-get 8/13 No Yes N/A Yes Yes No Yes No No Yes Yes Yes Yes
server:object-retrieval:deleted-object:404-status 6/13 No No N/A No Yes Yes Yes Yes No Yes Yes No No
server:object-retrieval:deleted-object:410-status 6/13 No No N/A Yes Yes Yes Yes No No Yes Yes No No
server:object-retrieval:deleted-object:tombstone 3/13 No No N/A Yes Yes No No No No No Yes No No
server:object-retrieval:get-id 10/13 No Yes N/A Yes Yes Yes Yes Yes Yes Yes Yes No Yes
server:object-retrieval:private-403-or-404 4/13 No No N/A No Yes Yes No No No Yes No No Yes
server:object-retrieval:respond-with-as2-re-activity-json 10/13 No Yes N/A Yes Yes Yes Yes Yes Yes Yes Yes No Yes
server:object-retrieval:respond-with-as2-re-ld-json 10/13 No Yes N/A Yes Yes Yes Yes Yes Yes Yes Yes No Yes
server:security-considerations:actually-posted-by-actor 6/13 No No N/A No Yes Yes Yes Yes No Yes No No Yes
server:security-considerations:do-not-post-to-localhost 6/13 No Yes N/A No Yes Yes Yes No No Yes Yes No No
server:security-considerations:filter-incoming-content 4/13 No Yes N/A No Yes No No No No Yes Yes No No
server:security-considerations:sanitize-fields 4/13 Yes Yes N/A No Yes Yes No No No No No No No
server:security-considerations:uri-scheme-whitelist 5/13 No No N/A No Yes Yes Yes No No Yes Yes No No
Bridgy Fed
Homepage https://fed.brid.gy/
Source Repo https://github.com/snarfed/bridgy-fed
Developers Ryan Barrett
Notes / About

Bridgy Fed is a bridge that converts between webmentions, ActivityPub and OStatus. It connects the IndieWeb with federated social networks like Mastodon, Hubzilla, and others in the fediverse that support two protocols.

Bridgy Fed is a loose extension of Bridgy, which is a similar bridge between the IndieWeb and social media sites. As of November 2017, it has >4k users and has successfully sent >900k webmentions for responses inside those sites.

Details

Users use Bridgy Fed by creating an IndieWeb post (in HTML with microformats2) on their own web site that replies, likes, or reposts (aka announces) a post on a federated social network. They then send a webmention to Bridgy Fed to trigger it to fetch their IndieWeb post, convert it to ActivityStreams 2 (via granary), and deliver it to the target post’s author and other recipients via ActivityPub.

Bridgy Fed handles the other direction too. If a federated social network user replies to, likes, or reposts an IndieWeb post, Bridgy Fed will accept it in their inbox, translate it into a webmention, send it to the IndieWeb post, and convert the AS2 object to HTML with microformats2 to be rendered for the webmention receiver.

This is federation, not syndication. IndieWeb posts translated to AS2 objects have both post object and actor based at the IndieWeb site’s domain, with appropriate ids and URLs. If the IndieWeb site is example.com, the ActivityPub actor id would be @example.com@example.com. (This is subject to change; more background here.)

Bridgy Fed can do all this via OStatus as well.

About the Server-to-Server implementation

The Bridgy Fed Server:

  • Accepts activity submissions via webmention, and updates the server’s Objects per rules described below
  • Delivers these submissions to the inboxes of other Servers
  • Receives Activity from other servers in an inbox, and updates the server’s Objects per rules described below
  • Delivers Objects to Clients via webmention
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Public Domain / CC0
Programming Language Python
distbin.com
Homepage https://distbin.com
Source Repo https://github.com/gobengo/distbin
Developers Benjamin Goering
Notes / About

Distbin is a distributed pastebin. Anyone can anonymously create little text posts, and anyone else can reply to them.

You can even create posts that are inReplyTo parent posts that are hosted elsewhere on the web (like another distbin.com installation), and distbin will tell the parent about it via ActivityPub.

distbin is made up of at least two components: * core - Speaks only JSON/ActivityPub * distbin-html * Renders a homepage with a form that helps an end-user build Create Note activites * Renders created activities to HTML * Renders the public collection to HTML

Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Apache License 2.0
Programming Language JavaScript
dokieli
Homepage https://dokie.li/
Source Repo https://github.com/linkeddata/dokieli
Developers Sarven Capadisli
Notes / About dokieli is a clientside editor for decentralised article publishing, annotations and social interactions. It can work as a single-page application or as a Web browser extension.

  • dokieli can create and consume content in different RDF serializations (RDFa in HTML and SVG, Turtle, JSON-LD) for fine-grained semantic structure;
  • can work with Linked Data Platform based servers for personal data storage;
  • implements the sender and consumer roles of Linked Data Notifications;
  • Web Annotation for structured annotations;
  • WebID for identity discovery and profile use;
  • ActivityPub and ActivityStreams 2 to send and consume activities/objects
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Apache License 2.0
Programming Language Javascript
go-fed
Homepage https://go-fed.org
Source Repo https://github.com/go-fed/activity
Developers
Notes / About

go-fed is a library that implements ActivityStreams and ActivityPub in Go.

Whether you wish to create a new application, add ActivityPub to an existing one, or just use ActivityStreams data types, go-fed is here to help. The website hosts a tutorial geared for developers who may not be familiar with the ActivityStreams and ActivityPub protocols. It also hosts GoDoc-like documentation for each versioned release.

Applications using go-fed can turn many of the “No” entries in this implementation report to “Yes”. Use the security protocols, spam filtering, and administrative tooling required for your application’s needs.

“Why wait ‘til tomorrow? go-fed.today!”

Official implementation reports were first generated using go-fed v0.2.0.

Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License BSD 3-Clause
Programming Language Go
Kroeg
Homepage
Source Repo https://github.com/puckipedia/kroeg
Developers Puck Meerburg
Notes / About Serves ActivityPub and has bridges to OStatus. ActivityPub federation tested against Mastodon.
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Expat (MIT)
Programming Language C#
Mastodon
Homepage https://joinmastodon.org
Source Repo https://github.com/tootsuite/mastodon
Developers Over 400 contributors at time of report submission
Notes / About Mastodon is a free, open-source, decentralized microblogging application with support for the ActivityPub and OStatus protocols. Built for global networks of close-knit communities, Mastodon puts social networking back in the hands of users.
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License AGPLv3
Programming Language Ruby, Javascript
microblog.pub
Homepage https://microblog.pub
Source Repo https://github.com/tsileo/microblog.pub
Developers
Notes / About A self-hosted, single-user, ActivityPub powered microblog.
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License GNU AGPLv3
Programming Language Python
PeerTube
Homepage https://peertube.cpy.re
Source Repo https://github.com/Chocobozzz/PeerTube
Developers
Notes / About

Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent.

Under heavy development, implementation might be improved in the future :)

Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License GNU AGPLv3
Programming Language Typescript
places.pub
Homepage https://places.pub/
Source Repo https://gitlab.com/evanp/places-pub
Developers Evan Prodromou
Notes / About places.pub is a place server for the ActivityPub network. It represents places in the world as AS2 ‘Place’ objects. Plan is to add inboxes to the Place objects so they can be addressed, and when they receive activities related to that Place, they will re-share them. Also will allow Follow, stop follow. Only fetching Place objects is implemented now.
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Apache v2
Programming Language Javascript
Pleroma
Homepage https://pleroma.social/
Source Repo https://git.pleroma.social/pleroma/pleroma
Developers
Notes / About
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License GNU AGPLv3
Programming Language Elixir
Pubstrate
Homepage
Source Repo https://gitlab.com/dustyweb/pubstrate
Developers Christopher Allan Webber
Notes / About ActivityPub / ActivityStreams focused social networking application written in Guile.
Publicly Accessible? No
Free/Libre/Open Source? Yes
License GPLv3 or later
Programming Language Guile Scheme
Smilodon
Homepage https://populator.smilodon.social
Source Repo https://github.com/rowanlupton/smilodon
Developers Rowan Lupton
Notes / About very unfinished, intent to eventually federate with any server that supports activitypub (primary objective Mastodon, as the name implies)
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Expat (MIT)
Programming Language Python
tags.pub
Homepage https://tags.pub
Source Repo https://gitlab.com/evanp/tags-pub
Developers Evan Prodromou
Notes / About tags.pub is a hashtag server for the ActivityPub network. Tags can be addressed and followed. Tags will reshare public activities that are tagged with their tag, or that create or update an object tagged with their tag.
Publicly Accessible? Yes
Free/Libre/Open Source? Yes
License Apache v2
Programming Language Javascript