3.4 KiB
3.4 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| Webhook ingress for wake and isolated agent runs |
|
Webhooks
Gateway can expose a small HTTP webhook endpoint for external triggers.
Enable
{
hooks: {
enabled: true,
token: "shared-secret",
path: "/hooks"
}
}
Notes:
hooks.tokenis required whenhooks.enabled=true.hooks.pathdefaults to/hooks.
Auth
Every request must include the hook token:
Authorization: Bearer <token>- or
x-clawdbot-token: <token> - or
?token=<token>
Endpoints
POST /hooks/wake
Payload:
{ "text": "System line", "mode": "now" }
textrequired (string)modeoptional:now|next-heartbeat(defaultnow)
Effect:
- Enqueues a system event for the main session
- If
mode=now, triggers an immediate heartbeat
POST /hooks/agent
Payload:
{
"message": "Run this",
"name": "Email",
"sessionKey": "hook:email:msg-123",
"wakeMode": "now",
"deliver": false,
"provider": "last",
"to": "+15551234567",
"thinking": "low",
"timeoutSeconds": 120
}
messagerequired (string)nameoptional (used in the summary prefix)sessionKeyoptional (default randomhook:<uuid>)wakeModeoptional:now|next-heartbeat(defaultnow)deliveroptional (defaultfalse)provideroptional:last|whatsapp|telegramtooptional (provider-specific target)thinkingoptional (override)timeoutSecondsoptional
Effect:
- Runs an isolated agent turn (own session key)
- Always posts a summary into the main session
- If
wakeMode=now, triggers an immediate heartbeat
POST /hooks/<name> (mapped)
Custom hook names are resolved via hooks.mappings (see configuration). A mapping can
turn arbitrary payloads into wake or agent actions, with optional templates or
code transforms.
Mapping options (summary):
hooks.presets: ["gmail"]enables the built-in Gmail mapping.hooks.mappingslets you definematch,action, and templates in config.hooks.transformsDir+transform.moduleloads a JS/TS module for custom logic.- Use
match.sourceto keep a generic ingest endpoint (payload-driven routing). - TS transforms require a TS loader (e.g.
bun) or precompiled.jsat runtime. clawdbot hooks gmail setupwriteshooks.gmailconfig forclawdbot hooks gmail run.
Responses
200for/hooks/wake202for/hooks/agent(async run started)401on auth failure400on invalid payload413on oversized payloads
Examples
curl -X POST http://127.0.0.1:18789/hooks/wake \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"text":"New email received","mode":"now"}'
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'x-clawdbot-token: SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","wakeMode":"next-heartbeat"}'
curl -X POST http://127.0.0.1:18789/hooks/gmail \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"source":"gmail","messages":[{"from":"Ada","subject":"Hello","snippet":"Hi"}]}'
Security
- Keep hook endpoints behind loopback, tailnet, or trusted reverse proxy.
- Use a dedicated hook token; do not reuse gateway auth tokens.
- Avoid including sensitive raw payloads in webhook logs.