ActivityPub4J

Open source · In development

Java meetsthe Fediverse.

An open-source Java library for developers adding ActivityPub to their applications. Connect your service to the Fediverse with reusable data models, federation utilities and HTTP signatures.

For Java backend developers and maintainers of Java-based platforms. Framework independent by design.

Built for JavaMade for federationDesigned for reuseFunded for the commons

01 / The foundation

ActivityPub building blocks.
For your Java application.

ActivityPub is a W3C standard that lets independent platforms exchange content and interact. It is the shared language behind the Fediverse: a network of services that connect without relying on a single provider.

ActivityPub4J is a library to integrate into your own Java application. It is being developed to handle shared protocol concerns: representing actors and activities, reading and writing messages, and supporting signed exchanges between servers. Your application supplies the features and user experience; ActivityPub4J supplies reusable federation building blocks.

01

ActivityStreams data models

Represent actors, objects and activities as strongly typed Java models. Read and write the JSON-LD messages exchanged by ActivityPub services.

02

Inbox & outbox utilities

Build on reusable utilities for incoming and outgoing activities, so your application can exchange messages with other ActivityPub servers.

03

HTTP signing & verification

Sign outgoing HTTP requests and verify incoming signatures. Real-world interoperability testing will help validate how the components work with other services.

Who it is for

Bring federation to the software you build.

For Java backend developers, open-source maintainers and teams extending existing Java-based platforms with decentralized communication.

Building a new federated service?

Use the planned components as a starting point for an event platform, a fitness community or another service that shares activities across server boundaries.

Connecting an existing application?

Add ActivityPub support to your Java backend while keeping your own framework, application logic and user interface.

These are planned capabilities. ActivityPub4J is under development; this page does not announce a production release.

02 / Real-world connections

One foundation.
Different worlds.

Born from the needs of Komunumo, built for the wider Java community. Two open-source projects plan to use ActivityPub4J and help validate it in practice.

03 / The way forward

From core models
to connected applications.

A milestone-based plan, with documentation, automated tests and a CLI reference implementation to help developers get started.

  1. M1

    Core foundation

    ActivityStreams models, JSON serialization and deserialization, and automated tests.

    Target: Alpha v0.1
  2. M2

    Federation & security

    Inbox and outbox utilities, HTTP signatures and real-world interoperability testing.

    Target: Beta v0.5
  3. M3

    Discovery

    WebFinger support and remote actor resolution for finding and connecting services.

    Target: Release candidate v0.9
  4. M4

    Production readiness

    A stable public API, comprehensive documentation and validated interoperability.

    Target: v1.0

Planned milestones, not release commitments. Scope and timing may evolve as development progresses.

05 / Supported by

Public funding.
Shared foundations.

ActivityPub4J is supported by the NGI0 Commons Fund, established by NLnet. The funding brings European and Swiss support to reusable, open-source infrastructure for the internet.

NLnet FoundationNGI0 Commons FundEuropean CommissionSwiss State Secretariat for Education, Research and Innovation SERI

Funding is provided through the European Commission’s Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology, under grant agreement No. 101135429. Additional funding is provided by the Swiss State Secretariat for Education, Research and Innovation (SERI).

View the project at NLnet