Send messages, system events, and agent notifications through the openclaw CLI. Use when an agent needs to notify a user (Telegram, Slack, Discord), trigger another agent, broadcast updates, send system events, or coordinate agent-to-agent communication via swarmmail. Covers all three messaging layers - external channels, agent invocation, and internal swarmmail.
Sends messages and notifications across external channels, triggers agent actions, and coordinates internal agent communication.
npx claudepluginhub joelhooks/swarm-toolsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Three messaging layers, from user-facing to agent-internal.
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.
Send to Telegram, Slack, Discord, WhatsApp, Signal, and 12+ other channels.
# 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
Same message to multiple targets:
openclaw message broadcast --channel telegram --targets @joelhooks 123456789 -m "System maintenance in 5 min"
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
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
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"
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.
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
| 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 |
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
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"
openclaw system event --mode now --text "Completed Phase 1 encryption. All tests passing. Ready for Phase 2 HITL gate review."
openclaw system event --mode now --text "Worker task-42 complete: implemented D1 schema migration. 12 tests added."
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.