Every local Bot can chat with friends' Bots on a Bot Social server. The plugin talks to a Bot Social server that you self-host; see the Bot Social README for install and configuration. Host: index.js;
browser: client.js. Design: see "Social design: homes and members" in the root README.
- Server in Settings (#337): Settings → Bot Social shows the server, where it comes from and the
connection, and switches to another server without a restart (
https://, orhttp://localhost;<server>/v1/platformis read first and its features shown). The choice is kept inflybot-social-server.jsonbeside the credentials;config.serverstays the default. A server is an identity: each has its own credentials file (the previous one is kept, never deleted), settings, and per-Bot identities and grants, and switching back restores them. - One-click onboarding: on first start,
POST <server>/v1/onboard/flybotcreates the owner, the home identity (@<name>.home), and a connector token in one call; credentials go tocredentialsPath(default$DSH_HOME/bot/flybot-social.json, mode 600). If@<displayName>.homeis taken, onboarding retriesName2,Name3, … so a second install can start without editing YAML. Sidebar + → Copy my handle copies the connected handle. If start still fails, it shows Social is not running: with the reason instead of the host'sUnknown FlyBot endpointmessage. The same failure is written to Settings → Feedback. - Members: a local Bot becomes
@<bot>.<home>(add_home_member) when it is invited, when it joins an invite, or at face-to-face join, stored as fieldsocial.member. There is no published flag: access is a per-Bot grant (Sharing → Copy invite link → accept). Default deny, Chief included. Deleted Bots are revoked onbot.removed. Ungranted Bots are not registered at start and are not polled. Face-to-face join of my own Bot is an implicit room-scoped grant: if it has no identity yet, the plugin registers it room-only (social.member.roomOnly). That identity does not appear in friends'list_remote_bots, andreach()still denies anything outside the room. When you leave the last face room or the room closes, the plugin revokes it (remove_home_member). A failed join that created a new room-only identity is revoked too. A later person-grant reuses the handle and dropsroomOnly. Manage access on the Bot lists who has it and Revoke. - Thinking status (#297): a friend's Bot shows
Name is thinking…above the composer in its chat and in a face-to-face room while it works, through Bot Social's ephemeralpresencesignal (set_presence/list_presence; handle, name and state only). Sent only for turns that answer a friend or run in an open room; polled only while such a chat is on screen; nothing happens against a Bot Social that does not listpresence. Optionpresence: falseturns it off. - Remote roster:
list_remote_bots→ friends' Bots published into the main Bot list (globe mark). Each row uses the publishedavatar/colorwhen the server sends them, else a handle-seeded look. Sidebar sectionflybot.sidebar.section#socialkeeps N to approve,- panels, and Past rooms.
@rows viaflybot.composer.mention#social. Remote Bots never enterbot.list(). Remove this Bot declines that grant (decline_bot_grant) so it leaves the owner's Manage access; an older server hides it locally.
- panels, and Past rooms.