Webhookd: A Simple Webhook Server

Webhookd is a lightweight, straightforward webhook server designed to launch shell scripts based on incoming HTTP requests. It provides a simple yet powerful way to automate tasks, trigger deployments, and integrate various services by exposing your scripts to the web securely.

Demo

The Problem Solved

Many modern development workflows rely on events happening in external systems (like a git push to GitHub, a new ticket in a project management tool, or a monitoring alert). Webhookd acts as a bridge, listening for these HTTP-based events (webhooks) and executing predefined scripts on your server in response. It eliminates the need for complex polling mechanisms or custom application logic for simple task automation.

Key Features

  • Script-based Webhooks: Define webhooks by simply placing executable scripts in a directory. The file and directory structure directly maps to the webhook URL.
  • Flexible Parameter Passing: Pass data to your scripts via URL query parameters, HTTP headers, and the request body (application/json, x-www-form-urlencoded, etc.).
  • Real-time Log Streaming: Get immediate feedback from your scripts. Webhookd can stream script output in real-time using Server-Sent Events (SSE) or chunked transfer encoding.
  • Secure by Design:
  • Authentication: Protect your endpoints with standard HTTP Basic Authentication.
  • Request Verification: Ensure message integrity and authenticity using HTTP Signatures or Ed25519 signatures (compatible with services like Discord).
  • TLS Support: Secure communications with TLS, including automatic certificate generation via ACME (Let's Encrypt).
  • Notifications: Send script results to external systems like Email or any HTTP endpoint (compatible with Slack, Discord, and Mattermost).
  • Lightweight & Portable: Built with Go, webhookd is a single, cross-platform binary with no external dependencies, making it ideal for containerized environments.
  • Docker-Friendly: Official Docker images are available, including a distrib version with useful tools like Git and Docker CLI for more advanced use cases.