Mattermost
Mattermost is the self-hosted Slack-like option when you want familiar team chat but keep the server in your own environment. Fased connects with a bot token, listens over Mattermost’s event stream, and applies the standard DM, channel, and mention controls from the gateway. Status: bundled channel extension for DMs, channels, and groups over bot-token auth plus live events.Setup from Agent > Channels
Mattermost ships with Fased as a local bundled channel extension. You do not need to download an npm package in a normal install. Open Agents, select the Agent, then use Agent > Channels > Mattermost. Enter the base URL and bot token, save the channel, then restart the gateway if the UI reports that the runtime still needs to load.Quick setup
The minimal path is one Mattermost bot user, one base URL, and one bot token. Start there before adding multi-account or per-channel policies.- Create a Mattermost bot account and copy the bot token.
- Copy the Mattermost base URL (e.g.,
https://chat.example.com). - Open Agent > Channels > Mattermost, enter the credentials, and save.
- Restart the gateway if the UI asks for it.
Environment variables (default account)
Set these on the gateway host if you prefer env vars:MATTERMOST_BOT_TOKEN=...MATTERMOST_URL=https://chat.example.com
default). Other accounts must use config values.
Chat modes
Mattermost responds to DMs automatically. Channel behavior is controlled bychatmode:
oncall(default): respond only when @mentioned in channels.onmessage: respond to every channel message.onchar: respond when a message starts with a trigger prefix.
oncharstill responds to explicit @mentions.channels.mattermost.requireMentionis honored for legacy configs butchatmodeis preferred.
Access control (DMs)
- Default:
channels.mattermost.dmPolicy = "pairing"(unknown senders get a pairing code). - Approve via:
fased pairing list mattermostfased pairing approve mattermost <CODE>
- Public DMs:
channels.mattermost.dmPolicy="open"pluschannels.mattermost.allowFrom=["*"].
Channels (groups)
- Default:
channels.mattermost.groupPolicy = "allowlist"(mention-gated). - Allowlist senders with
channels.mattermost.groupAllowFrom(user IDs recommended). @usernamematching is mutable and only enabled whenchannels.mattermost.dangerouslyAllowNameMatching: true.- Open channels:
channels.mattermost.groupPolicy="open"(mention-gated). - Runtime note: if
channels.mattermostis completely missing, runtime falls back togroupPolicy="allowlist"for group checks (even ifchannels.defaults.groupPolicyis set).
Targets for outbound delivery
Use these target formats withfased message send or cron/webhooks:
channel:<id>for a channeluser:<id>for a DM@usernamefor a DM (resolved via the Mattermost API)
Reactions (message tool)
- Use
message action=reactwithchannel=mattermost. messageIdis the Mattermost post id.emojiaccepts names likethumbsupor:+1:(colons are optional).- Set
remove=true(boolean) to remove a reaction. - Reaction add/remove events are forwarded as system events to the routed agent session.
channels.mattermost.actions.reactions: enable/disable reaction actions (default true).- Per-account override:
channels.mattermost.accounts.<id>.actions.reactions.
Multi-account
Mattermost supports multiple accounts underchannels.mattermost.accounts:
Troubleshooting
- No replies in channels: ensure the bot is in the channel and mention it (oncall), use a trigger prefix (onchar), or set
chatmode: "onmessage". - Auth errors: check the bot token, base URL, and whether the account is enabled.
- Multi-account issues: env vars only apply to the
defaultaccount.