Skip to main content

Pleroma

Pleroma is a lightweight, customizable microblogging server.

Overview

PropertyValue
LanguageElixir
DatabasePostgreSQL
LicenseAGPL-3.0
Repositorygit.pleroma.social/pleroma/pleroma
Documentationdocs.pleroma.social

Forks

  • Akkoma - Most active fork, additional features
  • Rebased - Mastodon-compatible frontend

ActivityPub Implementation

Actor Type

{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"litepub": "http://litepub.social/ns#",
"discoverable": "toot:discoverable"
}
],
"type": "Person",
"id": "https://pleroma.example/users/alice",
"preferredUsername": "alice",
"name": "Alice",
"inbox": "https://pleroma.example/users/alice/inbox",
"outbox": "https://pleroma.example/users/alice/outbox",
"endpoints": {
"sharedInbox": "https://pleroma.example/inbox"
},
"discoverable": true,
"capabilities": {
"acceptsChatMessages": true
}
}

Note

{
"type": "Note",
"id": "https://pleroma.example/objects/abc123",
"attributedTo": "https://pleroma.example/users/alice",
"content": "<p>Hello from Pleroma!</p>",
"contentMap": {
"en": "<p>Hello from Pleroma!</p>"
},
"published": "2024-01-15T10:00:00Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://pleroma.example/users/alice/followers"],
"conversation": "tag:pleroma.example,2024-01-15:objectId=abc123:objectType=Conversation",
"context": "tag:pleroma.example,2024-01-15:objectId=abc123:objectType=Conversation"
}

Supported Activities

ActivitySupportNotes
CreateNotes, polls, chat
UpdateEdits
DeleteRemoval
LikeFavorites
EmojiReactReactions (Akkoma)
AnnounceRepeats
FollowStandard
UndoAll reversible
ChatMessageDirect messages

Chat Messages

Pleroma supports federated chat:

{
"type": "ChatMessage",
"id": "https://pleroma.example/objects/chat123",
"actor": "https://pleroma.example/users/alice",
"to": ["https://other.example/users/bob"],
"content": "Hey, how are you?"
}

LitePub Extensions

Pleroma uses the LitePub namespace:

PropertyDescription
litepub:oauthRegistrationEndpointOAuth registration
litepub:directConversationThread visibility
capabilitiesServer capabilities

Capabilities Object

{
"capabilities": {
"acceptsChatMessages": true
}
}

Local-Only Posts

Posts can be restricted to local instance:

{
"type": "Note",
"to": ["https://pleroma.example/users/alice/followers"],
"cc": [],
"directMessage": false
}

Client-to-Server (C2S) API

Pleroma supports the C2S API:

POST /users/alice/outbox
Authorization: Bearer {token}
Content-Type: application/activity+json

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"object": {
"type": "Note",
"content": "Posted via C2S!"
}
}

Rich Text

Markdown Support

**bold** *italic* `code`
[link](https://example.com)

HTML in Content

Pleroma allows more HTML than Mastodon:

  • <details> and <summary>
  • More formatting options
  • Custom CSS classes (instance-dependent)

API Endpoints

GET /.well-known/webfinger
GET /.well-known/nodeinfo
GET /users/{nickname}
GET /objects/{id}
GET /activities/{id}
POST /inbox # Shared inbox
POST /users/{nickname}/inbox

Compatibility

Features Beyond Mastodon

  • Quote posts via quoteUrl
  • Emoji reactions
  • Markdown content
  • C2S API support
  • Chat messages
  • Local-only posts

With Mastodon

  • Full bidirectional compatibility
  • Reactions appear as favorites
  • Markdown converted to HTML
  • Quotes shown as links

See Also