Channels
Channels let you talk to the same Elowen agent from Discord, Telegram, Microsoft Teams, or WhatsApp. They are platform plugins that adapt inbound messages into the same brain-turn pipeline the Web UI and CLI use — one runtime, one memory, one policy behind every surface.
A sender must be mapped to an Elowen role policy before the bot answers. Unmapped senders are silently ignored. This is deny-by-default: nobody gets agent access until you grant it.
Pick your channel
- Discord — a bot in your server, role-mapped per Discord role.
- Telegram — a long-polling bot you message directly or in groups.
- Microsoft Teams — a webhook bot for your org, identity-mapped via Entra.
- WhatsApp — a paired account for direct and group chats.
Shared behavior
All channels share these traits:
- Reactions — 👀 while thinking; ✅/❌ when done on Discord and WhatsApp, 👍/👎 on Telegram (its reaction emoji set is limited). Toggle with
reactions. - Runtime footer — a small "model · context %" line under the final reply (toggle with
runtimeFooter) - Reasoning — stream extended-thinking output into the progress bubble (toggle with
showReasoning, off by default) - AskUserQuestion — when the agent needs a decision, it posts a prompt and waits for a reply (button click on Discord, inline-keyboard tap on Telegram, Adaptive Card tap on Teams, numbered reply on WhatsApp).
askTimeoutMscontrols how long it stays open. - Language — service messages (
/new,/model, placeholders) inen,csorsk, selectable from a dropdown in the plugin settings. /context— bind the current channel/chat to one of your existing conversations from any surface (CLI, Web UI, another channel). The command opens a paginated picker of your own conversations (Discord and Teams use native select menus with prev/next buttons; Telegram uses inline-keyboard pages; WhatsApp uses a numbered text menu you reply to). Picking one moves the channel's session onto that conversation's history, so you can continue a CLI or Web chat right from your phone. Operator-gated (admin role policies only); ownership is re-verified server-side.
How conversations work in channels
Channels are shared spaces, so the agent handles them differently from a private CLI or Web UI session. These rules apply on every platform.
Who is talking
Every message in a shared channel arrives prefixed with the sender's display name, so the agent always knows who said what. It follows multi-user etiquette: it addresses you by name, keeps each sender's requests separate, and never mixes one person's context into another person's answer.
Linked identity
When a platform account is linked to an Elowen account, that person is treated as themselves: their own project policy, tool permissions, and personal memory apply, bypassing the channel's role policy. Unlinked senders get no memory recall at all — in a shared space the agent never leaks one person's remembered facts into replies visible to everyone.
/context moves, not copies
Binding a conversation into a channel with /context replaces the channel's session: the channel adopts that conversation's full history and the old channel session is archived. Nothing is duplicated — the conversation itself moves. This works across surfaces, so a conversation started in the CLI can continue in Discord or on your phone. See Slash Commands for the full command reference.
Steering mid-turn
If you send another message while the agent is still working on yours, it folds into the running turn as additional input — you can steer, correct, or add detail without waiting. A message from a different sender does not interrupt; it queues and gets its own turn.
Idle rollover
When a channel stays quiet past the idle cutoff (30 minutes by default), the next message starts a fresh session. The previous conversation is not lost — it stays browsable in your conversation list and can be pulled back with /context.
Delivery details
- The platform shows a typing indicator while the agent works, so the channel can see it is busy.
- Long answers are split at the platform's message-length limit without breaking fenced code blocks or tables mid-block.
- When you reply to or quote a message, the quoted content arrives with yours as context, so the agent sees what you are referring to.
- Generated images are uploaded as real platform attachments, not links.
Questions in channels
When the agent needs a decision, its question renders as numbered options in the channel. An Other option (or free-text reply where the platform supports it) captures a custom answer. Only the person the question was addressed to — or an admin — can answer; replies from anyone else are ignored for that question.
Security model
- Sender identity is resolved before any turn runs. No mapping = no access.
- Each policy can restrict tools, models, and project scope independently.
- Provider credentials stay on the daemon; they are never exposed to the chat platform.
- The same RBAC, approval gates, and autonomy levels apply regardless of which surface the message arrives on.