Skip to main content

Developer Resources

A comprehensive collection of libraries, tools, and resources for building ActivityPub and Fediverse applications.

Libraries by Language​

JavaScript / TypeScript​

LibraryDescriptionLicense
FedifyFull ActivityPub server frameworkMIT
ActivityPub ExpressExpress.js middleware for ActivityPub (unmaintained)MIT
express-activitypubSimple reference implementationMIT
activitystreams-2ActivityStreams 2.0 libraryApache-2.0
http-signatureHTTP Signatures implementationMIT
one-page-pubMinimal ActivityPub serverApache-2.0
// Example: Using Fedify
import { createFederation } from '@fedify/fedify';

const federation = createFederation({
kv: new DenoKvStore(await Deno.openKv()),
});

federation.setActorDispatcher('/users/{handle}', async (ctx, handle) => {
// Return actor object
});

Python​

LibraryDescriptionLicense
federationMulti-protocol social web libraryBSD-3
little-boxesMinimal ActivityPub frameworkISC
bovineFediverse application libraryMIT
pyfedType-safe ActivityPub libraryMIT
TakahēMulti-domain AP serverBSD-3
# Example: Using federation library
from federation.entities import base
from federation.outbound import handle_create

entity = base.Post(
raw_content="Hello from Python!",
id="https://example.com/posts/1"
)

Rust​

LibraryDescriptionLicense
activitypub-federationHigh-level AP framework (from Lemmy)AGPL-3.0
activitystreamsTraits and types for AS/APGPL-3.0
megalodon-rsMastodon/Pleroma API clientApache-2.0
// Example: Using activitypub-federation
use activitypub_federation::config::FederationConfig;

let config = FederationConfig::builder()
.domain("example.com")
.app_data(data)
.build()?;

Go​

LibraryDescriptionLicense
go-fed/activityFull AS/AP implementationBSD-3
astreamsActivityStreams 2.0 libraryAGPL-3.0
HannibalActivityPub libraryApache-2.0
go-activitypubAP service implementationISC
// Example: Using go-fed/activity
import "github.com/go-fed/activity/streams"

note := streams.NewActivityStreamsNote()
note.GetActivityStreamsContent().Set(/* ... */)

PHP​

LibraryDescriptionLicense
ActivityPub-PHPActivityPub implementationMIT
FediTextText processing for FediverseMIT

Ruby​

LibraryDescriptionLicense
activitypubReference (Mastodon codebase)AGPL-3.0

Elixir​

LibraryDescriptionLicense
activity_pubActivityPub libraryAGPL-3.0
PleromaFull implementation referenceAGPL-3.0

Tools​

Testing & Debugging​

ToolDescription
activitypub-testsuiteW3C conformance tests
FediDBFediverse network statistics
Fediverse ObserverInstance monitoring

Development Utilities​

ToolDescription
HTTP Signature TesterVerify signature implementation
JSON-LD PlaygroundTest JSON-LD processing
WebFinger TesterTest WebFinger discovery

Instance Management​

ToolDescription
FediblockModeration blocklists
The FederationNetwork statistics

Reference Implementations​

Full Servers​

┌────────────────────────────────────────────────────────────┐
│ REFERENCE IMPLEMENTATIONS │
├────────────────────────────────────────────────────────────┤
│ │
│ Microblogging │
│ ├── Mastodon (Ruby) - mastodon/mastodon │
│ ├── Pleroma (Elixir) - pleroma/pleroma │
│ └── Misskey (TS) - misskey-dev/misskey │
│ │
│ Link Aggregation │
│ └── Lemmy (Rust) - LemmyNet/lemmy │
│ │
│ Photo Sharing │
│ └── Pixelfed (PHP) - pixelfed/pixelfed │
│ │
│ Video │
│ └── PeerTube (TS) - Chocobozzz/PeerTube │
│ │
│ Blogging │
│ ├── WriteFreely (Go) - writefreely/writefreely │
│ └── Plume (Rust) - Plume-org/Plume │
│ │
└────────────────────────────────────────────────────────────┘

