GrainFed

Self-hosted · federated · open source

Photo sharing for your community, on the open social web.

GrainFed is a photo-sharing platform you run yourself. Your members post photos and albums, tell stories, build collections and talk to each other — and anyone on Mastodon, Pixelfed or the rest of the Fediverse can follow them. You get the moderation and admin tools to run it well.

A GrainFed profile: a grid of photographs, follower counts and a bio
The home feed on a phone

Everything a photo community needs

Photos and albums

Post one picture or a set, with captions, hashtags, mentions and alt text for the people who need it.

Stories

Short-lived photos that disappear on their own, with a tray of who has one at the top of the feed. Switch them on per instance.

Collections

Group posts into named collections on a profile, and add to or remove from them whenever you like.

Direct messages

Private conversations between members, and with people on other servers.

Discovery

Search people, hashtags and posts. Local and home timelines in time order, with no algorithm deciding what you see.

Profiles and portfolios

A grid profile, a portfolio page and an Atom feed of your posts for anyone who wants to follow without an account.

A feed about the pictures

Photos come first. Your home feed is the people you follow, newest first. Like, comment, boost to your followers, or bookmark for later.

  • iPhone photos (HEIC) and modern formats (AVIF, WebP) upload and just work
  • Works in any browser, and every screen also renders without JavaScript
  • The same interface, sized for a phone, in the same page
The home feed: a stories tray and a full-width photograph with its actions and caption
A single post with likes, boosts, comments and a comment box

Conversation, near and far

Comments and replies thread properly, and notifications tell you who liked, boosted, mentioned or followed you — whichever server they are on.

  • Follow, and be followed by, people on Mastodon, Pixelfed and any other ActivityPub server
  • Mentions and replies reach them; their replies reach you
  • Quote posts only with the quoted person's consent

Safe by design, private by choice

Every member decides who can see, find and contact them, and every server decides what it will host.

  • Private accounts that approve followers; opt out of search engines and of being indexed elsewhere
  • Block accounts, whole servers or keywords; mute; filters; parental controls
  • Two-factor sign-in, a data export, and moving your account to another server
  • Captcha, a sign-up honeypot, a minimum age and curated applications to keep spam out
The privacy settings page: private account, search engines, direct messages, follower counts, featured collections and quote posts

Run it like you mean it

The admin panel is built for the person who is on the hook when something goes wrong. What needs attention is the first thing you see, and nothing on it is guessed.

Who joins

Open sign-up, curated applications you approve or decline with a message, invites, starter packs for newcomers, captcha, and a minimum age.

Who you federate with

Instance blocks and limits, relays for hashtags and servers, shared block lists, and a record of every delivery and the answer it got.

Whether mail works

Every email the instance tries to send is logged with what the mail server said, and one button sends a test to yourself.

How it performs

Expensive public counts are cached for a time you choose, and a reversible optimiser finds the indexes your data wants.

Works with the apps people already use

GrainFed speaks Pixelfed's own API and the Mastodon API, so the official Pixelfed apps and the many Mastodon-compatible clients work against it without changes. That is 301 routes that are a hard external contract — the APIs, federation, the admin panel and the public pages — and all of them are served.

Notifications on a phone

Pixelfed-compatible, and it keeps up

GrainFed targets Pixelfed 0.14.4 and follows each release: its sign-in flow, direct messages, captcha and new federation standards are all here. If you already run Pixelfed you can switch to GrainFed on the same database without your members noticing, and switch back.

And under the hood

One programA single static binary, not five services. About 35 MB of memory on the live instance, on one core.
Redis optionalEverything user-visible can be rebuilt from the database alone.
Open sourceAGPL-3.0, built on Pixelfed's own schema and wire formats, and not affiliated with Pixelfed.

Start a photo community of your own

Install it on a small server, or move an existing Pixelfed over without touching the database.