F.1: GoToSocial bundle (fediverse microblog pilot)#10
Open
kh0pper wants to merge 1 commit intof0-caddy-federation-helpers-and-hardware-gatefrom
Open
F.1: GoToSocial bundle (fediverse microblog pilot)#10kh0pper wants to merge 1 commit intof0-caddy-federation-helpers-and-hardware-gatefrom
kh0pper wants to merge 1 commit intof0-caddy-federation-helpers-and-hardware-gatefrom
Conversation
First federated app on top of F.0. GoToSocial is the lightweight
single-binary ActivityPub server (512 MB min / 1 GB recommended), chosen
as the pilot per the Phase 2 plan — proves the full template end-to-end
(shared docker network, hardware gate, rate limiter, consent text,
queued moderation, media prune) on Pi hardware before the 7 heavier
bundles follow.
Bundle (bundles/gotosocial/):
- manifest.json consent_required: true with full EN/ES blast-radius
text (replication irreversibility, defederation risk,
media cache growth). min_ram_mb=512, recommended=1024.
requires.bundles: ["caddy"] — F.0 hardware + dep gates
refuse install if Caddy is missing or RAM insufficient
- docker-compose.yml pinned 0.18.0; joins external crow-federation
network; NO host port publish (Caddy reaches
gotosocial:8080 by service name); mem_limit 1g; SQLite
default backend for Pi simplicity
- server/server.js 14 MCP tools following the plan's verb taxonomy:
gts_status / gts_post / gts_feed / gts_search /
gts_follow / gts_unfollow / gts_block_user /
gts_mute_user / gts_block_domain / gts_defederate /
gts_review_reports / gts_report_remote /
gts_import_blocklist / gts_media_prune
Content + inline moderation wrapped with shared
rate-limiter. Destructive instance-level verbs
(defederate, block_domain, import_blocklist) QUEUED
into moderation_actions with notification; operator
confirms from Nest panel before the action fires.
Pattern: knowledge-base-style try/catch lazy imports
of shared deps so installed-mode bundles don't hard-
fail when servers/shared/... isn't resolvable
- skills/gotosocial.md triggers, tool surface, Caddy-expose recipe,
moderation workflow, federation etiquette warnings,
troubleshooting
- panel/ status + federation peer count + public/home timeline
preview. XSS-safe (textContent + createElement only).
Moderation queue confirmation UI deferred to F.11
- scripts/ backup.sh (sqlite online backup + media tar),
media-prune.sh (daily cron, retention from env),
post-install.sh (network verify + next-step output)
Platform wiring:
- registry/add-ons.json entry with full env_vars schema + notes
- servers/gateway/dashboard/panels/extensions.js three new
category colors: federated-social (magenta),
federated-media (pink), federated-comms (violet).
Matching CATEGORY_LABELS pointers
- servers/gateway/dashboard/shared/i18n.js EN/ES for the three
new category keys
- servers/gateway/dashboard/nav-registry.js federated-social/comms
→ core sidebar group, federated-media → media
- skills/superpowers.md EN/ES trigger row for gotosocial
- CLAUDE.md Skills Reference entry
Verified:
- node --check on all changed files
- docker compose -f bundles/gotosocial/docker-compose.yml config parses
- JSON validation: registry/add-ons.json
- npm run check passes
- MCP server boots in isolation (createGotosocialServer resolves with
lazy shared-dep fallback; no main-repo dependency leak)
Deferred to F.11 / live verification:
- Moderation queue confirmation UI (Nest panel) — bundle writes pending
rows; manual DB apply until the queue UI lands
- Live install + Caddy add_federation_site + federated round-trip to
@Gargron@mastodon.social on grackle
This was referenced Apr 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First federated app on top of F.0. GoToSocial is the lightweight single-binary ActivityPub server (512 MB min / 1 GB recommended), chosen as the pilot per the Phase 2 plan — proves the full template end-to-end (shared docker network, hardware gate, rate limiter, consent text, queued moderation, media prune) on Pi hardware before the 7 heavier bundles follow.
Stacked on #9 (F.0). Merge F.0 first.
What ships
Bundle (`bundles/gotosocial/`)
Platform wiring
Design notes
Test plan
Live verification happens as part of F.1 merge validation on grackle; deferred here until F.0 is merged and the Caddy bundle is reinstalled with the new tools.