The protocol
Experimental and Claude Code's. Here is what that means in practice.
How it works
hotline is a stdio MCP server (official github.com/modelcontextprotocol/go-sdk) that additionally declares Claude Code's experimental claude/channel capability and, with a token configured, claude/channel/permission.
- Inbound messages reach Claude as
notifications/claude/channelwith a<channel source="telegram" …>block. - Permission prompts flow the other way over the same connection; see the permission relay.
The flag
Channels are experimental and loaded by MCP server name:
claude --dangerously-load-development-channels server:hotline
Read the flag name. It says dangerously and development, and both words are accurate. This is an unshipped surface of Claude Code that you are opting into.
What experimental means here
The protocol is Claude Code's, and Claude Code owes it nothing yet. Any Claude Code release can rename the flag, change the notification shape, or drop the channel surface entirely, and hotline will be broken until it catches up. Pin your Claude Code version if that risk bothers you, and expect to update hotline alongside Claude Code.
It also makes hotline Claude Code specific today: no other harness speaks claude/channel. If other harnesses adopt the channel protocol, or hotline grows adapters for theirs, that changes.
What stays ordinary
Everything except the channel capability is plain MCP. The four tools (reply, react, edit_message, download_attachment) are ordinary MCP tools over stdio, and the providers behind them don't care what harness is driving. The experimental surface is deliberately thin: how inbound messages wake the session, and how permission prompts leave it.
Roadmap
Discord shipped as the second provider, Signal as the third. Matrix is under consideration. No dates.
back to the quickstart →