Made a Telegram bot to steer my coding agents, then outgrew it
My coding agents kept stopping to ask me things while I was away from the desk. A Telegram bot fixed that for a while, and then it showed me what I actually wanted.
If you use a coding agent such as Claude Code, you know the moment. You step away from your desk, and two minutes later the agent stops to ask whether it may run a command. Then it waits, patiently, for as long as it takes you to come back.
In April I built a bot so I could answer those questions from my phone, through Telegram. It worked, and the idea behind it kept growing for the rest of the year.
A bot that types for you
The bot is called tebis. It’s a small Rust program that runs on your computer and connects a private Telegram bot to the terminals where your agents run. You send it a message, and it types your text into the terminal. It reads back what the agent printed and sends you the useful part. You can send a voice note, which it turns into text on your own machine, and it can answer with a voice too.
The terminals live inside tmux, a program that keeps terminal sessions running after you close the window. That lets the bot type into them and read them at any time. Claude Code and Copilot CLI can also run a small script when they finish something, called a hook. Tebis uses those to send a summary as soon as an agent is done, so you don’t have to ask.
Some small touches made it pleasant to use. Control commands, such as switching to another session, answer with a thumbs-up reaction and no message, so the chat stays readable.
Where a chat runs out
A chat shows you messages, and an agent lives on a screen. Tebis had to decide what part of the screen was worth sending, from text that was drawn for a human looking at a terminal. A menu of choices, a progress spinner and a diff all become plain text, or get lost. Hooks help, but only for the agents that have them, and only for the moments they report.
A chat also has one person in it. I couldn’t hand a running session to a friend and say “have a look at this”. And tebis runs on one computer, while my agents were spreading across several.
What I wanted was the real terminal, on whatever device was in my hand, with other people allowed in.
Bringing the terminals instead of the messages
That’s the app I started over the summer, called Kodosi. It keeps the terminals of all your computers in one window. Each one is a real shell running on its own computer, with your agent in it. You can open it from your Mac, a Linux or Windows machine, or your iPhone. When you share a terminal with a friend, they get full control of it, agent included.
Each terminal also shows what its agent is doing: working, waiting for you, done or failed. Claude Code reports that itself now, so the app doesn’t have to guess from the screen, which was the weakest part of the bot. When an agent starts waiting while the app is in the background, you get a notification.
People and agents can also share a room, with a conversation and a list of tasks. A message that names a terminal goes straight to the agent in it, typed as one line that says who wrote it. It is never typed while the agent is waiting for a person’s answer, or while a person is typing there. Agents run through their own command-line tools, with their own settings, which Kodosi never edits.
The parts that were hard
Putting a terminal from one computer on the screen of another sounds simple, and it isn’t. The screen has to keep up on a bad connection. Pasting a picture has to work, which I wrote about in a post of its own. And everything has to stay private.
The terminals travel through a server, because two computers on different networks usually can’t reach each other directly. That server only passes encrypted bytes along. The keys stay on your devices, so the server can’t read your terminals or type into them. A friend you remove loses access to everything that follows.
What the bot was for
Tebis is still on GitHub, and it’s still a small, simple way to answer an agent from a phone. Kodosi grew from the same wish, to be with my agents wherever I am, and to bring other people along.