Minimal Examples​

ProjectLanguagePurpose
one-page-pubNode.jsSingle-file AP server
express-activitypubNode.jsReference implementation
microblog.pubPythonSingle-user server

Specifications​

Core Standards​

SpecificationURL
ActivityPubw3.org/TR/activitypub
ActivityStreams 2.0 Corew3.org/TR/activitystreams-core
ActivityStreams 2.0 Vocabularyw3.org/TR/activitystreams-vocabulary
JSON-LDw3.org/TR/json-ld
WebFingerRFC 7033

De Facto Standards​

SpecificationDocumentation
HTTP Signaturesdocs.joinmastodon.org/spec/security
NodeInfonodeinfo.diaspora.software
Mastodon Extensionsdocs.joinmastodon.org

Learning Resources​

Tutorials​

ResourceDescription
ActivityPub RocksOfficial resource site
How to Implement ActivityPubMastodon blog tutorial
Building an ActivityPub ServerSocialHub discussion

Diagrams & Visual References​

ResourceDescription
boyter/activitypubSequence diagrams for common flows: Follow, Create, Delete, Announce, Move, WebFinger — a "clean room" implementation reference (MIT)

Video Content​

ResourceDescription
FediForum RecordingsPast session recordings
PeerTube InstancesVarious developer tutorials

Books​

ResourceDescription
Move Slowly and Build BridgesRobert W. Gehl's book on Mastodon

Community Resources​

Forums & Discussion​

ResourceDescription
SocialHubDeveloper community forum
Lemmy CommunitiesFediverse discussions
Matrix/DiscordReal-time chat

News & Updates​

ResourceDescription
We DistributeFediverse news
Fediverse ReportWeekly updates
This Week in MatrixRelated protocol news

Curated Lists​

ResourceURL
Delightful AP Developmentcodeberg.org/fediverse/delightful-activitypub-development
Awesome ActivityPubgithub.com/BasixKOR/awesome-activitypub
Fediverse.Party Toolsfediverse.party/en/tools

API Documentation​

Platform APIs​

PlatformDocumentation
Mastodondocs.joinmastodon.org/api
Lemmyjoin-lemmy.org/docs
Pixelfeddocs.pixelfed.org
PeerTubedocs.joinpeertube.org/api-rest-reference

Library Documentation​

LibraryDocumentation
Fedifyfedify.dev/docs
go-fed/activitygo-fed.org
activitypub-federation-rustdocs.rs/activitypub_federation

Quick Reference​

Essential URLs​

┌────────────────────────────────────────────────────────────┐
│ ESSENTIAL URLS │
├────────────────────────────────────────────────────────────┤
│ │
│ Specifications │
│ ├── w3.org/TR/activitypub │
│ ├── w3.org/TR/activitystreams-core │
│ └── w3.org/TR/activitystreams-vocabulary │
│ │
│ Community │
│ ├── socialhub.activitypub.rocks │
│ ├── activitypub.rocks │
│ └── codeberg.org/fediverse/fep │
│ │
│ Tools │
│ ├── json-ld.org/playground │
│ ├── webfinger.net/lookup │
│ └── fedidb.org │
│ │
└────────────────────────────────────────────────────────────┘

Common Namespaces​

{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"toot": "http://joinmastodon.org/ns#",
"schema": "http://schema.org#",
"PropertyValue": "schema:PropertyValue",
"value": "schema:value"
}
]
}

Getting Help​

Where to Ask Questions​

  1. SocialHub Forum - Best for implementation questions
  2. Matrix Rooms - Real-time help
  3. GitHub Issues - Library-specific questions
  4. Stack Overflow - Tag with activitypub

Debugging Tips​

// Log incoming activities
app.post('/inbox', (req, res) => {
console.log('Received activity:', JSON.stringify(req.body, null, 2));
// Process activity...
});

// Verify HTTP signatures
const isValid = await verifySignature(req);
console.log('Signature valid:', isValid);

Next Steps​