Skip to main content

Application

ActivityStreams §4.1

"type": "Application"

Application represents an entire application or software system acting as an ActivityPub actor. Used for server-level actors – the Mastodon instance actor, for example, is an Application type. The instance actor signs HTTP requests on behalf of the server itself (for server-to-server operations that are not tied to a specific user, like fetching remote actor documents).

Details

Application actors represent the software application itself rather than a user. The key use case is the instance actor pattern.

Mastodon instance actor: Every Mastodon server has an Application actor at /actor (e.g., https://mastodon.social/actor). This actor: - Signs HTTP GET requests when fetching remote actor documents or notes - Represents the server in block/defederation announcements - Signs delivery receipts Why instance actors matter: When server A fetches a post from server B, it signs the request with the instance actor's key. Server B can verify the request came from a known federated server (not a random bot scraping content). This is important for servers that block certain domains – they can reject requests signed by blocked instance actors.

Other Application uses: - OAuth application registration in ActivityPub C2S workflows - Service accounts for platform-level actions (global announcements, system messages) - The 'relay' in ActivityPub relay systems

Relationship to Service: Application is for software systems; Service is for specific bots/functions. The distinction is subtle and both are used interchangeably by some implementations.

Required Fields

@context"https://www.w3.org/ns/activitystreams"
type"Application"
idPermanent HTTPS URL (typically /actor on the instance)
inboxHTTPS inbox endpoint
publicKeyRSA public key for HTTP Signature verification of server-level requests

Common Optional Fields

nameApplication/server name
urlServer homepage
summaryServer description

Examples

Mastodon instance actor
// GET https://mastodon.social/actor
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Application",
  "id": "https://mastodon.social/actor",
  "name": "mastodon.social",
  "url": "https://mastodon.social",
  "inbox": "https://mastodon.social/inbox",
  "publicKey": {
    "id": "https://mastodon.social/actor#main-key",
    "owner": "https://mastodon.social/actor",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\n..."
  }
}

Deployed As

Mastodon instance actors (/actor)ActivityPub relay instancesOAuth application actors in C2S workflows

See Also