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.jsGeneral-purpose libraryMaintenance
activitypub-expressExpress.js middlewareUnmaintained

More JavaScript libraries →

Python

LibraryDescriptionStatus
bovineActivityPub libraryMaintenance
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: Fedify (well-documented, active)
  • Python: bovine or little-boxes
  • Go: go-ap, or go-fed/activity (complete but unmaintained since 2022)

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)
  • Fedify (TypeScript)

Stable

  • bovine (Python)

Experimental

  • Various new projects

Unmaintained

  • activitypub-express (JavaScript) — no activity since early 2024
  • go-fed/activity (Go) — no activity since 2022; feature-complete and still widely used

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