No description
  • Go 88.8%
  • TypeScript 7%
  • CSS 2.1%
  • Go Template 1.4%
  • JavaScript 0.4%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ralf Wissing 747c18f611
Some checks failed
Build linux/amd64 / linux-amd64 (push) Failing after 1h2m0s
[bugfix] Store Lemmy community posts announced as Create
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.
2026-10-14 14:07:24 +02:00
.forgejo/workflows [chore] Add a Forgejo workflow that builds linux/amd64 binaries 2026-10-14 10:20:08 +02:00
.gitea [chore] Update some git template stuff (#4595) 2025-12-01 11:31:35 +01:00
.github [chore] Update some git template stuff (#4595) 2025-12-01 11:31:35 +01:00
.vscode [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
.woodpecker [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
archive [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
cmd [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
docs [bugfix] Store Lemmy community posts announced as Create 2026-10-14 14:07:24 +02:00
example [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
internal [bugfix] Store Lemmy community posts announced as Create 2026-10-14 14:07:24 +02:00
scripts [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
test [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
testrig [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
tools [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
vendor [chore] update dependencies (#5039) 2026-09-29 17:57:18 +02:00
web [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
.dockerignore [frontend] Restructure Frontend Sources (#634) 2022-06-09 12:51:19 +02:00
.gitattributes [chore] Set some additional git attributes (#3454) 2024-10-17 16:24:03 +00:00
.gitignore [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
.golangci.yml [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
.goreleaser.yml [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
.readthedocs.yaml [chore] Vendor mkdocs fonts; update docs dependencies (#2789) 2024-03-29 10:52:46 +01:00
AGENTS.md [feature] Add Lestodon fork identity and Lemmy communities 2026-10-09 20:46:39 +02:00
CLAUDE.md [chore] Totally definitely legitimately support Claude code, we love our shit-eating LLM capitalist overlords 🚀 (#4781) 2026-04-01 11:58:46 +02:00
CODE_OF_CONDUCT.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
CONTRIBUTING.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
Dockerfile [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
FEDERATION.md [docs] Update docs to differentiate between Service, Person, and Application actor types, add FEDERATION.md linking to docs (#4566) 2025-11-19 17:39:46 +01:00
FORK.md [feature] Add Lestodon fork identity and Lemmy communities 2026-10-09 20:46:39 +02:00
go.mod [chore] update dependencies (#5039) 2026-09-29 17:57:18 +02:00
go.sum [chore] update dependencies (#5039) 2026-09-29 17:57:18 +02:00
LICENSE add docs and a bunch of other stuff 2021-02-28 15:17:18 +01:00
mkdocs.yml [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
README.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
ROADMAP.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
SECURITY.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00
TODO.md [chore] Rename the user-facing project to Lestodon 2026-10-14 10:19:20 +02:00

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.

Lestodon, a ground-sloth skull with one cybernetic eye and a metal jaw.

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

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.

Screenshot of the web view of a profile in Lestodon, showing header and avatar, bio, and numbers of followers/following.

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.

the activitypub logo

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.

interaction policies settings

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.

markdown-formatted post

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
Blurple dark

Blurple light

Brutalist light

Brutalist dark

Ecks pee

Midnight trip
Moonlight hunt

Rainforest

Soft

Solarized dark

Solarized light

Sunset

Hacker dark

Hacker light

Programmer socks dark

Programmer socks light

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.

Grafana graph showing Lestodon heap in use hovering around 250MB and spiking occasionally to 400MB-500MB.

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).

See the docs for more info.

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.

Image Attribution and Licensing

Sloth logo by Anna Abramek.

Creative Commons License
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):

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

the gnu AGPL logo

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