- Go 88.8%
- TypeScript 7%
- CSS 2.1%
- Go Template 1.4%
- JavaScript 0.4%
- Other 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Build linux/amd64 / linux-amd64 (push) Failing after 1h2m0s
Lemmy wraps each post in an Announce of a Create. Use the inner Page or Note as the boost target, and backfill the newest outbox page because Lemmy does not push history to new followers. |
||
| .forgejo/workflows | ||
| .gitea | ||
| .github | ||
| .vscode | ||
| .woodpecker | ||
| archive | ||
| cmd | ||
| docs | ||
| example | ||
| internal | ||
| scripts | ||
| test | ||
| testrig | ||
| tools | ||
| vendor | ||
| web | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .golangci.yml | ||
| .goreleaser.yml | ||
| .readthedocs.yaml | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| FEDERATION.md | ||
| FORK.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| mkdocs.yml | ||
| README.md | ||
| ROADMAP.md | ||
| SECURITY.md | ||
| TODO.md | ||
Lestodon
Lestodon is a hard fork of the ActivityPub server GoToSocial. It is its own project, developed in its own repository: git.blackneon.net/ralf/lestodon.
This fork was created to experiment with LLM-assisted development on a GoToSocial base, and to build a Lemmy integration on that base. The Lemmy work is to follow a community, read its posts, write a post, reply, and vote up or down. The microblog tools come from that base, under the same GNU AGPL v3 or later license. Copyright notices of the GoToSocial authors stay in the source. FORK.md has the modification notice, the source offer, and how community posting works.
The name comes from the prehistoric ground sloth.
The inherited server is still beta software. Expect rough edges, especially around Lemmy.
Documentation for the inherited server is at docs.gotosocial.org. Lemmy-specific behaviour is documented in docs/federation/lemmy.md.
Contact for this fork: ralfwause@posteo.de.
Table of Contents
- Why this fork
- What is Lestodon?
- Features
- Alternatives to Lestodon
- Known Issues
- Installing Lestodon
- Contributing
- Contact
- Credits
- Sponsorship + Funding
- License
Why this fork
Lestodon is a hard fork of GoToSocial, maintained separately in this repository.
The fork was created for two reasons, and both are the point of the project: to experiment with LLM-assisted development on a GoToSocial base, and to build the Lemmy integration described in FORK.md and docs/federation/lemmy.md. The language model is part of how the code is written. The running server is Lestodon and does its delivery, storage, and voting in the usual way.
The sections below describe the server this fork started from. Lestodon keeps that behaviour. The team list and the funding note later in this file belong to the upstream project at codeberg.org/superseriousbusiness/gotosocial. Builds published there do not include the Lemmy changes in this tree.
What is Lestodon?
Lestodon provides a lightweight, customizable, and safety-focused entryway into the Fediverse, and is comparable to (but distinct from) existing projects such as Mastodon, Pleroma, Friendica, and PixelFed.
If you've ever used something like Twitter or Tumblr (or even Myspace!) Lestodon will probably feel familiar to you: You can follow people and have followers, you make posts which people can favourite and reply to and share, and you scroll through posts from people you follow using a timeline. You can write long posts or short posts, or just post images, it's up to you. You can also, of course, block people or otherwise limit interactions that you don't want by posting just to your friends.
Lestodon does NOT use recommendation algorithms or collect data about you to suggest content or 'improve your experience'. The timeline is chronological: whatever you see at the top of your timeline is there because it's just been posted, not because it's been selected as interesting (or controversial) based on your personal profile.
Lestodon is not designed for 'must-follow' influencers with tens of thousands of followers, and it's not designed to be addictive. Your timeline and your experience are shaped by who you follow and how you interact with people, not by metrics of engagement!
Lestodon doesn't claim to be better than any other application, but it offers something that might be better for you in particular.
Federation
Because Lestodon uses ActivityPub, you can hang out not just with people on your home server, but with people all over the Fediverse, seamlessly.
Federation means that your home server is part of a network of servers all over the world that all communicate using the same protocol. Your data is no longer centralized on one company's servers, but resides on your own server and is shared — as you see fit — across a resilient web of servers run by other people.
This federated approach also means that you aren't beholden to arbitrary rules from some gigantic corporation potentially thousands of miles away. Your server has its own rules and culture; your fellow server residents are your neighbors; you will likely get to know your server admins and moderators, or be an admin yourself.
Lestodon advocates for many small, weird, specialist servers where people can feel at home, rather than a few big and generic ones where one person's voice can get lost in the crowd.
History and Status
This project sprang up in February/March 2021 out of a dissatisfaction with the safety + privacy features of other Federated microblogging/social media applications, and a desire to implement something a little different.
It began as a solo project, and then picked up steam as more developers became interested and jumped on.
We made our first Alpha release in November 2021. We left Alpha and entered Beta in September/October 2024.
For a detailed view on what's implemented and what's not, and progress made towards stable release, please see the roadmap document.
Features
Mastodon API compatibility
The Mastodon API has become the de facto standard for client communication with federated servers, so Lestodon has implemented and extended the API with custom functionality.
Though most apps that implement the Mastodon API should work, Lestodon is tested and works reliably with beautiful apps like:
If you've used Mastodon with a third-party app before, you'll find using Lestodon a breeze.
Granular post visibility settings
It's important that when you post something, you can choose who sees it.
Lestodon offers public, unlisted/unlocked, followers-only, and direct posts (slide in DMs! -- with consent).
Reply controls
Lestodon lets you choose who can reply to your posts, via interaction policies. You can choose to let anyone reply to your posts, let only your friends reply, and more.
Local-only posting
Sometimes you only want to talk to people you share an instance with. Lestodon supports this via local-only posting, which ensures that your post stays on your instance only, even if it gets boosted. They also do not show up in the web interface, and are not accessible publicly via URL. (Local-only posting is currently dependent on client support.)
RSS feed
Lestodon lets you opt-in to exposing your profile as an RSS feed, so that people can subscribe to your public feed without missing a post.
Rich text formatting
With Lestodon, you can write posts using the popular, easy-to-use Markdown markup language, which lets you produce rich HTML posts with support for blockquotes, syntax-highlighted code blocks, lists, inline links, and more.
Themes and custom CSS
Users can choose from a variety of fun themes for their profile, or even write their own custom CSS.
It's also easy for admins to add their own custom themes for users to choose from.
Show theme examples
Easy to run
Lestodon uses only about 250-350MiB of RAM, and requires very little CPU power, so it plays nice with single-board computers, old laptops and tiny $5/month VPSes.
No external dependencies apart from a database (or just use SQLite!).
Simply download the binary + assets (or Docker container), tweak your configuration, and run.
Safety + security features
- Strict privacy enforcement for posts, and strict blocking logic.
- Choose the visibility of posts on the web view of your profile.
- Import, export, and subscribe to community-created domain allow and domain block lists.
- HTTP signature authentication: Lestodon requires HTTP Signatures when sending and receiving messages, to ensure that your messages can't be tampered with and your identity can't be forged.
- Built-in, automatic support for secure HTTPS with Let's Encrypt.
- Support for two-factor authentication via time-based one-time passwords (Google authenticator, LastPass authenticator, etc).
Various federation modes
Lestodon doesn't apply a one-size-fits-all approach to federation. Who your server federates with should be up to you.
- 'blocklist' mode (default): discover new servers; block servers you don't like.
- 'allowlist' mode (experimental); opt-in to federation with trusted servers.
- 'zero' federation mode; keep your server private (not yet implemented).
OIDC integration
Lestodon supports OpenID Connect (OIDC) identity providers, meaning you can integrate it with existing user management services like Auth0, Gitlab, etc., or run your own and hook Lestodon up to that (we recommend Dex).
Backend-first design
Unlike other federated server projects, Lestodon doesn't include an integrated client front-end (i.e., a web app).
Instead, like Matrix.org's Synapse project, it provides a relatively generic backend server implementation, some beautiful static pages for profiles and posts, and a well-documented API.
On top of this API, web developers are encouraged to build any front-end implementation or mobile application that they wish, whether Tumblr-like, Facebook-like, Twitter-like, or something else entirely.
Alternatives to Lestodon
Don't like Lestodon but still want to use the fediverse? Like Lestodon but prefer not to use beta software? There are lots of alternatives that might suit you better! Here are some that we know work well (alphabetical order):
- Akkoma: Full-featured ActivityPub microblogging with emoji reacts and quote posts (Elixir).
- Honk: Minimalist, opinionated microblogging with "No likes, no faves, no polls, no stars, no claps, no counts." (Go).
- Iceshrimp.net: rewrite of Iceshrimp from the ground up (.Net).
- Mastodon: Actively developed, widely recognized, scaleable ActivityPub microblogging instance (Ruby).
- Snac2: Simple, minimalistic instance with very low system requirements (portable C).
Known Issues
Lestodon is still in beta, so the base this fork inherits has bugs. The upstream project tracks them on Codeberg. Federation mismatches with other servers are tracked with the federation label.
Lemmy community follow, posts, replies, and votes are Lestodon behaviour. Report those against this repository, git.blackneon.net/ralf/lestodon.
Installing Lestodon
Build Lestodon from this source tree with ./scripts/build.sh. The binary is ./lestodon. The steps are in CONTRIBUTING.md. This repository does not publish release archives or container images.
Supported Platforms
While we try to support a reasonable number of architectures and operating systems, it's not always possible to support a given platform due to library constraints or performance issues.
Platforms that we don't officially support may still work, but we can't test or guarantee performance or stability.
This is the current status of support offered by Lestodon for different platforms (if something is unlisted it means we haven't checked yet so we don't know):
| OS | Architecture | Support level | Binary archive | Docker container |
|---|---|---|---|---|
| Linux | x86-64/AMD64 (64-bit) | 🟢 Full1 | Yes | Yes |
| Linux | Armv8/ARM64 (64-bit) | 🟢 Full1 | Yes | Yes |
| FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full1,2 | Yes | No |
| FreeBSD | Armv8/ARM64 (64-bit) | 🟢 Full1,2 | Yes | No |
| NetBSD | x86-64/AMD64 (64-bit) | 🟢 Full1,2 | Yes | No |
| NetBSD | Armv8/ARM64 (64-bit) | 🟢 Full1,2 | Yes | No |
| Linux | x86-32/i386 (32-bit) | 🟡 Partial3 | Yes | Yes |
| Linux | Armv7/ARM32 (32-bit) | 🟡 Partial3 | Yes | Yes |
| Linux | Armv6/ARM32 (32-bit) | 🟡 Partial3 | Yes | Yes |
| OpenBSD | Any | 🔴 None4 | No | No |
64-bit
Notes on 64-bit CPU feature requirements:
-
x86_64 requires the x86-64-v2 level instruction sets. (CPUs manufactured after ~2010)
-
ARM64 requires no specific features, ARMv8 CPUs (and later) have all required features.
If any of the above features are missing, performance of media processing will suffer. In these situations, you may have some success building a binary yourself with the totally unsupported, experimental nowasm tag.
BSDs
Mostly works, just a few things to keep in mind with SQLite; check release notes carefully when installing on NetBSD or FreeBSD. If running with Postgres you should have no issues, or alternatively you can build with the moderncsqlite3 build-tag to build with https://gitlab.com/cznic/sqlite instead.
32-bit
Lestodon doesn't work well on 32-bit systems like i386, or Armv6/v7, mainly due to performance of media decoding.
We don't recommend running Lestodon on 32-bit, but you may have some success either turning off remote media processing altogether, or building a binary yourself with the totally unsupported, experimental nowasm tag. There are still a few things to keep in mind with SQLite on non-Linux platforms, or alternatively you can build with the moderncsqlite3 build-tag to build with https://gitlab.com/cznic/sqlite instead.
For more guidance, check release notes when trying to install on 32-bit.
OpenBSD
Marked as unsupported due to performance issues (no WASM compiler, high memory usage when idle, crashes while processing media).
While we don't support running Lestodon on OpenBSD, you may have some success building a binary yourself with the totally unsupported, experimental nowasm tag. There are still a few things to keep in mind with SQLite, or alternatively you can build with the moderncsqlite3 build-tag to build with https://gitlab.com/cznic/sqlite instead.
The table describes which platforms this codebase can be built for. "Yes" means a build is possible. This repository does not publish those binaries or images.
From Source
Build from a checkout of this repository. See CONTRIBUTING.md.
After ./scripts/build.sh, a local container image is:
docker build -t lestodon:latest .
The example Compose file is example/docker-compose/docker-compose.yaml. It expects that image.
Contributing
Work on Lestodon happens in this repository. The local CONTRIBUTING.md describes how to build and test the tree.
The upstream project keeps its own issues and contribution guide for the original codebase.
Contact
Questions about this fork go to ralfwause@posteo.de.
The repository is git.blackneon.net/ralf/lestodon.
The Matrix room #gotosocial-space:superseriousbusiness.org and admin@gotosocial.org are contacts for the upstream project, not for this fork.
Credits
Libraries
The following open source libraries, frameworks, and tools are used by Lestodon, with gratitude.
- buckket/go-blurhash; used for generating image blurhashes. GPL-3.0 License.
- coreos/go-oidc; OIDC client library. Apache-2.0 License.
- DmitriyVTitov/size; runtime model memory size calculations. MIT License.
- google/uuid; UUID generation. BSD-3-Clause License.
- Go-Playground:
- go-playground/form; funky form mapping support. MIT License.
- Gorilla:
- gorilla/feeds; RSS + Atom feed generation. BSD-2-Clause License.
- gorilla/websocket; Websocket connectivity. BSD-2-Clause License.
- go-swagger/go-swagger; Swagger OpenAPI spec generation. Apache-2.0 License.
- gruf:
- gruf/go-bytesize; byte size parsing / formatting. MIT License.
- gruf/go-cache; LRU and TTL caches. MIT License.
- gruf/go-debug; debug build tag. MIT License.
- gruf/go-errors; context-like error w/ value wrapping MIT License.
- gruf/go-fastcopy; performant (buffer pooled) I/O copying MIT License.
- gruf/go-ffmpreg; embedded ffmpeg / ffprobe WASM binaries GPL-3.0 License.
- gruf/go-kv; log field formatting. MIT License.
- gruf/go-list; generic doubly linked list. MIT License.
- gruf/go-mutexes; safemutex & mutex map. MIT License.
- gruf/go-runners; synchronization utilities. MIT License.
- gruf/go-sched; task scheduler. MIT License.
- gruf/go-split; configuration string handling. MIT License.
- gruf/go-storage; file storage backend (local & s3). MIT License.
- gruf/go-structr; struct caching + queueing with automated indexing by field. MIT License.
- jackc:
- jackc/pgconn; Postgres driver. MIT License.
- jackc/pgx; Postgres driver and toolkit. MIT License.
- KimMachineGun/automemlimit; cgroups memory limit checking. MIT License.
- k3a/html2text; HTML-to-text conversion. MIT License.
- mathiasbynens/emoji-test-regex-pattern; unicode Emoji regular expression. MIT License.
- mcuadros/go-syslog; Syslog server library. MIT License.
- microcosm-cc/bluemonday; HTML user-input sanitization. BSD-3-Clause License.
- miekg/dns; DNS utilities. Go License.
- minio/minio-go; S3 client SDK. Apache-2.0 License.
- mitchellh/mapstructure; Go interface => struct parsing. MIT License.
- modernc.org/sqlite; cgo-free port of SQLite. Other License.
- mvdan.cc/xurls; URL parsing regular expressions. BSD-3-Clause License.
- oklog/ulid; sequential, database-friendly ID generation. Apache-2.0 License.
- open-telemetry/opentelemetry-go; OpenTelemetry API + SDK. Apache-2.0 License.
- pquerna/otp; One Time Password utilities. Apache-2.0 License.
- spf13:
- spf13/cobra; command-line tooling. Apache-2.0 License.
- spf13/viper; configuration management. Apache-2.0 License.
- stretchr/testify; test framework. MIT License.
- superseriousbusiness:
- superseriousbusiness/activity forked from go-fed/activity; Golang ActivityPub/ActivityStreams library. BSD-3-Clause License.
- superseriousbusiness/exif-terminator; EXIF data removal. GNU AGPL v3 LICENSE.
- superseriousbusiness/httpsig forked from go-fed/httpsig; secure HTTP signature library. BSD-3-Clause License.
- superseriousbusiness/oauth2 forked from go-oauth2/oauth2; OAuth server framework and token handling. MIT License.
- temoto/robotstxt; robots.txt parsing. MIT License.
- tdewolff/minify; HTML minification for Markdown-submitted posts. MIT License.
- uber-go/automaxprocs; GOMAXPROCS automation. MIT License.
- ulule/limiter; http rate limit middleware. MIT License.
- uptrace/bun; database ORM. BSD-2-Clause License.
- wagslane/go-password-validator; password strength validation. MIT License.
- yuin/goldmark; markdown parser. MIT License.
Image Attribution and Licensing
Sloth logo by Anna Abramek.

