Skip to content

Telegram

Per-field reference for the Settings → Telegram panel. This page assumes you already have a bot token and have the bot up and running — if not, start with the Telegram Bot setup guide, which walks through BotFather, finding your Telegram user ID, and approving yourself.

URL: /settings?tab=telegram

Where these values are stored

Unlike most settings (which live in /data/config/settings.json), all fields on this page are stored in /data/config/telegram.json. Each section below shows the exact key and snippet.

Enabled

Master toggle for the Telegram integration. When off, the bot is not started on container boot and no incoming messages are processed. Toggling this in the UI takes effect immediately — no restart needed.

/data/config/telegram.json
json
{ "enabled": true }

Bot token

The secret token from @BotFather. The Settings UI renders it as a password field, but the value is stored in plain text in telegram.json — protect that file (and your /data directory) accordingly. It is not kept in Secrets.

To rotate: paste a new token here and save. The old bot stops working on the next request; the new one becomes active immediately.

If you don't have a token yet, see step 1 of the setup guide.

/data/config/telegram.json
json
{ "botToken": "123456:ABC..." }

Batching delay

When a human types a multi-line message on Telegram, each line often arrives as a separate update. Axiom waits batchingDelayMs after each arriving message before flushing them all to the agent — this way "Hi / how are you / btw" becomes one prompt instead of three.

Default: 2500 (2.5 s). Range: 010000. Set to 0 to disable batching (each message triggers an agent turn immediately).

/data/config/telegram.json
json
{ "batchingDelayMs": 2500 }

Telegram users

The user directory. Every Telegram account that has ever /started the bot shows up here with one of three statuses:

BadgeMeaning
pendingFirst contact — the bot replied "waiting for approval" and is ignoring this user until you approve.
approvedMessages are processed as normal.
rejectedExplicitly blocked. The bot silently drops all incoming messages from this account.

Each row shows avatar, display name, @username, numeric Telegram ID, and the linked Axiom user (if any).

The list itself is not stored in any config file — it lives in the Axiom database (telegram_users table), managed via this panel or the /api/telegram-users endpoints.

Approve

Primary action on a pending row. Clicking it flips status to approved and lets the user talk to the agent.

Row menu

Additional actions under the menu:

  • Approve / Reject — toggle status.
  • Assign user — link this Telegram account to an Axiom user (or leave unassigned). The assignment determines which memory/users/<username>.md profile the agent loads for this conversation, and which user "owns" any tasks created from Telegram.
  • Delete — remove the Telegram user entry entirely. They re-appear as pending if they message the bot again.

Refresh

Reloads the list from the backend — useful after someone joins while you're looking at the page.

See also

Released under the MIT License.