Bonfire
Bonfire is a federated, open-source social platform designed to give communities real autonomy and participatory governance over their digital spaces. Bonfire Social 1.0 was released at the end of 2025.
Bonfire isn’t just another federated social app, it’s a modular framework for building digital spaces governed by communities. Bonfire Social is the first “flavour” to reach 1.0, and is a starting point for communities who want a space of their own, that’s locally governed and fully customisable, yet connected to the wider fediverse.
A flavour is a pre-configured bundle of extensions that defines which features are included, how they behave, and what defaults are in place. Besides Bonfire Social, other flavours like Open Science Network and Bonfire Community are already in development, and people can also create their own extensions and flavours.
From day one, Bonfire has been designed to go beyond microblogging. We see social networking as social infrastructure rather than just social media, and have experimented with extensions for coordinating tasks, exchanging resources, and more.
Features
Many features in Bonfire will feel familiar: feeds, profiles, following users, sharing posts, flagging or blocking content. Others might be new, like rich-text posts, fine-grained access control, and more:
Content, Feeds & Discussions
- Custom feeds: Users can create their own custom feeds using a simple interface. No coding required. Filter and sort content by type, circle, date, engagement level, source instance, and more. Save presets and choose which ones appear in your sidebar and in what order.
- Long-form publishing: Read and write in-depth articles directly in Bonfire, with a rich text editor, title, and cover image support. Articles from federated blogging platforms appear seamlessly in your feed.
- Feed presets for different content types: Dedicated feed presets for articles, events, and books, with sorting options like most liked or most replied.
- Follow hashtags: Discover and join conversations by following hashtags, bringing relevant posts into your feed without needing to follow specific people.
- Replies in feeds: Choose how replies display in your feed: show the parent post, the original thread starter, or just a label.
- Nested discussions: Threaded conversations where replies can branch into focused sub-threads without losing context. Ideal for deep discussions, collaborative work, or following a conversation’s collective train of thought.
- Scheduled posts: Plan ahead and publish posts at a set time.
- Configurable dashboard widgets: Set up your homepage with widgets like trending links, recent articles, and suggested profiles, arranged by drag and drop.
- RSS/Atom feeds: Subscribe to Bonfire feeds via any RSS reader.
- Full-text search across posts, discussions, and profiles (users can opt out of indexing).
- Translation: Works in Chrome browser via local engine; with LibreTranslate and DeepL API integration available as well.
People & Privacy
- Circles: A circle is simply a list of people. Bonfire includes default circles like “local users” or “people I follow,” and you can define your own. Circles are private by default but can be shared.
- Boundaries: Control who can see and interact with your content. For example, share a post with several circles but only allow replies from a specific one, or make a post public but invisible to specific people. Boundaries also interoperate with GoToSocial’s interaction controls and Mastodon’s quote authorisations.
- Consent-based quoting: Use boundaries to define who can quote your post, who must request first, or who cannot request at all. Give or withdraw consent at any time.
- Multiple profiles: One account can create multiple independent profiles, each with its own followers, content, and settings. Shared profiles can also be managed by multiple accounts, ideal for collectives or project teams.
- Direct messages & private group discussions: With the same nested thread features as regular posts.
- Custom roles and permissions: Distribute admin powers across community members.
- Single sign-on: Bonfire supports OpenID Connect and OAuth2 authentication, with tested integrations for ORCID, Zenodo, and more. Bonfire can also act as an SSO provider itself.
Customisation
- Themes: Ships with 16 colourful themes, but you can go further: design your own colours, fonts, and layout styles.
- Extension management: Extensions can be enabled or disabled by admins and by users. For example, you can disable likes or boosts if they don’t suit your needs.
- Private by default: New instances start as invite-only, giving admins control over membership from day one.
Federation, Interoperability & Data Portability
- ActivityPub federation: Bonfire federates with Mastodon, PeerTube, Mobilizon, and many more. Protocol bridges also connect to Bluesky.
- Federation status dashboard: Track outgoing and incoming federated activities, making it simpler to monitor federation health and troubleshoot issues.
- Comprehensive migration: Export and import follows, blocks, circles/lists, bookmarks, likes, and boosts. A dedicated dashboard helps you follow the progress of data imports and migrations.
- Post import: Bring your posts (and optionally their replies) with you when moving to Bonfire. Imported posts keep their original dates and links and are added to your timeline in the right order.
- Community-curated blocklists: Import blocklists to ease moderation.
Work in progress / up next
These are either partially shipped, are in active development, or are our immediate next priorities with existing collaborations and prototyping:
Federated Groups: Groups are being co-designed with Princeton HCI, Knowledge Commons, Jacobin, and other pilot communities. Groups will have their own rules, roles, and shared moderation, and federate across Bonfire instances and other platforms.
End-to-End Encryption: Standards-based MLS encryption for DMs and group chats, developed with the Social Web Foundation and another ActivityPub platform to ensure interoperability.
Events & Calendars: Being co-created with LAUTI, designed to interoperate with Mobilizon, Gancio, and others. Supports recurring/nested events, multi-language content, and linking events to groups and places.
Geosocial Extension: Location-based activities (like events), with map views and location-based feeds.
Polls: Viewing and voting on remote polls works now; creating them locally is coming soon.
Mastodon-compatible API: Will allow interaction with Bonfire through dozens of existing fediverse clients on mobile and desktop.
ActivityPub client-to-server (C2S) API: Opening new possibilities for third-party app interaction.
Custom emoji support.
Future goals
These are longer-horizon items from our crowdfunding stretch goals, planned and with partners on board, but dependent on funding and further co-design:
Governance tools: Consent-based proposals, discussion, and decision-making tools, from quick polls to deep deliberation. Designed with Princeton HCI and UXDI, informed by sociocracy and tools like Ukuvota and Loomio. Adaptable methods rather than one-size-fits-all voting, with transparent records and federation support.
Shared moderation infrastructure: Cross-instance, cross-platform safety tooling co-designed with IFTAS, the ActivityPub Trust & Safety Taskforce, FediMod FIRES, Newsmast, and the Trust & Safety Foundation. The goal is coordinated triage and response without losing local autonomy.
Mutual aid networks: BuyNothing-style gifting with location-based offers/requests, resource matching, and interoperable accounting via ValueFlows. Co-designed with Mutual Aid Networks and Gifting with Integrity communities, with potential bridges to existing networks like TrashNothing.
Bluesky/ATproto interop & migration: Deep interoperability between Bonfire and ATproto. Built with A New Social (BridgyFed/Bounce).
Living memory (community archives): Federated community archives linking stories, places, events, and media. Initiated by “O alta poveste,” building on their years of R&D to bring participatory grassroots history to the federated web, with privacy and consent controls for contributors.
Gaia: Environmental sensor data, citizen science, and open datasets appearing in feeds as stories, visuals, and alerts. To be co-created with ecologists, artists, and sensor networks to turn environmental data into community dialogue and stewardship.
Collaboration infrastructure: Building upon the ValueFlows vocabulary to bring peer-to-peer coordination tools into Bonfire. We’d like to use Bonfire to coordinate development, track work, resources, and shared inventories through federated task lists and Kanban boards.
Tech stack
Built in Elixir on Erlang/OTP, Bonfire federates via ActivityPub and is licensed under the AGPL-3.0.
Backend language: Bonfire is written in Elixir, running on Erlang/OTP, a functional programming language designed for building reliable systems. The entire stack (including the web frontend) is built with Elixir.
Web framework & frontend: We use the Phoenix web framework with LiveView and Surface for UI components and views.
Database: Bonfire uses PostgreSQL for most data storage. We have a notable approach to primary keys: all Bonfire objects use a ULID as their primary key, and we use the Needle library to reference any object by its primary key without knowing what type it is beforehand. This allows things like following or liking many different types of objects (not just users or posts).
APIs: Some extensions use the Absinthe GraphQL library to expose an API. Bonfire leverages GraphQL for economic activities in particular (ValueFlows). We’re also building a Mastodon-compatible REST API and an ActivityPub client-to-server (C2S) API.
Federation: We maintain a standalone ActivityPub library for Elixir, which other projects can use to implement federation. It’s a modular implementation with a layered architecture and adapter pattern, so it can be integrated into various Elixir applications while handling the complexities of federation.
License: GNU Affero General Public License v3 (AGPL-3.0).
Extension architecture
The extension system is central to how Bonfire works. The code is broadly composed of namespaces, many of which are packaged as “extensions” living in separate git repositories and included in the app as dependencies. Each extension typically contains:
- Data schemas and migrations
- Context modules: Core logic, often organised around an object type
- UI components and/or views
- LiveHandlers: For handling frontend events in the backend
- Config templates: Copied into an app flavour’s config
Extensions can be enabled or disabled both by instance admins and by individual users. A “flavour” is essentially a curated bundle of extensions with specific defaults and config, so creating a new flavour means choosing which extensions to include and how they’re configured.
Beyond extensions, we also build lower-level libraries extracted for general use outside Bonfire, like the ActivityPub library, the Needle/Pointers library for universal foreign keys, and various Elixir utilities.