Skip to main content
Action Llama agents can be triggered by webhooks in addition to (or instead of) cron schedules. Seven providers are supported: GitHub, Sentry, Linear, Mintlify, Slack, Discord, and X (Twitter).

Supported Providers

See each provider’s page for filter fields, setup instructions, and example configurations.

Defining Webhook Sources

Webhook sources are defined once in the project’s config.toml. Each source has a name, a provider type, and an optional credential for signature validation:

Agent Webhook Triggers

Agents reference a webhook source by name and add filters in their config.toml:
Each [[webhooks]] entry is a trigger. The source field (referencing a name from the project’s config.toml) is required. All filter fields are optional — omit all of them to trigger on everything from that source. An agent must have at least one of schedule or webhooks (or both).

How Webhooks Work at Runtime

  1. The gateway receives a webhook POST request at /webhooks/<type> (e.g. /webhooks/github)
  2. It verifies the payload signature using secrets loaded from the credential instances defined in config.toml webhook sources
  3. It parses the event into a WebhookContext (source, event, action, repo, etc.)
  4. It matches the context against each agent’s webhook triggers
  5. Matching agents are triggered with the webhook context injected into their prompt

Hybrid Agents

Agents can have both schedule and webhooks. Scheduled runs poll for work proactively; webhook runs respond to events immediately.

Troubleshooting

Webhooks not firing

  1. Check the webhook URL — GitHub/Sentry/Linear must be able to reach your gateway. For local development, use a tunnel (e.g. ngrok, Cloudflare Tunnel).
  2. Check the webhook secret — if using HMAC validation, the secret in al creds must match the one configured in the external service.
  3. Check event filters — verify the events, actions, and other filter fields in the agent’s config.toml match the incoming event.

Webhook events being dropped

If runners are busy, events are queued (up to workQueueSize, default 100). If the queue is full, old events are dropped. Check queue depth with al stat. To handle more concurrent events, increase scale in the agent’s config.toml:

Discord Webhooks

Discord support uses the Interactions Endpoint (HTTP-based), which covers slash commands, message components, modals, and autocomplete. This requires a discord_bot credential with your application’s public key for Ed25519 signature verification.

Setup

  1. In the Discord Developer Portal, create or select your application
  2. Under General Information, copy your Application ID and Public Key
  3. Under Bot, copy or reset your Bot Token
  4. Add these to your credentials: al creds add discord_bot
  5. Set your Interactions Endpoint URL to https://your-server:8080/webhooks/discord
  6. Discord will send a PING verification request — Action Llama responds automatically after validating the signature

Example Configuration