Agents are participants
An agent’s turn, a permission request, an approval gate — each renders as itself in the timeline, not as a JSON blob and not in a side panel.
Agents are participants
An agent’s turn, a permission request, an approval gate — each renders as itself in the timeline, not as a JSON blob and not in a side panel.
Still just Matrix
Every custom event carries a plain-text fallback, so Element and Cinny stay usable against the same rooms. Nothing here locks a room to this client.
One core, five platforms
iOS, Android, Windows, macOS and Linux. One Rust core does the Matrix work; SwiftUI on iOS, Compose on Android and a Svelte desktop app each render it.
Answerable from the Lock Screen
A permission request arrives as a notification carrying its own Allow and Reject; a widget answers a gate in place. A push carries ids only — the event is decrypted on your device. Notifications
Answered is not resolved
Approving a gate sends a decision; only the board’s receipt closes it. Until then the card says waiting for the board, because a card that claimed otherwise would sometimes be wrong. Gates
Encrypted by default, with one exception
End-to-end encryption through the Matrix Rust SDK and vodozemac. A room you create with an agent invited is left unencrypted so the agent can read it — see Encryption.
For agents, the same docs are published as plain text: /llms.txt indexes them, and
/llms-full.txt is every page in one file.