ActivityPub implementation in Nim
nimble install activitypub
- Full ActivityPub core, activity, and actor data types (JSON-LD serialization/deserialization)
- WebFinger client (
webfinger,buildJrd) - HTTP Signatures (Ed25519 and RSA SHA-256)
- Ed25519 and RSA keypair generation, PEM export/import
- Federation engine: deliver activities to remote inboxes, fetch remote actors
- Client-to-Server (C2S) API:
postToOutbox,getOutbox,getFollowers,getFollowing - Inbox dispatcher with type-based routing and HTTP Signature verification
- Activity builders:
buildFollow,buildAccept,buildReject,buildUndo,buildCreate,buildDelete,buildNote,buildCollectionPage,buildOrderedCollection,buildCollection - Collection pagination:
fetchCollection,fetchCollectionPage,fetchAllItems - Built-in HTTP server (powered by pkg/powpow) with:
- Routes for WebFinger
- Actor profiles, inbox, outbox, followers, and following
requires "nim >= 2.0.0"
requires "openparser >= 0.1.6"
requires "checksums >= 0.2.2"
requires "e2ee > 0.1.0" # `monocypher` is required
requires "powpow > 0.1.4"
requires "ormin#head"
- Persistent storage backends (SQLite, PostgreSQL) using pkg/ormin
- C2S client-to-server endpoints (POST
/users/{id}/outbox, GET/users/{id}/following) - Activity forwarding and shared inbox support
- Object retrieval with forward/fetch (
objectproperty resolution) - ActivityStreams vocabulary types coverage
- Linked Data Signatures (2017/2019)
- FEP compatibility (FEP-2677, FEP-8cf5, FEP-7888)
- Rate limiting and request validation middleware
- Support non-spec ecosystem extensions (Mastodon's Hashtag, Emoji, PropertyValue)
- API stabilization for v1.0.0 release
- 🐛 Found a bug? Create a new Issue
- 👋 Wanna help? Fork it!
![]() |
Switch to Open-Source LLMs via OpenCode GO, choosing from a variety of powerful models such as DeepSeek, Qwen, Kimi, GLM-5, MiniMax, MiMo. 🍕 Use our referral link to get started! |
MIT license. Made by Humans from OpenPeeps.
Copyright © 2026 OpenPeeps & Contributors — All rights reserved.
