OpenClaw Agent Relay Plugin Fixes Telegram Delivery in Multi-Agent Setups

A developer has released openclaw-agent-relay, a plugin that solves the problem where sessions_send in multi-agent setups fails to deliver responses to Telegram users.
The Problem with sessions_send
When using sessions_send to pass messages between agents, the target agent's response goes to channel=webchat (an internal channel) instead of reaching the user on Telegram. This happens because sessions_send preserves session and conversation history but doesn't properly handle delivery. The issue is documented in closed ticket #13374 marked as NOT_PLANNED. Additionally, it can corrupt the session's delivery context, flipping it from telegram to webchat permanently (referenced in #44153 and #31671).
Existing Workarounds and Their Limitations
Developers have tried two main approaches:
- Explicit message tool usage: The target agent calls message with channel: "telegram" and explicit to/threadId, then returns ANNOUNCE_SKIP. This is documented in #47971 and #28603. Problems include needing to embed delivery instructions in every sessions_send payload and agents forgetting to use the workaround, especially in longer sessions.
- Relying on announce step: Using timeout=0 to get an announce step where the agent can write a user-facing response. However, models tend to return ANNOUNCE_SKIP instead of writing content (#43295). Announce delivery also has issues: drops threadId for Telegram topics (#47971, #45878), silently fails with multi-channel setups (#47524), and ANNOUNCE_SKIP text can leak to users (#45084).
The Solution: openclaw-agent-relay
The plugin bypasses both sessions_send and announce entirely. It uses the same gateway WebSocket RPC that subagents use internally (callGateway({ method: "agent" })) to trigger an agent turn in the existing session with deliver: true. The agent responds normally without special instructions, ANNOUNCE_SKIP, or message tool workarounds, and the response goes directly to Telegram.
How to Use It
Two methods are available:
- Tool wake_agent: Any agent can call it to wake another agent in their session:
wake_agent({ sessionKey: "agent:my-agent:telegram:direct:123456", message: "Hey, remind the client about the contract" }) - HTTP POST /notify: For cron jobs, scripts, or external triggers:
curl -X POST http://127.0.0.1:18790/notify \ -H "Authorization: Bearer your-secret-token" \ -H "Content-Type: application/json" \ -d '{"sessionKey":"agent:my-agent:telegram:direct:123456", "message":"Reminder: client asked for the contract"}'
Installation
Install with: openclaw plugins install openclaw-agent-relay
The developer notes that implementing the gateway RPC authentication involved working with Ed25519 device identity, challenge-response protocols, and undocumented protocol quirks.
📖 Read the full source: r/openclaw
👀 See Also

Portable Mind Format (PMF): Provider-Agnostic Agent Specification with 15 Open-Source Agents
The Portable Mind Format (PMF) is a JSON-based specification for defining AI agent identities that can run across multiple models and providers, including Claude, GPT-4, Gemini, DeepSeek, and local models via Ollama. It includes 15 MIT-licensed production agents and converters for Claude Code, Cursor, GitHub Copilot, and Gemini CLI.

Open Design: Open-Source Alternative to Claude Design Runs on Your Local CLI Agents
Open Design is a local-first, BYOK design engine that turns 11 coding-agent CLIs (Claude Code, Codex, Cursor, Gemini CLI, etc.) into a design workflow with 72 brand-grade design systems and 31 composable skills, exporting HTML/PDF/PPTX/MP4.

Self-Hosted Contextual Bandit in Rust: Syntra & Lycan for Adaptive Decision Systems
Two open-source projects: Lycan (graph execution language with strategy nodes and learned weights) and Syntra (Docker/API appliance serving compiled Lycan capsules). Found data pipeline bugs before runtime bugs when dogfooding on an AI stock-debate product.

Kanban CLI: A Local-First, Agent-First Task Manager for the Terminal
Kanban CLI is a Rust-based terminal tool that provides structured task tracking with full git integration, designed for AI agent-driven workflows.