Overview
hermes webhook creates, lists, and removes dynamic webhook subscriptions for event-driven agent activation. Each subscription exposes a webhook route; when an external service POSTs to it, Hermes validates the request and either runs the agent with a rendered prompt or delivers the message directly to a chat platform.
hermes webhook <subscribe|add|list|ls|remove|rm|test>
add, ls, and rm are aliases for subscribe, list, and remove.
Subcommands
subscribe (alias add) — Create a webhook subscription
hermes webhook subscribe <name> [options]
<name> is the route name, used in the URL: /webhooks/<name>.
| Option | Description |
|---|---|
--prompt PROMPT |
Prompt template with {dot.notation} payload references. |
--events EVENTS |
Comma-separated event types to accept. |
--description DESCRIPTION |
What this subscription does. |
--skills SKILLS |
Comma-separated skill names to load for the agent run. |
--deliver DELIVER |
Delivery target: log, telegram, discord, slack, etc. |
--deliver-chat-id ID |
Target chat ID for cross-platform delivery. |
--secret SECRET |
HMAC secret (auto-generated if omitted). |
--deliver-only |
Skip the agent — deliver the rendered prompt directly as the message. Zero LLM cost. Requires --deliver to be a real target (not log). |
--script SCRIPT |
Filter/transform script under ~/.hermes/scripts/. The route payload is passed as JSON on stdin; empty stdout, [SILENT], or a nonzero exit code ignores the webhook. |
list (alias ls) — List all subscriptions
hermes webhook list
remove (alias rm) — Remove a subscription
hermes webhook remove <name>
test — Send a test POST
hermes webhook test <name>
hermes webhook test <name> --payload '{"issue": {"number": 42}}'
Sends a test POST to the subscription’s webhook route. --payload replaces the default test payload with custom JSON.
Examples
# Subscribe to GitHub issues and deliver rendered summaries to Telegram
hermes webhook subscribe github-issues \
--events "issues" \
--prompt "New issue #{issue.number}: {issue.title}" \
--deliver telegram \
--deliver-chat-id "-1001234567890" \
--description "Triage new GitHub issues"
# Pure notification with zero LLM cost
hermes webhook subscribe critical-alerts \
--prompt "🚨 {service} critical: {metric}" \
--deliver telegram --deliver-chat-id "-1001234567890" --deliver-only
# Lifecycle
hermes webhook list # Review all subscriptions
hermes webhook test github-issues # Test before relying on it
hermes webhook rm github-issues # Clean up unused subscriptions
Tips
subscribe/add,list/ls, andremove/rmare interchangeable aliases.- A unique HMAC secret is auto-generated for each subscription unless you pass
--secret. - Use
--deliver-onlyfor pure notifications: no LLM cost, no agent run. - Use
--scriptto filter or transform payloads before they reach the agent. - Always test a subscription with
hermes webhook testbefore relying on it.