The Idea
BinktermPHP already speaks FTN, BinkP, Gemini, QWK, MCP, and PacketBBS. ActivityPub would add the Fediverse — giving every echo area and BBS user a presence on Mastodon, Pleroma, Misskey, and compatible platforms without any extra client software.
A Mastodon user could follow an echo area the same way they follow any account. New echomail would appear in their home feed. They could reply from Mastodon and the reply would land in the echo area as a new message. For a BBS that carries networked FTN areas, that reply could propagate across the entire FTN.
This is not a chat bridge or a scraper. It is native federation: the BBS becomes a first-class Fediverse node.
How It Would Work
Echo Areas as ActivityPub Group Actors
Each echo area gets an ActivityPub identity: @COOKING@bbs.example.com. The area's Actor type would be Group, matching how platforms like Lemmy and Guppe federate communities.
- Outbound: when a new echomail message arrives (from FTN or posted locally), the BBS signs and delivers an ActivityPub
Create(Note) activity to every remote follower of that area's Actor.
- Inbound: when a Mastodon user sends a
@mention to the group Actor or boosts into it, the BBS receives the Create(Note) activity via the inbox, converts it to an echomail message attributed to the sender, and stores it locally. If the area is linked to a networked FTN tag, the message can be gated outbound into the FTN as well (with appropriate flagging and sysop control).
BBS Users as ActivityPub Person Actors
Each BBS user gets a Fediverse identity: @username@bbs.example.com. Their public echomail posts become Note objects in their ActivityPub outbox. Remote users could follow them to see their posts in their home timeline.
Webfinger Discovery
.well-known/webfinger allows Mastodon to look up acct:username@bbs.example.com or acct:AREA_TAG@bbs.example.com and resolve it to the Actor's profile URL. This is the standard entry point for Fediverse discovery.
HTTP Signatures
All outbound ActivityPub deliveries are signed with the Actor's private key per the HTTP Signatures spec. Inbound activities are verified against the sender's public key before being accepted.
Architecture Fit
BinktermPHP already has the infrastructure this needs:
| Needed |
Already exists |
| Per-user identity and public profiles |
users table, public profile API |
| Inbound message storage |
echomail table, MessageHandler |
| Outbound delivery queue |
data/outbound/, daemon model |
| Event bus for triggering outbound sends |
sse_events / BinkStream |
| Admin daemon for config and key storage |
admin_daemon.php |
| HTTP route layer |
SimpleRouter, routes/api-routes.php |
| Sysop feature toggles |
BBS Settings admin UI |
A new activitypub_daemon.php (or a lightweight addition to admin_daemon.php) would handle outbound delivery. Inbound ActivityPub arrives via standard HTTP POST to each Actor's inbox endpoint, handled by a new route group.
Actor keypairs (one per user, one per echo area) would be generated on first use and stored via the admin daemon, following the same pattern as MCP bearer keys.
Sysop Controls
ActivityPub federation should be entirely opt-in and granular:
- Global toggle — enable/disable the feature entirely from Admin → BBS Settings
- Per-area federation — sysop chooses which echo areas are federated; private or sysop-only areas would never be exposed
- Inbound gating — sysop controls whether inbound Fediverse posts are accepted into an area, and whether they are gated into the FTN
- User opt-out — users can opt out of having a public Fediverse Actor
Why This Is Worth Doing
The Fediverse has millions of active users who will never install a Telnet client or learn what FTN means. ActivityPub turns every federated echo area into a community that is discoverable from any Mastodon search. A new BBS sysop gets an audience on day one — not just the small pool of people already looking for BBSes.
It also completes a symmetry that already exists in the platform: BinktermPHP speaks every major protocol from the BBS era. ActivityPub is the protocol of the current decentralized web. Adding it makes BinktermPHP the bridge between those two worlds.
Prior Art
- Lemmy federates communities as Group Actors — the same model proposed here for echo areas
- Guppe is a lightweight ActivityPub group relay that demonstrates the pattern at minimal complexity
- WriteFreely federates blog posts as Notes — similar to what echomail federation would produce
Open Questions
- Should replies from the Fediverse carry a special attribution kludge line when gated into FTN, identifying the source network?
- Should echo area Actors have a configurable display name separate from the FTN area tag?
- Rate limiting: high-traffic FTN areas could produce significant outbound delivery volume — should there be a per-area follower cap or delivery rate limit?
- Should the BBS appear in Mastodon's instance directory?
This is an early idea and has not been reviewed for feasibility or scheduled for any release. Feedback and questions welcome.
The Idea
BinktermPHP already speaks FTN, BinkP, Gemini, QWK, MCP, and PacketBBS. ActivityPub would add the Fediverse — giving every echo area and BBS user a presence on Mastodon, Pleroma, Misskey, and compatible platforms without any extra client software.
A Mastodon user could follow an echo area the same way they follow any account. New echomail would appear in their home feed. They could reply from Mastodon and the reply would land in the echo area as a new message. For a BBS that carries networked FTN areas, that reply could propagate across the entire FTN.
This is not a chat bridge or a scraper. It is native federation: the BBS becomes a first-class Fediverse node.
How It Would Work
Echo Areas as ActivityPub Group Actors
Each echo area gets an ActivityPub identity:
@COOKING@bbs.example.com. The area's Actor type would beGroup, matching how platforms like Lemmy and Guppe federate communities.Create(Note)activity to every remote follower of that area's Actor.@mentionto the group Actor or boosts into it, the BBS receives theCreate(Note)activity via the inbox, converts it to an echomail message attributed to the sender, and stores it locally. If the area is linked to a networked FTN tag, the message can be gated outbound into the FTN as well (with appropriate flagging and sysop control).BBS Users as ActivityPub Person Actors
Each BBS user gets a Fediverse identity:
@username@bbs.example.com. Their public echomail posts becomeNoteobjects in their ActivityPub outbox. Remote users could follow them to see their posts in their home timeline.Webfinger Discovery
.well-known/webfingerallows Mastodon to look upacct:username@bbs.example.comoracct:AREA_TAG@bbs.example.comand resolve it to the Actor's profile URL. This is the standard entry point for Fediverse discovery.HTTP Signatures
All outbound ActivityPub deliveries are signed with the Actor's private key per the HTTP Signatures spec. Inbound activities are verified against the sender's public key before being accepted.
Architecture Fit
BinktermPHP already has the infrastructure this needs:
userstable, public profile APIechomailtable,MessageHandlerdata/outbound/, daemon modelsse_events/ BinkStreamadmin_daemon.phproutes/api-routes.phpA new
activitypub_daemon.php(or a lightweight addition toadmin_daemon.php) would handle outbound delivery. Inbound ActivityPub arrives via standard HTTP POST to each Actor's inbox endpoint, handled by a new route group.Actor keypairs (one per user, one per echo area) would be generated on first use and stored via the admin daemon, following the same pattern as MCP bearer keys.
Sysop Controls
ActivityPub federation should be entirely opt-in and granular:
Why This Is Worth Doing
The Fediverse has millions of active users who will never install a Telnet client or learn what FTN means. ActivityPub turns every federated echo area into a community that is discoverable from any Mastodon search. A new BBS sysop gets an audience on day one — not just the small pool of people already looking for BBSes.
It also completes a symmetry that already exists in the platform: BinktermPHP speaks every major protocol from the BBS era. ActivityPub is the protocol of the current decentralized web. Adding it makes BinktermPHP the bridge between those two worlds.
Prior Art
Open Questions
This is an early idea and has not been reviewed for feasibility or scheduled for any release. Feedback and questions welcome.