`platforms.webhook.port: 9100` (and `routes`, `secret`, api_server `key`/ `cors_origins`, any adapter setting) was silently dropped unless nested under `extra:` — PlatformConfig.from_dict only read a fixed set of typed fields. Two partial bridges (a per-platform port/host/secret table in the loader and an api_server-only block) covered a few keys and had to be extended for every new one. from_dict now promotes every non-typed top-level key into `extra`, with an explicit `extra:` value winning on a clash and typed fields never leaking into `extra` on a to_dict/from_dict roundtrip. Both hand-written bridges are removed. Same direction as PRs #10208/#10211/#10453 (rainow's #10206 diagnosis) and #20506; those targeted the pre-loader layout. Fixes #10206
28 KiB
28 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.