36 lines
1.6 KiB
Markdown
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).
|