Skip to content

notiflow

Tell Telegram when something finished. From a workflow, or from your shell.

notiflow — Telegram notifier for CI and the terminal: a GitHub Action and a CLI in one Rust binary

One binary, two faces

The GitHub Action and the notiflow CLI are the same Rust binary. A template that renders in your workflow renders the same way in your terminal.

No runtime to install

A single static executable. No bash, no curl, no jq, no Python. Works on Linux, macOS and Windows runners alike.

Safe by construction

Placeholder values are escaped for the parse mode, messages are truncated on markup boundaries, and the bot token is scrubbed from every stream notiflow writes.

Honest about failure

Retries with jitter, Retry-After honoured, 4xx never retried, and a documented exit code for every way a run can go wrong.

- uses: jtprogru/notiflow@v2
if: always()
with:
bot_token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
chat_id: ${{ secrets.TELEGRAM_CHAT_ID }}
status: ${{ job.status }}
Terminal window
brew install jtprogru/tap/notiflow
export NOTIFLOW_BOT_TOKEN=123456:AA...
notiflow send --chat-id -1001234567890 --message "deploy finished"
./long-build.sh | notiflow send -c -1001234567890 --stdin

Upgrading from v1? The inputs are unchanged except for one removal — see the migration guide.