openclaw-messaging
OpenClaw Messaging
Three messaging layers, from user-facing to agent-internal.
1. System Events (Most Common for Agents)
Notify the active agent session (Grimlock) of state changes, completions, or discoveries.
# Immediate delivery — agent processes NOW
openclaw system event --mode now --text "Deployed atproto-agents to prod. CF Worker live at agents.joelhooks.com"
# Batched — delivered on next heartbeat (default 15m)
openclaw system event --text "Non-urgent: test suite passing, 47/47 green"
# Wait for agent response
openclaw system event --mode now --text "Need decision: use D1 or KV for session state?" --expect-final --json
When to use: After shipping to main, completing a task, discovering something important, or needing a decision routed through the system agent.
2. Direct Messages (External Channels)
Send to Telegram, Slack, Discord, WhatsApp, Signal, and 12+ other channels.
Send
# Telegram (most common)
openclaw message send --channel telegram --target @joelhooks -m "Build complete, PR ready for review"
# Telegram with chat ID
openclaw message send --channel telegram --target 123456789 -m "Deployment finished"
# Slack
openclaw message send --channel slack --target "#dev-ops" -m "CI green, merging to main"
# With media attachment
openclaw message send --channel telegram --target @joelhooks -m "Architecture diagram" --media ./diagram.png
# Silent (no notification sound, Telegram only)
openclaw message send --channel telegram --target @joelhooks -m "FYI: background job done" --silent
# Dry run (preview without sending)
openclaw message send --channel telegram --target @joelhooks -m "test" --dry-run
Broadcast
Same message to multiple targets:
openclaw message broadcast --channel telegram --targets @joelhooks 123456789 -m "System maintenance in 5 min"
Read
Fetch recent messages from a conversation:
openclaw message read --channel telegram --target @joelhooks --limit 10 --json
openclaw message read --channel slack --target "#general" --limit 5
React / Edit / Delete
openclaw message react --channel slack --target "#dev" --message-id 1234 --emoji thumbsup
openclaw message edit --channel telegram --target 123456789 --message-id 42 -m "Updated text"
openclaw message delete --channel telegram --target 123456789 --message-id 42
3. Agent Invocation
Trigger an agent turn and optionally deliver the response to a channel.
# Trigger agent, get response in terminal
openclaw agent -m "Summarize today's PRs" --json
# Trigger specific named agent
openclaw agent --agent ops -m "Check deployment status"
# Trigger agent AND deliver reply to Telegram
openclaw agent -m "Generate status report" --deliver --reply-channel telegram --reply-to @joelhooks
# With thinking level
openclaw agent -m "Analyze error logs" --thinking high
# Target existing session
openclaw agent --session-id abc123 -m "Continue from where we left off"
4. Swarmmail (Agent-to-Agent)
Internal message queue for coordinating between swarm workers. Available as MCP tools within agent sessions.
swarmmail_init — Start mail session (call once at session start)
swarmmail_send — Send message to another agent
swarmmail_inbox — Check incoming messages
swarmmail_reserve — Lock files for exclusive editing
swarmmail_release — Release file locks
swarmmail_ack — Acknowledge message receipt
swarmmail_health — Check session health
Swarmmail is for inter-agent coordination only. For user-facing notifications, use openclaw message send or openclaw system event.
5. Directory Lookups
Find targets before sending:
openclaw directory self --channel telegram # Your bot's info
openclaw directory peers --channel telegram # Known contacts
openclaw directory groups --channel telegram # Groups the bot is in
openclaw directory peers --channel slack # Slack users
Quick Reference
| Goal | Command |
|---|---|
| Notify system agent (urgent) | openclaw system event --mode now --text "..." |
| Notify system agent (can wait) | openclaw system event --text "..." |
| Message user on Telegram | openclaw message send --channel telegram --target @user -m "..." |
| Message Slack channel | openclaw message send --channel slack --target "#channel" -m "..." |
| Send to multiple people | openclaw message broadcast --channel telegram --targets @a @b -m "..." |
| Trigger agent + deliver reply | openclaw agent -m "..." --deliver --reply-channel telegram --reply-to @user |
| Read conversation history | openclaw message read --channel telegram --target @user --limit 10 |
| Preview without sending | Add --dry-run to any send/broadcast command |
| JSON output for scripting | Add --json to any command |
Channel Support
Telegram, Slack, Discord, WhatsApp, Signal, iMessage, Google Chat, MS Teams, Mattermost, Matrix, Nostr, Feishu, Nextcloud Talk, BlueBubbles, Line, Zalo, Tlon.
Check active channels: openclaw channels status
Common Patterns
Post-deploy notification
openclaw system event --mode now --text "Shipped v1.2.3 to prod. Changes: new auth flow, fixed rate limiter."
openclaw message send --channel telegram --target @joelhooks -m "v1.2.3 live on prod"
Agent handoff with context
openclaw system event --mode now --text "Completed Phase 1 encryption. All tests passing. Ready for Phase 2 HITL gate review."
Swarm worker status update
openclaw system event --mode now --text "Worker task-42 complete: implemented D1 schema migration. 12 tests added."
More from joelhooks/swarm-tools
release
|
7always-on-guidance
|
6swarm-coordination
|
6system-design
Principles for building reusable coding systems. Use when designing modules, APIs, CLIs, or any code meant to be used by others. Based on "A Philosophy of Software Design" by John Ousterhout. Covers deep modules, complexity management, and design red flags.
3