wget
wget can POST with --post-data. Headers are added with --header.
Examples
# normal success
wget --quiet --output-document=- \
--header="Authorization: Bearer $NTFY_ACCESS_TOKEN" \
--header="Title: Refactored authentication middleware in rumilo" \
--header="Tags: hammer_and_wrench" \
--post-data="Finished refactoring the auth middleware in rumilo. Session validation is cleaner now and all tests pass." \
"https://ntfy.sh/$NTFY_TOPIC_LLM"
# success with a relevant click URL
wget --quiet --output-document=- \
--header="Authorization: Bearer $NTFY_ACCESS_TOKEN" \
--header="Title: Updated AUR package for kagi-ken" \
--header="Tags: package" \
--header="Click: https://aur.archlinux.org/packages/kagi-ken" \
--post-data="Bumped the kagi-ken AUR package to v0.4.2 and updated the checksums." \
"https://ntfy.sh/$NTFY_TOPIC_LLM"
# something went wrong
wget --quiet --output-document=- \
--header="Authorization: Bearer $NTFY_ACCESS_TOKEN" \
--header="Title: Build failed in pi-mono — disk full" \
--header="Tags: rotating_light" \
--header="Priority: 4" \
--post-data="Ran into a full disk on the build server while compiling pi-mono. /var/log looks like it needs rotation. The build is blocked until there's space." \
"https://ntfy.sh/$NTFY_TOPIC_LLM"
# urgent failure
wget --quiet --output-document=- \
--header="Authorization: Bearer $NTFY_ACCESS_TOKEN" \
--header="Title: Production database unreachable" \
--header="Tags: sos" \
--header="Priority: 5" \
--post-data="The primary Postgres instance stopped responding during a migration. Rolled back what we could, but the app is down." \
"https://ntfy.sh/$NTFY_TOPIC_LLM"