Skip to content

feat: incoming webhooks with agent polling#55

Merged
matthiastjong merged 4 commits intomainfrom
feature/incoming-webhooks
Apr 11, 2026
Merged

feat: incoming webhooks with agent polling#55
matthiastjong merged 4 commits intomainfrom
feature/incoming-webhooks

Conversation

@matthiastjong
Copy link
Copy Markdown
Owner

Summary

  • Add incoming webhook support: external services (Linear, GitHub, etc.) POST to Shellgate, agents poll and process events
  • Webhook endpoints linked to tokens (agents), not targets — each agent gets its own webhook URLs
  • HMAC signature verification for webhook authenticity
  • Poll/ACK pattern: agents poll for pending events, process them, ACK when done
  • Handling instructions: plain text instructions stored per endpoint, returned in poll response so agents know what to do
  • Dashboard UI: webhook list page, detail page with event viewer, handling instructions textarea
  • Agent integration: SKILL.md with webhook docs, install scripts with cron polling setup for OpenClaw/Hermes
  • Events expire after 7 days, cleanup via admin API

Key routes

Route Auth Purpose
POST /webhooks/incoming/[slug] Public (signature optional) Receive webhooks from external services
GET /webhooks/poll Bearer token Agent polls for pending events
POST /webhooks/ack Bearer token Agent acknowledges processed events
POST /webhooks/endpoints/[id]/instructions Bearer token Agent saves handling instructions

Test plan

  • 22 test files, 142 tests passing
  • 0 type errors (svelte-check)
  • E2E verified: webhook receive → poll → ACK → delivered status
  • HMAC signature verification (valid, invalid, missing)
  • Cascade deletes (token → endpoints → events)
  • OpenClaw install script with cron polling tested on real hardware

🤖 Generated with Claude Code

Matthias 't Jong and others added 3 commits April 10, 2026 13:06
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@matthiastjong matthiastjong force-pushed the feature/incoming-webhooks branch from 0fc1841 to 409e511 Compare April 11, 2026 13:19
Add incoming webhook support so external services (Linear, GitHub, etc.)
can push events to Shellgate, which agents poll and process automatically.

Key features:
- Webhook endpoints linked to tokens (agents), with unique public URLs
- HMAC-SHA256 signature verification for webhook authenticity
- Poll/ACK pattern for reliable event delivery (7-day expiry)
- Handling instructions: plain text per endpoint, returned in poll response
- Dashboard UI: list page, detail page with event viewer and instructions
- Agent integration: SKILL.md webhook docs, install scripts with cron setup
- OpenClaw and Hermes support with interactive polling configuration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@matthiastjong matthiastjong force-pushed the feature/incoming-webhooks branch from 409e511 to 269a160 Compare April 11, 2026 13:41
@matthiastjong matthiastjong merged commit b44f9e9 into main Apr 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant