littleFedi is a small ActivityPub server written in Go. It ships as a single static executable with a server-rendered web interface, a Mastodon-compatible client API.
littleFedi is a lightweight ActivityPub server written in Go by Stefano Marinelli.
Here is a summary of its core architecture and features:
Single Static Executable: Distributed as a single static binary compiled with CGO disabled, running natively without requiring external runtime dependencies, interpreters, or shared libraries.
Embedded & Pluggable Storage: Uses an embedded SQLite database by default that requires no external database administration, while offering optional build-tag support for PostgreSQL and S3 object storage.
No-JavaScript Web Interface: Features a server-rendered web UI where reading, posting (with a plain textarea fallback), settings, and moderation work fully with JavaScript turned off.
Complete ActivityPub Federation: Handles full ActivityPub federation, WebFinger, shared inboxes, relays, RSA HTTP signing, RSA/Ed25519 verification, and FEP-8b32 Object Integrity Proofs.
Mastodon-Compatible API: Exposes a full Mastodon API surface (OAuth, REST API, WebSocket/SSE streaming, and Web Push), enabling existing third-party Mastodon clients to connect directly.
NAT-Traversing Federation (littleMesh): Includes littleMesh, which allows an instance to federate from behind a home NAT or CGNAT without needing a public IP address, DNS domain name, or open inbound ports.
Chronological Timelines & Static Blogs: Displays all timelines (Home, local, federated, lists, tags, and direct) in strict chronological order. It can also generate plain static blogs from selected public posts complete with permalinks, Atom feeds, and hashtag indexes.
Low-Power Optimization & Multi-OS Support: Features a low_power = true preset to cap memory caching, image resampling, and connection limits for constrained hardware like a Raspberry Pi. It includes dedicated operational deployment guides for FreeBSD, illumos, Linux, NetBSD, and OpenBSD.
Explicit Limits: Omits instance-wide trends and popularity features by design, does not yet support uploading local custom emojis, and notes that its multi-process PostgreSQL/S3 setup is not yet production-certified.