swarm-matrix-client

The client-server API calls against a Matrix homeserver, shared by the binaries that make them: swarm-matrix-ctl (inside the matrix container, for a hive's sender account) and swarm-controller (for each agent's account, with the swarm's own appservice token).

Three appservice calls: register an account as the appservice, log in to an existing one as the appservice, and ask a token who it is. Both mints pin the device id hyperhive-<localpart>, so a second login replaces that device's token instead of adding a device.

swarm-controller also logs an operator-linked account in with its password (password_login) and invalidates its token (logout) on whatever homeserver the operator names. Neither call is an appservice call, so neither carries the appservice token.

hive-c0re provisions the hive Space and chat room with the room calls (joined_rooms, room_state, put_state, create_room, invite, resolve_alias), and hive-matrix-mcp recovers a session's user and device id with whoami_session. Each takes the caller's reqwest::Client, so the caller sets its own timeout; client() is the 10 second default.

🩸 A secret is a path, never a value

Every error here is built from the response's status and its errcode, never its body: a successful /register or /login body is an access token, and an error body is one malformed response away from being the same bytes.