Skip to content

Latest commit

 

History

History
119 lines (92 loc) · 4.68 KB

File metadata and controls

119 lines (92 loc) · 4.68 KB

Federation

Hollo is a single-user microblogging server that federates through Fedify. Fedify provides the protocol, signature, JSON-LD, and vocabulary layers, while Hollo defines the actors, objects, collections, and activity handlers described below.

Supported federation protocols and standards

Supported FEPs

ActivityPub

Hollo implements the server-to-server part of ActivityPub. Client applications use Hollo's Mastodon-compatible API rather than the ActivityPub client-to-server API.

Actors and discovery

Hollo publishes local accounts as Person or Service actors and accepts remote Application, Group, Organization, Person, and Service actors. Actors expose inbox, shared inbox, outbox, followers, following, liked, featured-post, and featured-tag collections. Account discovery uses WebFinger, including deployments where the WebFinger domain differs from the ActivityPub server origin.

Local actors publish an RSA key for HTTP Signatures and Linked Data Signatures, plus an Ed25519 Multikey in assertionMethod. Fedify attaches FEP-8b32 integrity proofs to outgoing activities and verifies supported proofs and signatures on incoming activities.

Objects and interactions

Local posts are Note objects or Question objects for polls. Hollo also accepts remote Article, ChatMessage, Note, and Question objects. Posts can contain mentions, hashtags, custom emoji, images, video, content warnings, language metadata, replies, and audience information for public, unlisted, followers-only, and direct visibility.

Hollo sends and processes follows, favorites, boosts, blocks, account moves, post creation and updates, deletion, pinning, poll votes, and undo activities. It sends Flag activities for reports. Hollo also supports EmojiReact activities and paginated emojiReactions collections as defined by FEP-c0e0. Local posts expose direct replies through paginated replies collections, with each collection response filtered according to the requesting actor's signed-fetch permissions.

Quote posts use FEP-e232 object links and the FEP-044f quote, interaction-policy, request, acceptance, rejection, authorization, and revocation flows. Legacy quoteUrl is also understood for compatibility with older software.

Delivery and fetching

Activities are delivered asynchronously, with shared-inbox delivery used when available. Hollo accepts both RFC 9421 HTTP Message Signatures and the older draft-cavage HTTP Signatures format. For interoperability with existing servers, outgoing delivery currently tries the draft-cavage format first.

Followers-only and direct objects and their replies collections require a signed fetch from an actor in the object's audience. Public and unlisted posts are available through the local actor's outbox. Hollo can crawl remote replies collections to discover conversation replies that were not delivered directly to it.

Additional documentation