Follow-up to the salvaged mirror commit. - Opt-in (`mirror_to_session: true`, or `hermes webhook subscribe --mirror-to-session`), default off like cron's `mirror_delivery`. The mirrored text lands with user authority in the target chat, and on `deliver_only` routes it is the raw rendered payload, so a route author has to ask for it. Only a real boolean `true` opts in (a YAML string "false" no longer does). - The mirror runs inside the routed profile's scope, so a `/p/<profile>/` delivery writes into THAT profile's state.db. A Telegram DM chat_id is the user's id on every bot; an unscoped mirror landed in the default profile's DM with the same person (live-probed). - Tests trimmed to two invariants against a real state.db: an opted-in delivery lands in the routed profile's chat session and not the default profile's; a route without the opt-in (including `mirror_to_session: "false"`) never touches the target transcript. - Docs: webhooks guide section "Replying to a delivery" (default, profile scope, trust note), CLI reference row, bundled hermes-agent skill reference.
35 KiB
35 KiB
sidebar_position, title, description
| sidebar_position | title | description |
|---|---|---|
| 13 | Webhooks | Receive events from GitHub, GitLab, and other services to trigger Hermes agent runs |
Webhooks
Receive events from external services (GitHub, GitLab, JIRA, Stripe, etc.) and trigger Hermes agent runs automatically. The webhook adapter runs an HTTP server that accepts POST requests, validates HMAC signatures, transforms payloads into agent prompts, and routes responses back to the source or to another configured platform.
The agent processes the event and can respond by posting comments on PRs, sending messages to Telegram/Discord, or logging the result.