Skip to content

Telegram

Usejarvis can be controlled through a Telegram bot. Send messages, receive responses, approve actions, and get notifications from your phone or Telegram desktop app.

  1. Open Telegram and search for @BotFather
  2. Send /newbot
  3. Choose a name (e.g., “My Usejarvis”)
  4. Choose a username (must end in bot, e.g., my_jarvis_bot)
  5. BotFather responds with a bot token, copy it

Usejarvis restricts access to a list of allowed Telegram user IDs. To find yours:

  1. Search for @userinfobot on Telegram
  2. Send any message; it replies with your user ID (a number like 123456789)

Open the dashboard and go to SettingsChannelsTelegram. Paste the bot token, add your user ID to allowed users, enable the channel, and save. Changes apply immediately: the adapter reconnects in place, no daemon restart needed.

For reference, the setting shape is:

channels:
telegram:
enabled: true
bot_token: "7123456789:AAH..."
allowed_users: [123456789] # Your Telegram user ID

Channel settings live in the settings database. A channels: block in config.yaml is imported once at boot for backward compatibility, but the database is the source of truth; only hand-edits to the file require jarvis restart.

Important: if allowed_users is empty, anyone who finds your bot can talk to it. Always set at least your own ID.

Message your bot once. Usejarvis remembers the last inbound chat per channel and uses it as the recipient for notifications and approvals, so nothing is pushed to Telegram until you have messaged the bot at least once.

Send any message to your bot. It goes through the same agent pipeline as the dashboard chat (in request/response mode rather than streaming):

You: What's on my calendar today?
Usejarvis: You have 3 events today...
You: Go to github.com/vierisid/jarvis and check the latest issues
Usejarvis: I've navigated to the repo. Here are the latest issues...

Send a Telegram voice message and Usejarvis transcribes it via your configured STT provider, then responds as text. If no STT provider is configured, the bot replies telling you to set one up in Settings.

All approval requests are pushed to your connected channels, so you can approve or deny without opening the dashboard. The message is plain text:

[APPROVAL NEEDED]
Action: send_email (send_email)
Agent: main
Reason: Sending the weekly report
Reply with:
approve a1b2c3d4
deny a1b2c3d4

Reply with approve <id> or deny <id> using the short ID from the message. The agent continues based on your response.

Usejarvis pushes to Telegram:

  • All approval requests
  • Urgent proactive notifications, prefixed [URGENT]
  • Heartbeat messages
  • Workflow results when a flow’s notifier targets Telegram
  • Awareness suggestions, as a fallback when no dashboard client is connected

Delivery is retried up to 4 times with backoff (respecting Telegram’s rate-limit hints). If delivery ultimately fails, you get a dashboard notification instead.

Add multiple user IDs to allowed_users to let others interact with your Usejarvis instance. Messages from users not in the list are ignored (and logged in the daemon log).

  • Message length: Telegram limits messages to 4096 characters. Long responses are split across multiple messages.
  • Text only: the Telegram adapter sends text. Screenshots and images are not pushed to Telegram.
  • Group chats: the bot replies to any message it receives from an allowed user, including in groups. Telegram’s privacy mode (on by default in BotFather) means it only sees commands and @mentions in groups; turn privacy off in BotFather if you want it to see every message.