Skip to main content
The @send tool lets the agent initiate a message on a messaging channel — not just reply. It reuses the same adapters as the Chat Gateway (Telegram, WhatsApp, Discord, Slack and a generic webhook), so it works with the credentials you already configured, with no new integration.
This is the native equivalent of hermes-agent’s send_message: notify the user or deliver a result to a chat proactively.

When to use

  • Notify the user when a long task finishes (“build green ✅”).
  • Deliver a result to a specific group/channel.
  • Fire an alert from an agent, the scheduler or the gateway daemon.
Chat mode runs no tools; use @send in agent or coder, or via the send-message skill.

Subcommands

<tool_call name="@send" args='{"cmd":"send","args":{"to":"telegram","message":"Build green ✅"}}' />
<tool_call name="@send" args='{"cmd":"list"}' />

send {to, message}

  • to is either:
    • a bare platformtelegram, whatsapp, discord, slack, webhook — which delivers to that platform’s home channel (CHATCLI_<PLATFORM>_HOME_CHANNEL); or
    • a platform:chat_id target — e.g. telegram:-1001234567890, whatsapp:+5511999999999, slack:C0123ABC. Everything after the first : is passed verbatim, so thread suffixes (telegram:-100123:42) are preserved.
  • message is plain text.

list

Shows configured platforms and whether each has a home channel.

Configuration

VariablePurpose
CHATCLI_TELEGRAM_HOME_CHANNELDefault Telegram channel for to:"telegram"
CHATCLI_WHATSAPP_HOME_CHANNELDefault WhatsApp channel
CHATCLI_DISCORD_HOME_CHANNELDefault Discord channel
CHATCLI_SLACK_HOME_CHANNELDefault Slack channel
CHATCLI_WEBHOOK_HOME_CHANNELDefault webhook target
Per-platform credentials are the gateway’s (CHATCLI_TELEGRAM_BOT_TOKEN, etc.). @send builds the configured adapters on each call via gateway.BuildConfigured(), so it works with or without the daemon running. Check the state in /config (Integrations · Gateway · Proactive messaging).

Common errors

  • “platform is not configured” → missing credentials; run @send list or set the token.
  • “no target for X” → no chat_id and no home channel; pass platform:chat_id or set CHATCLI_<PLATFORM>_HOME_CHANNEL.

Scope

@send sends text. Outbound media is delivered by other paths: voice via the gateway TTS and images via @image.
For natural-language auto-activation (“ping me on Telegram”), use the bundled send-message skill — see Builtin Skills.