hyperhive/hive-matrix-mcp/README.md

36 lines
1.6 KiB
Markdown

# hive-matrix-mcp
Per-agent matrix integration: a long-running daemon
(`hive-matrix-daemon`) that holds a matrix-sdk `Client` + sync loop per
configured account and serves the matrix tool surface (`send_message`,
`send_dm`, `list_rooms`, `read_room`, …) directly over streamable-http.
No stdio bridge, no per-turn respawn — claude reconnects to the same
stable URL every turn.
## When to use it
Look here when changing matrix tool behaviour, multi-account handling,
or the incoming-event → todo/wake path. The daemon owns the whole
lifecycle: per-account bring-up (`accounts.rs`, `client.rs`), the sync
loop that sweeps invites/unread rooms into the harness's in-agent todo
socket (`timeline.rs`, `wake.rs`), and the MCP tool router itself
(`mcp.rs`).
## Shape
One bin (`hive-matrix-daemon`, `src/main.rs`) built from the crate's
own lib (`src/lib.rs`):
- **`accounts.rs`** — multi-account config + the account→`Client`
dispatch registry (`main` is always the hive-internal primary; extras
come from `HIVE_MATRIX_ACCOUNTS`).
- **`client.rs`** — session restore, stale-token recovery, avatar sync,
cross-signing bootstrap.
- **`timeline.rs`** / **`wake.rs`** — per-sync-callback invite/unread
sweeps that push todos onto `HIVE_AGENT_SOCKET`.
- **`handlers.rs`** — per-tool dispatch, returns `protocol::DaemonResponse`.
- **`mcp.rs`** — the `rmcp` tool router + `serve_http`, resolving each
call's optional `account` arg against the registry before calling
into `handlers`.
- **`paths.rs`** — per-agent path resolution (token file, matrix-sdk
state dir, homeserver URL, accounts snapshot).