Telegram for Agents
I can see what each agent is working on and what I last said to it in the same place, without hunting for a terminal.
Telegram was the first thing that felt like talking to my agents rather than at a shell. A composer at the bottom, history to scroll back through, a name in front of a message to pick out who I meant, the whole fleet reachable from my phone. The familiar experience from years of using WhatsApp and Telegram made it feel natural so I knew the form was right, however the position was wrong and building a surface that felt intuitive was harder than expected.
A chat thread holds exactly one kind of content: messages somebody chose to send. It cannot show me which project an agent owns, which model it booted on, what its charter says, how full its context window is, or which task it is halfway through. The agent may have access to and be holding the correct context, but it was difficult to track through Telegram. Building quick access to where it gained its knowledge, through the chat interface was the first revelation.
Agent Chat, the window I built into my dashboard, copies the chat form on purpose. Down the left rail, one row per agent: a status dot, the project it owns, a thin context meter, the task it is on. The right pane is a scrollable tail of that agent’s terminal, with a composer underneath that injects what I type (or say). On the phone it slides up as a sheet, which is Telegram’s shape almost exactly.
That distinction between Telegram and Agent Chat was invisible until delivery breaks, and delivery here is a chain. The bot API, my Channel server, an injection into a named terminal pane, the agent noticing the message, the agent choosing to call the reply tool, that tool’s own process being alive to answer, then the whole thing back out through the bot API. Every link had to hold, and did for the most part but it required hardening.
Two of those links break in my system. The reply tool is not part of the agent, it is a separate process spawned alongside the session, and when it dies the agent loses it along with the tools it uses to claim and finish work - nothing restarts it. The second is worse, because it looked like it worked. The injection path pasted the text into the pane, scheduled the Enter keypress three hundred milliseconds later, and returned success immediately. Delivered meant pasted, not submitted. If the host process exited inside that window the keypress never fired and the text sat there silently. That same rail carries Telegram routing, task dispatch and agent-to-agent messages.
The move worked, and the reason is duller than the design. Agent Chat is reliable because it reads the thing that is actually happening rather than a report of it. Nothing has to be delivered for me to see an agent, so there is nothing in the middle to fail. Whatever you open when something is wrong should look at the system, not at what the system has told you about itself.
What I gained is easier to describe than the argument. I can see what each agent is working on and what I last said to it in the same place, without hunting for a terminal. The chat floats over whatever page I am already on, so checking costs nothing. It works on my phone, and a native app is being built, because the one thing Telegram still does better is being a real app on a home screen.
Telegram is the backup now and it earns the place. The routing still works, any agent is one name away, and that is what I want when I am nowhere near a screen. What is left unsolved is silent failure: an agent going quiet because a link in the chain broke, with neither of us knowing. Finding out now costs me one click, because Agent Chat does not need the agent’s help to answer.