trigger key in pylon.yaml. Pylon supports two trigger types: webhook for HTTP-driven events and cron for scheduled jobs.
Webhook triggers
A webhook trigger listens for an HTTP POST to a specific path on Pylon’s built-in server. When a request arrives at that path, Pylon loads the matching pylon and starts a job. Pylon listens on port8080 by default. You can change this in ~/.pylon/config.yaml under server.port.
Webhook fields
| Field | Required | Description |
|---|---|---|
type | Yes | Must be webhook. |
path | Yes | The URL path Pylon listens on, e.g. /sentry-triage. Must start with /. |
secret | No | A shared secret used to validate the request signature. Supports ${ENV_VAR} references. |
signature_header | No | The HTTP header containing the HMAC signature, e.g. Sentry-Hook-Signature or X-Hub-Signature-256. Required when secret is set. |
public_url | No | Overrides the global server.public_url for this pylon’s displayed webhook URL. |
HMAC validation
When you setsecret and signature_header, Pylon validates the HMAC signature on every incoming request and rejects requests that fail validation.
~/.pylon/.env and reference them with ${VAR_NAME} — Pylon loads this file on startup.
Exposing the webhook publicly
Pylon’s server runs locally. To receive webhooks from external services (GitHub, Sentry, etc.), you need to expose it to the internet.- Reverse proxy
- ngrok (development)
Point your reverse proxy (nginx, Caddy, Traefik) at Pylon’s local port and set
public_url in your global config or per-pylon:Cron triggers
A cron trigger runs a pylon on a schedule, using standard cron expression syntax.Cron fields
| Field | Required | Description |
|---|---|---|
type | Yes | Must be cron. |
cron | Yes | A standard 5-field cron expression. |
Cron expression format
Cron pylons run the agent directly and post results to the configured channel. There is no approval flow for cron triggers —
approval: true has no effect when type: cron.Cron example
Coming soon
The following trigger types are planned but not yet available:- Chat command — trigger a pylon from a Telegram or Slack message
- API call — trigger a pylon via a direct API request with auth