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,DigestThe 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/inboxThe 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.