Skip to main content

Libraries & SDKs Overview

This page provides an overview of ActivityPub libraries available for different programming languages.

By Language

JavaScript/TypeScript

LibraryDescriptionStatus
FedifyModern TypeScript frameworkActive
activitypub-expressExpress.js middlewareActive
ActivityPub.jsGeneral-purpose libraryMaintenance

More JavaScript libraries →

Python

LibraryDescriptionStatus
bovineActivityPub libraryActive
little-boxesActivityPub toolkitMaintenance
FederationProtocol supportActive

More Python libraries →

Go

LibraryDescriptionStatus
go-fed/activityComplete implementationActive
go-apActivityPub packagesActive
pubWriteFreely's libraryMaintenance

More Go libraries →

Rust

LibraryDescriptionStatus
activitypub-federationLemmy's libraryActive
activitystreamsTypes libraryActive

More Rust libraries →

Ruby

LibraryDescriptionStatus
Mastodon sourceReference implementationActive

More Ruby libraries →

PHP

LibraryDescriptionStatus
ActivityPub for WordPressWordPress pluginActive
Pixelfed sourceReference for PHPActive

More PHP libraries →

Choosing a Library

For Quick Prototypes

  • JavaScript: activitypub-express (easiest setup)
  • Python: bovine or little-boxes
  • Go: go-fed/activity (most complete)

For Production

  • TypeScript: Fedify (modern, maintained)
  • Rust: activitypub-federation (battle-tested)
  • Go: go-fed/activity or GoToSocial's code

For Learning

  • Study existing implementations:
    • GoToSocial (Go) - Clean, well-documented
    • Mastodon (Ruby) - Reference implementation
    • Lemmy (Rust) - Modern architecture

What Libraries Provide

Core Features

  • JSON-LD context handling
  • ActivityStreams type definitions
  • Activity serialization/deserialization

Federation Features

  • HTTP Signature signing/verification
  • WebFinger client/server
  • Inbox/Outbox handling
  • Activity delivery

Optional Features

  • Database integration
  • Queue management
  • Caching
  • Rate limiting

Library Maturity Levels

Production Ready

  • activitypub-federation (Rust)
  • go-fed/activity (Go)
  • Fedify (TypeScript)

Stable

  • activitypub-express (JavaScript)
  • bovine (Python)

Experimental

  • Various new projects

Building Without a Library

If no library fits your needs, you can implement from scratch:

  1. Start simple: WebFinger + Actor endpoint
  2. Add inbox: Receive activities
  3. Add signing: HTTP Signatures
  4. Add delivery: Send to other servers

See our implementation guides for step-by-step instructions.

Contributing to Libraries

Most libraries welcome contributions:

  • Bug fixes and tests
  • Documentation improvements
  • Feature additions
  • Compatibility fixes

Check each library's contribution guidelines.

See Also