Skip to main content

ActivityPub Federation

JSS includes a built-in ActivityPub server, allowing your Solid pod to federate with Mastodon, Pleroma, Misskey, and any ActivityPub-compatible service.

Quick Start

jss start --activitypub --ap-username alice --ap-display-name "Alice"

Your actor is now discoverable at @alice@yourserver.com from any Mastodon instance.

Configuration

FlagDescriptionDefault
--activitypubEnable ActivityPubOff
--ap-username <name>Actor usernameme
--ap-display-name <name>Display nameUsername
--ap-summary <text>Bio / summaryEmpty
--ap-nostr-pubkey <hex>Link Nostr identity via alsoKnownAsNone

Endpoints

EndpointMethodDescription
/.well-known/webfingerGETActor discovery
/.well-known/nodeinfoGETServer metadata (Mastodon-compatible)
/profile/cardGETActor profile (content-negotiated)
/inboxPOSTReceive activities from remote servers
/profile/card/outboxGETPublished activities (last 20)
/profile/card/outboxPOSTCreate and broadcast new posts
/profile/card/followersGETFollowers collection
/profile/card/followingGETFollowing collection

Supported Activities

Incoming (Inbox)

ActivityBehavior
FollowAdds follower, auto-sends Accept
UndoRemoves follower
AcceptMarks outgoing follow as accepted
CreateStores received note/post
LikeStores like activity
AnnounceStores boost/reblog

Outgoing (Outbox)

Post a note:

curl -X POST https://yourserver.com/profile/card/outbox \
-H "Content-Type: application/activity+json" \
-d '{"type": "Note", "content": "Hello from my Solid pod!"}'

JSS wraps it in a Create activity, signs it with HTTP Signatures, and delivers to all follower inboxes.

Security

  • HTTP Signature verification: Validates signatures on incoming activities using the remote actor's public key
  • Actor caching: Caches remote actor profiles to reduce network requests
  • RSA keypair: Generated automatically and stored in .server/ directory
  • Activity validation: Requires valid type field on all incoming activities

Nostr Identity Linking

Link your Nostr identity to your ActivityPub actor:

jss start --activitypub --ap-nostr-pubkey <hex-pubkey>

This adds an alsoKnownAs reference to your actor profile, enabling cross-protocol identity verification.

NodeInfo

JSS exposes NodeInfo 2.1 metadata at /.well-known/nodeinfo, compatible with Mastodon and other Fediverse tools that discover server capabilities.