Git Tools

Forgejo Federation Hit Beta And It's Wild

All articles
🐉🌐🤝

Self-hosted forges talking to each other. ActivityPub, but for code.

Plot twist: the fediverse just absorbed code hosting. Forgejo's federation feature hit beta this week and you can now open a PR on someone else's self-hosted forge from your self-hosted forge. No GitHub middleman, no account on their instance.

The Setup

Flip a flag in app.ini, restart Forgejo, and your instance starts advertising ActivityPub actors for every user and repo. Other federation-enabled forges can subscribe, follow, star, and eventually file PRs.

# /etc/forgejo/app.ini
[federation]
ENABLED = true
SHARE_USER_STATISTICS = true
MAX_SIZE = 4
ALGORITHMS = rsa-sha256,rsa-sha512,ed25519
DIGEST_ALGORITHM = SHA-256
GET_HEADERS = (request-target),Date
POST_HEADERS = (request-target),Date,Digest

The Money Pattern

The killer flow is following a repo on a different instance. You star it, your home feed picks up releases and issues, and notifications land in your own forge — no email digest, no third-party RSS scrape.

# follow a repo on another instance via the API
curl -X POST https://code.aidxn.dev/api/v1/repos/aiden/velocity/follow \
  -H "Authorization: token ${TOKEN}" \
  -d '{"actor": "https://codeberg.org/aiden"}'

# the inbox endpoint forgejo exposes
# https://code.aidxn.dev/api/v1/activitypub/repository-id/42/inbox

The Catch

It's beta and it shows. Cross-instance PRs are still flaky — comments sometimes don't round-trip, and CI runs only on the origin instance. Spam controls are minimal; if you federate openly you'll want allowlists. And mobile push notifications across forges basically don't exist yet.

The Verdict

Forgejo federation is the most interesting open-source story of the year. Self-hosting a forge stops feeling like an island the moment you can follow a maintainer on a different instance. Spin one up on a tiny VPS, flip the flag, and watch the network grow.

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.