id = "ntfy"
name = "ntfy"
homepage = "https://ntfy.sh"
description = "ntfy lets you send push notifications to your phone or desktop via scripts from any computer, using simple HTTP PUT or POST requests."
executables = ["ntfy"]
[dotfiles]
paths = []
secret = [
"~/.config/ntfy/client.yml",
"~/Library/Application Support/ntfy/client.yml",
"%APPDATA%/ntfy/client.yml",
]
[commands]
format = 1
label = "ntfy"
description = "Send a push notification to a topic. Subscribing, actions, attachments, authentication and templates are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["publish"]
label = "Publish a message"
description = "Publish a message to a topic (aliases: pub, send, trigger)."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.ntfy.sh/publish/"
revision = "2026-10-27"
evidence = """ntfy publish mytopic "Backup successful"
ntfy publish \
--title "Unauthorized access detected" \
--tags warning,skull \
--priority urgent \
--click="https://home.nest.com/" \
--markdown \
--icon="https://styles.redditmedia.com/t5_32uhe/styles/communityIcon_xnt6chtnr2j21.png" \
--at="tomorrow, 10am" \
--in="5m" \
ntfy publish --in="2h" mytopic/break-reminder "Take a break!\""""
[[commands.subcommand.field]]
id = "title"
label = "Title"
type = "string"
option = ["--title"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "priority"
label = "Priority"
type = "string"
option = ["--priority"]
suggestions = [{ value = "min", label = "min" }, { value = "low", label = "low" }, { value = "default", label = "default" }, { value = "high", label = "high" }, { value = "urgent", label = "urgent" }]
sources = ["docs"]
[[commands.subcommand.field]]
id = "tags"
label = "Tags"
description = "Comma-separated tags or emoji short codes."
type = "string"
option = ["--tags"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "click"
label = "Click URL"
type = "url"
option = ["--click"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "icon"
label = "Icon URL"
type = "url"
option = ["--icon"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "markdown"
label = "Markdown message"
type = "boolean"
option = ["--markdown"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "at"
label = "Deliver at"
description = "Example: tomorrow, 10am"
type = "string"
option = ["--at"]
value_style = "equals"
sources = ["docs"]
[[commands.subcommand.field]]
id = "delay"
label = "Deliver in"
description = "Example: 5m, 2h"
type = "string"
option = ["--in"]
value_style = "equals"
sources = ["docs"]
[[commands.subcommand.field]]
id = "topic"
label = "Topic"
description = "Topic name, or a full topic URL."
type = "string"
position = 0
sources = ["docs"]
[[commands.subcommand.field]]
id = "message"
label = "Message"
type = "string"
position = 1
sources = ["docs"]
[[commands.subcommand.task]]
id = "send"
label = "Send message"
fields = ["topic", "message", "title", "priority", "tags"]
required = ["topic", "message"]
[[commands.subcommand.task]]
id = "later"
label = "Send later"
fields = ["topic", "message", "delay"]
required = ["topic", "message", "delay"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["topic", "message", "title", "priority", "tags"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["click", "icon", "markdown", "at", "delay"]