Digests · in-app approvals · Bot API toolkit

Your group moves fast. Read it, and act on it.

Smithers posts a daily digest of your Telegram group, and lets you approve a workflow's risky step from the chat with a tap. Both run on durable, replayable workflows, on a secure Bot API toolkit.

Approve from the chat Durable workflows behind it Verified inbound

Why this exists

The decision you needed was 300 messages ago.

Active Telegram groups move faster than anyone can follow. The one message that mattered, a decision, a blocker, a release call, gets buried under memes and side-threads by the time you open the app.

How it works

Add the bot. It does the reading.

1

Point it at a chat

Give the bot a token and a chat id. It collects updates on a schedule into its own store, no export dance.

2

A workflow summarizes

A durable Smithers workflow reads the window of messages, writes a structured digest, and can be replayed or tuned.

3

It posts back

The digest lands in the chat on a cron. Miss a day and the history is there, kept out of the raw feed.

Human in the loop

Approve the risky step from your phone.

When a workflow hits an approval gate, Smithers posts it to the chat with Approve and Reject buttons. Tap one and the run continues. It is a durable, replayable step, so nothing is lost if the process restarts while it waits for you.

one component

Drop it into any workflow

A single component turns an approval into inline buttons and resolves it from the press. The decision matches the built-in approval shape, so the rest of your workflow does not change.

<TelegramApproval
  chatId={chatId}
  request={{ title: "Deploy to prod?" }}
  output={outputs.decision}
/>

Need a richer decision? Add a Mini App button to open a web page inside Telegram. Its signed initData is verified on your server before anything is trusted.

Build your own

A Bot API toolkit, not a black box.

The digest runs on @smithers-orchestrator/telegram, a serverless-friendly client you can use directly. Send messages from a run, or receive commands securely.

outbound

Send a run to a chat

Pipe a run summary, a status, or an alert straight into Telegram from any workflow step.

const tg = createTelegramClient({ token })
tg.sendMessage({ chatId, text: summary })
inbound

Receive commands, safely

Verify the webhook secret and check the chat against an allowlist before anything runs. Spoofed updates get dropped.

if (!verifyTelegramWebhookSecret(req, secret)) return 401
isTelegramChatAllowed(chatId, policy)

What you get

Serverless-ready, and honest about it.

◷ daily digest

Catch-up on a cron

A structured summary of your group, posted on schedule, with the raw thread kept for reference.

⤺ durable

Replayable behind the scenes

The digest is a real Smithers workflow. Rerun it, adjust the window, or replay a bad day.

🔒 verified inbound

Secret + allowlist

Webhook secret verification and a chat allowlist ship in the box. Only chats you name get through.

✅ in-app approvals

Approve or reject in a tap

Gate a workflow step behind an inline button, or a Mini App with verified initData for a richer decision. The run waits durably until you answer.

Give your group a daily digest.

Deploy the bot in one command, or install the toolkit and wire your own runs to Telegram.