The sloth drawings by Anna Abramek are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
The Creative Commons Attribution-ShareAlike 4.0 International License applies to those sloth drawings. In the upstream tree that is the logo files and the default avatars. In this fork, web/assets/logo.svg and web/assets/default_avatars are still that mascot, so the same license applies to them.
web/assets/logo.png, web/assets/logo.webp, and docs/overrides/public/lestodon.jpg are the Lestodon ground-sloth mascot. They replace the upstream raster logos. The Creative Commons terms below cover the sloth drawings: web/assets/logo.svg and web/assets/default_avatars.
Under those terms, you are free to:
- Share — copy and redistribute the sloth mascot files in any medium or format.
- Adapt — remix, transform, and build upon the sloth mascot files for any purpose, even commercially.
Team
In alphabetical order (... and order of smell):
- daenney
- f0x [donate with liberapay]
- kim [check out my code @ codeberg, or find me @ @kim]
- tobi [donate with liberapay]
- vyr
Special Thanks
A huge thank you to CJ from go-fed: without your work, Lestodon would not have been possible.
Thanks to everyone who has used Lestodon, opened an issue, suggested something, given funding, and otherwise encouraged or supported the project!
Sponsorship + Funding
Crowdfunding and the NLnet grants that paid for development of the original project stay with that project. This fork does not receive those donations.
The upstream OpenCollective page is opencollective.com/gotosocial. Liberapay for that project is liberapay.com/GoToSocial. The 2023 and 2024 NLnet grants are described at nlnet.nl/project/GoToSocial.
License
Lestodon is free software, licensed under the GNU AGPL v3 LICENSE. We encourage forking and changing the code, hacking around with it, and experimenting.
Lestodon is one such fork. It is released under the same GNU AGPL v3 or later license. The license text in this repository is unchanged. Copyright (C) GoToSocial Authors remains on the original work. Modifications are Copyright (C) 2026 Lestodon contributors, and are available under the same license. See FORK.md.
See here for the differences between AGPL versus GPL licensing, and here for FAQ's about GPL licenses, including the AGPL.
If you modify the Lestodon source code, and run that modified code in a way that's accessible over a network, you must make your modifications to the source code available following the guidelines of the license:
[I]f you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.
The source of this Lestodon tree is https://git.blackneon.net/ralf/lestodon.
Copyright (C) GoToSocial Authors Copyright (C) 2026 Lestodon contributors




