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.
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 }}brew install jtprogru/tap/notiflowexport NOTIFLOW_BOT_TOKEN=123456:AA...notiflow send --chat-id -1001234567890 --message "deploy finished"./long-build.sh | notiflow send -c -1001234567890 --stdinUpgrading from v1? The inputs are unchanged except for one removal — see the migration guide.