Platform
Chat integrations
InRoots is native on Matrix and speaks Slack and Teams through their own APIs. People post where they already talk; the bot answers in the same place.
Your Matrix server and K9 Chat
- The bot is a normal account on your homeserver using the client-server API; K9 Chat and any other Matrix client work unchanged.
- Direct messages are end-to-end encrypted with Megolm; new DM rooms are created encrypted and a startup audit upgrades old ones.
- Rooms are typed: standup, PTO, urgent, admin, plus a manager room per team and a fallback room for escalations.
- Presence, avatars and display names are read live from the homeserver; a drift between the chat display name and the local record is flagged.
- Additional bot identities each run their own client with their own key store and listen only to their assigned rooms.
- Reactions on standups are read for kudos. Voice messages can be transcribed when voice is enabled.
Slack
- Workspaces are installed through OAuth; multiple workspaces are supported and each bot token is encrypted at rest.
- Inbound messages are dispatched through the same handler as Matrix, so a check-in typed in Slack is parsed identically.
- A /standup slash command opens a modal for the check-in; leave requests get approve and deny buttons.
- Slack, and the channel mirror, are available on the Pro plan and above.
Microsoft Teams
- One Teams adapter serves every tenant. Each customer registers their own Azure bot and pastes the credentials, which are encrypted at rest; a manifest package is generated for upload.
- Inbound activities are authenticated against the Bot Framework metadata, the sender is resolved to a person (by directory ID, then email, then display name, else a placeholder user), and check-ins and sign-offs are written like any other.
- Conversation references are saved per person so the bot can message people proactively.
- Teams is available on the Enterprise and self-hosted plans.
Outbound only, through the WhatsApp Business Cloud API: on-call escalations and support-ticket pages use a template message to the person’s number from their profile. Credentials are stored encrypted; a test send verifies them; an inbound webhook endpoint maps a sender phone back to a profile.
Same commands everywhere
The self-scorecard command works on every channel, and the check-in and sign-off formats are the same.
/pulse me sign off pto 2026-08-11 to 2026-08-13