Skip to main content

Verified against Package registries and forge APIs (npm, PyPI, crates.io, RubyGems, Packagist, Go proxy, GitHub, Codeberg) on 2026-10-15; @fedify/* 2.4.4 on 2026-10-15.

Other Libraries

ActivityPub options for languages without a dedicated page. Status checked on 2026-10-15.

Elixir​

activity_pub (Bonfire)​

A general-purpose ActivityPub library for Elixir, extracted from and used by Bonfire. You plug it into your app by writing an adapter module. Its README describes it as work in progress, with federation testing underway.

PropertyValue
Repositorygithub.com/bonfire-networks/activity_pub
Installgit dependency (branch: "stable"), not on Hex
LicenseAGPL-3.0
StatusActive (commits October 2026)

Pleroma / Akkoma source​

Pleroma and its fork Akkoma are mature Elixir servers whose federation code is a useful reference, though not packaged as a library.

PropertyValue
Akkomaakkoma.dev/AkkomaGang/akkoma — see lib/pleroma/web/activity_pub/
Pleromagit.pleroma.social/pleroma/pleroma

C# / .NET​

Letterbook (AGPL-3.0, active) is a federated social server written in C#; its source is the most current .NET ActivityPub reference. Its separate type library, Letterbook.ActivityPub, has not been updated since June 2024.

Java / Kotlin, Swift, Dart, Haskell​

We don't know of a maintained, general-purpose ActivityPub library for these languages. If you know one, please open an issue. Until then, build on a JSON library and an HTTP-signature implementation for your platform, and test against real servers.

Building Your Own​

If no library exists for your language, the minimum to federate with Mastodon is:

  1. Types — actors (Person, Group, Service), objects (Note, Article, Image), activities (Create, Follow, Accept, Undo, Like, Announce, Delete), and OrderedCollection.
  2. WebFinger — GET /.well-known/webfinger?resource=acct:{user}@{domain} returning a self link of type application/activity+json.
  3. Actor endpoint — served as application/activity+json, with a publicKey.
  4. HTTP Signatures — sign outgoing POSTs (draft-cavage rsa-sha256 with (request-target) host date digest is what most servers accept today; RFC 9421 is the future), and verify incoming ones, including the body digest and that the key belongs to the activity's actor — see issue #37.
  5. Inbox and outbox — accept activities with 202, and publish your own.

See Building an Actor for the details.

Community Resources​

See Also​