Telegram
kaja telegram runs a bot that uses the same personas, tools, and models as the terminal chat — including the shell-command approve/decline flow, shown as an inline keyboard.
Setup
-
Create a bot and get a token. In Telegram, message @BotFather, send
/newbot, and follow the prompts (name + a unique username ending inbot). BotFather replies with an API token like123456789:AAH.... -
Get your numeric Telegram user id. Message @userinfobot (or @RawDataBot) — it replies with your numeric id. That’s what goes in
allowedUserIds, not your@username. -
Add a
[telegram]section to~/.config/kaja/services.toml(who’s allowed in):[telegram] allowedUserIds = [YOUR_NUMERIC_ID]…and one to
~/.config/kaja/secrets.toml(the token itself):[telegram] botToken = "123456789:AAH..." -
Run it:
kaja telegramThe bot preflights with
getMe()— an invalid token fails immediately with a one-line error, no stack trace. On success it logs “ready” and starts long-polling.
Then open a DM with your bot and send anything. Messages from accounts not in allowedUserIds are silently ignored — it must be non-empty, there’s no “open to everyone” mode.
Next: